Bugs and Inconveniences


 

This is a list of known bugs and inconveniences. New information will be added here as it arises.

Bugs

  • Repetition assignments are not fully implemented. Note that it is always possible to obtain the same effect by writing a for statement that assigns the elements in the repetition one-by-one.
  • The type checks associated with lower bounds on virtuals are incomplete, so it is possible to write a program that violates the lower bound and still not get an error message during type analysis.
  • Adding arguments or return values to virtuals is bad style and should give a warning; the semantics of such additions is well-defined but confusing and rarely useful, so it should not pass without notice.
  • gbeta does not handle the situation gracefully if a SLOT declaration and a SLOT application do not match the actual syntactic category, i.e. the following program will be accepted even though it is not well-formed (there is a syntax category mismatch for "p"):

    -- betaenv:descriptor --
    (# p: <<SLOT p:descriptor>> #)
    
    -- p:staticitem --
    @(# do 'Hello again, world!'->stdio #)

    When executing the gbeta syntax version of that program, the problem is detected but the error handling is not graceful:

    -- betaenv:descriptor:gbeta --
    (# p: <<SLOT p:descriptor>> #)
    
    -- p:staticitem:gbeta --
    @(# do 'Hello again, world!'->stdio #)

    leads to:

    
    ...
    @66
              (StaticItem=25:1@64
               (Merge=30:1@54
                (ObjectDescriptor=4:3[0][0][0][0][0][0][0][0]@2##[11]@4##[5]@52
                 (LongMainPart=8:2@8
                  (Attributes=10:1@6##[15])@50
                  (ActionPart=33:3@10##[34]@44
                   (DoPart=38:1[0][0]@42
                    (Imperatives=40:1@40
                     (AssignmentEvaluation=62:2@20
                      (TextConst=115:1@12^Hello again, world!)@36
                      (ObjectDenotation=66:1[0][0]@34
                       (Merge=30:1@28
                        (NameApl=113:1[0][0][0][0]@22^stdio))))))@48##[36])))))
    **** Exception processing
    Found AST node which is neither a SLOT nor as expected by the grammar
    

  • At some point, gbeta will be able to mix program elements written in BETA syntax (*.bet files) with elements written in the slightly richer gbeta syntax (*.gb files); for now, keep them strictly separate.

Inconveniences

  • gbeta will not discover if one or more of the source code files for the currently executing program changes on disk; quit and restart to refresh the information inside gbeta about the program
  • In Emacs, starting gbeta on a new program as long as another gbeta program is running will not work. The Emacs framework will try to persuade gbeta to switch to running the new program, but gbeta doesn't understand this, and the result is that the new program you are trying to start is ignored by gbeta. Quit the first session, or run another Emacs.

How to Report a Bug

Send an email to me describing the problem. Please provide me with a small program and and a series of actions which causes the problem to occur. Also mention the precise release of gbeta you are using, and tell me if it is a customized version in any way.

 


Signed by: eernst@cs.auc.dk. Last Modified: 3-Jul-01