[Nice-commit] Nice/src/bossa/link Alternative.java,1.54,1.55
Brought to you by:
bonniot
From: Daniel B. <bo...@us...> - 2004-10-13 14:29:31
|
Update of /cvsroot/nice/Nice/src/bossa/link In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22810/src/bossa/link Modified Files: Alternative.java Log Message: When generalizing an imported method, requalify its default patterns. Index: Alternative.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/link/Alternative.java,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** Alternative.java 12 Oct 2004 23:35:49 -0000 1.54 --- Alternative.java 13 Oct 2004 14:27:49 -0000 1.55 *************** *** 28,31 **** --- 28,32 ---- import nice.tools.code.Gen; + import nice.tools.typing.Types; import java.util.*; *************** *** 236,243 **** { Alternative a = (Alternative) i.next(); ! a.add(fullName); } } public static Stack sortedAlternatives(MethodDeclaration m) { --- 237,274 ---- { Alternative a = (Alternative) i.next(); ! a.addDefaultPatterns(from).add(fullName); } } + Alternative addDefaultPatterns(MethodDeclaration def) + { + Monotype[] parameters = Types.parameters(def.getType()); + Pattern[] newPatterns = null; + + for (int i = 0; i < patterns.length; i++) + if (patterns[i].getTC() == null) + { + if (newPatterns == null) + { + newPatterns = new Pattern[patterns.length]; + System.arraycopy(patterns, 0, newPatterns, 0, i); + } + newPatterns[i] = bossa.syntax.dispatch.createPattern + (patterns[i].getName(), + Types.concreteConstructor(parameters[i]), + Types.isSure(parameters[i])); + } + + if (newPatterns == null) + return this; + else + return new Alternative(methodName, newPatterns) { + public Expression methodExp() + { + return Alternative.this.methodExp(); + } + }; + } + public static Stack sortedAlternatives(MethodDeclaration m) { |