This is for the current simplified version of Leo. When the main function is
executed, it returns a value. According to this grammar, the output (i.e.
`.out`) file contains a single literal, which describes the output value,
preceded by an `[output]` title. This may be extended in the future.
Since we only allow four kinds of input section titles, corresponding to the
public/private/constant/const characterization of function inputs, it seems
beneficial to put this into the grammar, where it is easily captured.
Note that the previous version of the rule, which uses `identifier`, is not
quite right, because, for example, `public` is not an identiifer (it is a
keyword). So the rule would have to be modified anyways.
Also revise expectations. The changes look extensive in the diff, but only the
error codes have changed (at least, that's the expectation, and this has been
visually checked in some places of the diff).
As discussed, these are no longer in the grammar. If and when we need them, we
will re-add them.
This also removes some extra code that gives a specific error when mut is
used. However, that is in fact another bug, because `mut` is a valid identifier
in the current grammar, and thus this extra code unjustly rejects code that uses
`mut` as an identifier.
Adjust some tests and expectations.
Instead of commenting out this failing test, it seem better to add to a new file
for failing tests. If and when we change Leo to accept field literals in hex, we
can move the test from the Fail file to the Pass fail.
This also helps the ACL2 tester, which is currently not handling comment-out
tests of this form.
This was apparently disabled, but it did not start with a block comment.
This commit fixes it to start with a block comment as required.
This commit also makes it a failing test, which is appropriate because in the
current version of Leo we do not allow untyped literals (i.e. lone numerals as
expressions), and it is thus a good negative test for the current version of
Leo. When we extend Leo to allow untyped literals, we can simply flip the
expectation of this test from Fail to Pass.
Follow the grammar rule. The ordering operators are not associative.
Split previous tests into succeeding and failing ones.
Refresh expectations of old test files.
Add expectations of new test files.