[Nice-commit] Nice/src/bossa/parser Parser.jj,1.239,1.240 Loader.java,1.25,1.26
Brought to you by:
bonniot
From: <bo...@us...> - 2004-02-20 13:21:47
|
Update of /cvsroot/nice/Nice/src/bossa/parser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10112/src/bossa/parser Modified Files: Parser.jj Loader.java Log Message: Report a specific error message when type parameters are specified in a constructor call. Index: Parser.jj =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/parser/Parser.jj,v retrieving revision 1.239 retrieving revision 1.240 diff -C2 -d -r1.239 -r1.240 *** Parser.jj 19 Feb 2004 08:15:34 -0000 1.239 --- Parser.jj 20 Feb 2004 13:10:30 -0000 1.240 *************** *** 53,56 **** --- 53,63 ---- return new IdentExp(new LocatedString(name, loc)); } + + private void parseException(String message) throws ParseException + { + ParseException ex = new ParseException(message); + ex.currentToken = getToken(0); + throw ex; + } } PARSER_END(Parser) *************** *** 1675,1678 **** --- 1682,1688 ---- ( LOOKAHEAD(2) "[]" { furtherDimensions++; } )* { return new NewArrayExp(classe, args, furtherDimensions); } + | + "<" + { parseException("Type parameters are not needed in constructor calls"); } ) } Index: Loader.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/parser/Loader.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** Loader.java 18 Jan 2004 01:14:30 -0000 1.25 --- Loader.java 20 Feb 2004 13:10:30 -0000 1.26 *************** *** 40,49 **** } catch(ParseException e){ ! if(e.currentToken!=null) ! User.error(Location.make(e.currentToken.next), ! removeLocation(e.getMessage())); ! else ! User.error(e.getMessage()); ! return null; } } --- 40,44 ---- } catch(ParseException e){ ! throw reportError(e); } } *************** *** 63,71 **** } catch(ParseException e){ ! if(e.currentToken!=null) ! User.error(Location.make(e.currentToken.next), ! removeLocation(e.getMessage())); ! else ! User.error(e.getMessage()); } catch(TokenMgrError e) { --- 58,62 ---- } catch(ParseException e){ ! throw reportError(e); } catch(TokenMgrError e) { *************** *** 81,84 **** --- 72,98 ---- } + private static Error reportError(ParseException e) + { + if(e.currentToken!=null) + { + Token token = e.currentToken; + + /* For errors generated by JavaCC, currentToken is the last + successfull token, so we want to point to the next one. + For errors handled by us for specific reporting, currentToken + is the offending token (which was parsed), and there is no next. + */ + if (token.next != null) + token = token.next; + + User.error(Location.make(token), removeLocation(e.getMessage())); + } + else + User.error(e.getMessage()); + + // We never get here anyway. + return null; + } + private static Chronometer chrono = Chronometer.make("Parsing"); |