[Nice-commit] Nice/src/bossa/syntax Arguments.java,1.26,1.27 Constructor.java,1.14,1.15 FormalParame
Brought to you by:
bonniot
From: Arjan B. <ar...@us...> - 2004-11-06 19:40:04
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27610/F:/nice/src/bossa/syntax Modified Files: Arguments.java Constructor.java FormalParameters.java overloadedsymbol.nice tools.nice Log Message: Avoid misleading error messages with named arguments. Index: tools.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/tools.nice,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** tools.nice 6 Nov 2004 00:28:17 -0000 1.57 --- tools.nice 6 Nov 2004 19:39:50 -0000 1.58 *************** *** 193,197 **** List<VarSymbol> findJavaMethods(?gnu.bytecode.ClassType, String) = native List JavaClasses.findJavaMethods(gnu.bytecode.ClassType,java.lang.String); TypeParameters TypeParameters(List<Monotype>) = native new bossa.syntax.TypeParameters(List); ! String explainNoMatch(Arguments, List<VarSymbol>) = native String Arguments.explainNoMatch(List); Map<VarSymbol,mlsub.typing.Polytype> types(Arguments) = native Arguments.types; <T> String map(String, String, String, T[]) = native String bossa.util.Util.map(String, String, String, Object[]); --- 193,197 ---- List<VarSymbol> findJavaMethods(?gnu.bytecode.ClassType, String) = native List JavaClasses.findJavaMethods(gnu.bytecode.ClassType,java.lang.String); TypeParameters TypeParameters(List<Monotype>) = native new bossa.syntax.TypeParameters(List); ! ?String explainNoMatch(Arguments, List<VarSymbol>) = native String Arguments.explainNoMatch(List); Map<VarSymbol,mlsub.typing.Polytype> types(Arguments) = native Arguments.types; <T> String map(String, String, String, T[]) = native String bossa.util.Util.map(String, String, String, Object[]); Index: FormalParameters.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/FormalParameters.java,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** FormalParameters.java 13 Oct 2004 20:42:21 -0000 1.42 --- FormalParameters.java 6 Nov 2004 19:39:50 -0000 1.43 *************** *** 501,524 **** } ! public Iterator iterator() { if (parameters != null) ! return Arrays.asList(parameters).iterator(); ! return new ArrayList().iterator(); ! } ! ! public List getNamedParameters() ! { ! LinkedList res = new LinkedList(); ! for(int i = 0; i < size; i++) ! { ! Parameter param = parameters[i]; ! if (param instanceof NamedParameter) ! { ! res.add(parameters[i]); ! } ! } ! return res; } --- 501,510 ---- } ! public List asList() { if (parameters != null) ! return Arrays.asList(parameters); ! return new ArrayList(); } Index: Constructor.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/Constructor.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Constructor.java 5 Nov 2004 14:57:57 -0000 1.14 --- Constructor.java 6 Nov 2004 19:39:50 -0000 1.15 *************** *** 108,112 **** res = new StringBuffer(); List missing = arguments.missingArgs(parameters); ! Iterator fieldsToList; if (arguments.size() == 0) --- 108,112 ---- res = new StringBuffer(); List missing = arguments.missingArgs(parameters); ! List fieldsToList; if (arguments.size() == 0) *************** *** 116,125 **** res.append(syntaxExample()) .append("Class ").append(name).append(" has the following fields:\n"); ! fieldsToList = parameters.iterator(); } else if (missing.size() > 0) { res.append("The following fields require initial values:\n"); ! fieldsToList = missing.iterator(); } else --- 116,125 ---- res.append(syntaxExample()) .append("Class ").append(name).append(" has the following fields:\n"); ! fieldsToList = parameters.asList(); } else if (missing.size() > 0) { res.append("The following fields require initial values:\n"); ! fieldsToList = missing; } else *************** *** 129,138 **** .append(".\n") .append("The constructor accepts the following arguments:\n" ); ! fieldsToList = parameters.iterator(); } ! while (fieldsToList.hasNext()) { res.append(" ") ! .append(fieldsToList.next()) .append("\n"); } --- 129,139 ---- .append(".\n") .append("The constructor accepts the following arguments:\n" ); ! fieldsToList = parameters.asList(); } ! Iterator fieldsIt = fieldsToList.iterator(); ! while (fieldsIt.hasNext()) { res.append(" ") ! .append(fieldsIt.next()) .append("\n"); } Index: Arguments.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/Arguments.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Arguments.java 13 Oct 2004 20:42:21 -0000 1.26 --- Arguments.java 6 Nov 2004 19:39:50 -0000 1.27 *************** *** 241,248 **** if (!argnames.isEmpty()) return " has an argument named " + argnames.get(0); - - return " has compatible named arguments"; } ! return " has " + arguments.length + " arguments"; } --- 241,247 ---- if (!argnames.isEmpty()) return " has an argument named " + argnames.get(0); } ! //fall back to default error message ! return null; } Index: overloadedsymbol.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/overloadedsymbol.nice,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** overloadedsymbol.nice 13 Oct 2004 23:22:22 -0000 1.5 --- overloadedsymbol.nice 6 Nov 2004 19:39:50 -0000 1.6 *************** *** 103,107 **** } ! User.error(this, this.noMatchError(removed, arguments)); } --- 103,107 ---- } ! User.error(this, this.noMatchByNameError(removed, arguments)); } *************** *** 149,160 **** } ! if (removed.size() == 1) ! User.error(this, "Arguments " + arguments.printTypes() + ! " do not fit:\n" + removed[0]); ! else ! User.error(this, "No possible call for " + ident + ! ".\nArguments: " + arguments.printTypes() + ! "\nPossibilities:\n" + ! Util.map("", "\n", "", removed.toArray())); } --- 149,153 ---- } ! User.error(this, this.noMatchError(removed, arguments)); } *************** *** 380,384 **** /** No method in removed matched these arguments. */ ! private String noMatchError(List<VarSymbol> removed, Arguments arguments) { if (removed.size() == 0) --- 373,377 ---- /** No method in removed matched these arguments. */ ! private String noMatchByNameError(List<VarSymbol> removed, Arguments arguments) { if (removed.size() == 0) *************** *** 396,400 **** } ! return "No method with name " + ident + arguments.explainNoMatch(removed); } --- 389,409 ---- } ! let reason = arguments.explainNoMatch(removed); ! if (reason != null) ! return "No method with name " + ident + reason; ! ! return this.noMatchError(removed, arguments); ! } ! ! private String noMatchError(List<VarSymbol> removed, Arguments arguments) ! { ! if (removed.size() == 1) ! return "Arguments " + arguments.printTypes() + ! " do not fit:\n" + removed[0]; ! else ! return "No possible call for " + ident + ! ".\nArguments: " + arguments.printTypes() + ! "\nPossibilities:\n" + ! Util.map("", "\n", "", removed.toArray()); } |