[Nice-commit] Nice/src/mlsub/typing Typing.java,1.35,1.36
Brought to you by:
bonniot
From: Daniel B. <bo...@us...> - 2004-03-17 00:46:10
|
Update of /cvsroot/nice/Nice/src/mlsub/typing In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26138/src/mlsub/typing Modified Files: Typing.java Log Message: Do not allow overriding involving specialization of type parameters, as this is unsafe since dispatch does not consider type parameters. Index: Typing.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/Typing.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** Typing.java 28 Feb 2004 14:23:43 -0000 1.35 --- Typing.java 17 Mar 2004 00:36:46 -0000 1.36 *************** *** 238,241 **** --- 238,261 ---- } + /** Assert that the vars are matching the base head constructors. */ + public static void leqHead(Monotype[] vars, Monotype[] base) + throws TypingEx + { + for (int i = 0; i < vars.length; i++) + { + Monotype var = vars[i]; + nice.tools.typing.Types.setMarkedKind(var); + nice.tools.typing.Types.setMarkedKind(base[i]); + + TypeConstructor baseMarker = base[i].head(); + if (baseMarker != null) + leq(var.head(), baseMarker); + + TypeConstructor tag = nice.tools.typing.Types.constructor(base[i]); + if (tag != null) + leq(nice.tools.typing.Types.equivalent(vars[i]), tag); + } + } + /**************************************************************** * Testing Polytype <= Polytype |