[Nice-commit] Nice/src/nice/tools/typing Types.java,1.12,1.13
Brought to you by:
bonniot
|
From: Daniel B. <bo...@us...> - 2005-03-08 16:03:39
|
Update of /cvsroot/nice/Nice/src/nice/tools/typing In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10143/src/nice/tools/typing Modified Files: Types.java Log Message: Handle methods that are partly specialized by existing imported methods. Index: Types.java =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/typing/Types.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Types.java 12 Jan 2005 18:50:35 -0000 1.12 --- Types.java 8 Mar 2005 16:03:26 -0000 1.13 *************** *** 307,310 **** --- 307,345 ---- /** + @returns true if functional types t1 and t2 have a partly common domain. + that is, there exists some types that belong to both domains. + */ + public static boolean domainsIntersect(Polytype t1, Polytype t2) + { + Typing.enter(); + + try { + + try { + + Constraint.enter(t1.getConstraint()); + Constraint.enter(t2.getConstraint()); + + // There exists argument types ... + Monotype[] args = MonotypeVar.news(parameters(t2).length); + Typing.introduce(args); + + // ... that can be used for both methods ... + Typing.leq(args, parameters(t1)); + Typing.leq(args, parameters(t2)); + } + finally { + Typing.leave(); + } + } + catch (TypingEx ex) { + return false; + } + + // OK, there is an intersection + return true; + } + + /** @returns true if the spec type specializes type parameters of the original type (which can not be checked at runtime during dispatch, and therefore |