Changeset 2142

Show
Ignore:
Timestamp:
06/30/08 16:35:12 (2 months ago)
Author:
sukyoungryu
Message:

[parser] Added better error messages for case/extremum/typecase expressions that use 'do' instead of 'of'.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ProjectFortress/src/com/sun/fortress/parser/DelimitedExpr.rats

    r2061 r2142  
    115115                              Option.some(a1), compare, a3, _else); 
    116116     } 
     117   / <ErrorProduction1> 
     118     case w Expr (w (Encloser / Op))? w do w CaseClauses (w CaseElse)? w end 
     119     { yyValue = syntaxError(createSpan(yyStart,yyCount), 
     120                             "In a case expression, 'do' is used instead of 'of'."); 
     121     } 
    117122   / case w most w a1:(Encloser / Op) w of w a2:CaseClauses w end 
    118123     { Option<OpRef> compare = Option.some(ExprFactory.makeOpRef(NodeFactory.makeOpInfix(a1))); 
     
    121126                              Option.<Block>none()); 
    122127     } 
     128   / <ErrorProduction2> 
     129     case w most w (Encloser / Op) w do w CaseClauses w end 
     130     { yyValue = syntaxError(createSpan(yyStart,yyCount), 
     131                             "In an extremum expression, 'do' is used instead of 'of'."); 
     132     } 
    123133   / typecase w a1:TypecaseBindings w of w a2:TypecaseClauses a3:(br CaseElse)? 
    124        w end 
     134     w end 
    125135     { Option<Block> caseElse = Option.wrap(a3); 
    126136       yyValue = new Typecase(createSpan(yyStart,yyCount), false, a1.getA(), 
    127137                              a1.getB(), a2, caseElse); 
     138     } 
     139   / <ErrorProduction3> 
     140     typecase w TypecaseBindings w do w TypecaseClauses (br CaseElse)? w end 
     141     { yyValue = syntaxError(createSpan(yyStart,yyCount), 
     142                             "In a typecase expression, 'do' is used instead of 'of'."); 
    128143     } 
    129144   / <TRY> try w a1:BlockElems a2:(w Catch)? a3:(w forbid w TraitTypes)?