[Nice-commit] Nice/src/bossa/syntax OverloadedSymbolExp.java,1.64,1.65
Brought to you by:
bonniot
From: <bo...@us...> - 2004-01-18 20:38:50
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv19382/src/bossa/syntax Modified Files: OverloadedSymbolExp.java Log Message: Support implicit 'this' for functional fields. Index: OverloadedSymbolExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/OverloadedSymbolExp.java,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** OverloadedSymbolExp.java 18 Jan 2004 18:33:41 -0000 1.64 --- OverloadedSymbolExp.java 18 Jan 2004 20:38:40 -0000 1.65 *************** *** 48,51 **** --- 48,58 ---- } + private OverloadedSymbolExp(List symbols, LocatedString ident, + boolean noImplicitThis) + { + this(symbols, ident); + this.noImplicitThis = noImplicitThis; + } + OverloadedSymbolExp(VarSymbol symbol, LocatedString ident) { *************** *** 90,93 **** --- 97,103 ---- LinkedList removed = new LinkedList(); + // Useful in case of failure, to try adding an implicit 'this'. + List fieldAccesses = filterFieldAccesses(); + for(Iterator i = symbols.iterator(); i.hasNext();) { *************** *** 119,123 **** if (symbols.size() == 0) ! User.error(this, noMatchError(removed, arguments)); // SECOND PASS: check argument types --- 129,142 ---- if (symbols.size() == 0) ! { ! if (! noImplicitThis) ! { ! Expression res = givePriorityToFields(fieldAccesses); ! if (res != null) ! return res; ! } ! ! User.error(this, noMatchError(removed, arguments)); ! } // SECOND PASS: check argument types *************** *** 156,169 **** if (symbols.size() == 0) ! if (removed.size() == 1) ! User.error(this, ! "Arguments " + arguments.printTypes() + ! " do not fit: \n" + removed.get(0)); ! else ! User.error(this, ! "No possible call for " + ident + ! ".\nArguments: " + arguments.printTypes() + ! "\nPossibilities:\n" + ! Util.map("", "\n", "", removed)); removeNonMinimal(symbols, arguments); --- 175,197 ---- if (symbols.size() == 0) ! { ! if (! noImplicitThis) ! { ! Expression res = givePriorityToFields(fieldAccesses); ! if (res != null) ! return res; ! } ! ! if (removed.size() == 1) ! User.error(this, ! "Arguments " + arguments.printTypes() + ! " do not fit: \n" + removed.get(0)); ! else ! User.error(this, ! "No possible call for " + ident + ! ".\nArguments: " + arguments.printTypes() + ! "\nPossibilities:\n" + ! Util.map("", "\n", "", removed)); ! } removeNonMinimal(symbols, arguments); *************** *** 308,312 **** try { CallExp res = new CallExp ! (new OverloadedSymbolExp(fieldAccesses, ident), //Arguments.noArguments()); new Arguments(new Arguments.Argument[]{new Arguments.Argument(Node.thisExp)})); --- 336,340 ---- try { CallExp res = new CallExp ! (new OverloadedSymbolExp(fieldAccesses, ident, true), //Arguments.noArguments()); new Arguments(new Arguments.Argument[]{new Arguments.Argument(Node.thisExp)})); *************** *** 532,535 **** --- 560,566 ---- LocatedString ident; + /** Do not try to add an implicit 'this' access. */ + private boolean noImplicitThis; + /**************************************************************** * Error messages |