expressions: Improve "type mismatch" error messages from expression parser.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 6 Jun 2010 19:41:08 +0000 (12:41 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 6 Jun 2010 19:45:44 +0000 (12:45 -0700)
Before this commit, type mismatches invoking functions in expressions would
yield confusing error messages due to missing type names, e.g.:
    Type mismatch invoking MISSING(number) as missing(string).
This commit fills in the missing type names:
    Type mismatch invoking MISSING(number) as missing().

An upcoming commit will start checking error messages as part of the tests
for expressions, which should ensure that the problem does not recur.

src/language/expressions/parse.incpl

index 4e7243c16086b8c8efb0d1e6c6ce2f36c13c4ee2..7f9af1b92f26f2dd6b4fbd6e9d6852208ce1349e 100644 (file)
@@ -12,9 +12,9 @@ sub generate_output {
        next if $type->{ROLE} eq 'fixed';
 
        my ($human_name) = $type->{HUMAN_NAME};
-       $human_name = "" if !defined $human_name;
+       $human_name = $type->{NAME} if !defined $human_name;
        
-       my (@members) = ("\"$type->{NAME}\"", "\"\"",
+       my (@members) = ("\"$type->{NAME}\"", "\"$human_name\"",
                         0, "OP_$type->{NAME}", 0, "{}", 0, 0);
        print "{", join (', ', @members), "},\n";
     }