nice-commit Mailing List for The Nice Programming Language (Page 87)
Brought to you by:
bonniot
You can subscribe to this list here.
2003 |
Jan
|
Feb
(60) |
Mar
(125) |
Apr
(183) |
May
(140) |
Jun
(227) |
Jul
(141) |
Aug
(181) |
Sep
(75) |
Oct
(89) |
Nov
(187) |
Dec
(162) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(69) |
Feb
(197) |
Mar
(98) |
Apr
(26) |
May
(10) |
Jun
(85) |
Jul
(88) |
Aug
(79) |
Sep
(80) |
Oct
(81) |
Nov
(53) |
Dec
(109) |
2005 |
Jan
(68) |
Feb
(77) |
Mar
(232) |
Apr
(79) |
May
(37) |
Jun
(37) |
Jul
(3) |
Aug
(18) |
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
(10) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
(9) |
2007 |
Jan
(2) |
Feb
(8) |
Mar
(2) |
Apr
(5) |
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
(17) |
Dec
(6) |
2008 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <bo...@us...> - 2003-08-26 16:08:04
|
Update of /cvsroot/nice/Nice/src/bossa/link In directory sc8-pr-cvs1:/tmp/cvs-serv13534/src/bossa/link Modified Files: Dispatch.java Log Message: The deprecated 'main(args) { ... }' syntax for the main function is not supported anymore. Index: Dispatch.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/link/Dispatch.java,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** Dispatch.java 16 Jul 2003 11:37:22 -0000 1.59 --- Dispatch.java 26 Aug 2003 16:07:58 -0000 1.60 *************** *** 82,86 **** Stack sortedAlternatives = Alternative.sortedAlternatives(m); ! if (!(m.isMain() || trivialTestOK(sortedAlternatives))) test(m, sortedAlternatives, false); --- 82,86 ---- Stack sortedAlternatives = Alternative.sortedAlternatives(m); ! if (! trivialTestOK(sortedAlternatives)) test(m, sortedAlternatives, false); |
From: <bo...@us...> - 2003-08-26 16:08:04
|
Update of /cvsroot/nice/Nice/stdlib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv13534/stdlib/nice/lang Modified Files: prelude.nice Log Message: The deprecated 'main(args) { ... }' syntax for the main function is not supported anymore. Index: prelude.nice =================================================================== RCS file: /cvsroot/nice/Nice/stdlib/nice/lang/prelude.nice,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** prelude.nice 21 Jul 2003 17:24:14 -0000 1.32 --- prelude.nice 26 Aug 2003 16:07:58 -0000 1.33 *************** *** 120,127 **** class Ref<T> { T value; } - - /**************************************************************** - * Main - ****************************************************************/ - - void main(Array<String>); --- 120,121 ---- |
From: <bo...@us...> - 2003-08-26 16:08:03
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv13534/src/bossa/syntax Modified Files: MethodDeclaration.java MethodBodyDefinition.java Log Message: The deprecated 'main(args) { ... }' syntax for the main function is not supported anymore. Index: MethodDeclaration.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/MethodDeclaration.java,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** MethodDeclaration.java 25 Jul 2003 16:13:10 -0000 1.44 --- MethodDeclaration.java 26 Aug 2003 16:07:58 -0000 1.45 *************** *** 269,280 **** } - /** - @return true if this method is the 'main' of the program - */ - public final boolean isMain() - { - return arity == 1 && "main".equals(name.content); - } - String explainWhyMatchFails(Arguments arguments) { --- 269,272 ---- Index: MethodBodyDefinition.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/MethodBodyDefinition.java,v retrieving revision 1.138 retrieving revision 1.139 diff -C2 -d -r1.138 -r1.139 *** MethodBodyDefinition.java 8 Aug 2003 11:12:53 -0000 1.138 --- MethodBodyDefinition.java 26 Aug 2003 16:07:58 -0000 1.139 *************** *** 153,159 **** alternative = new bossa.link.SourceAlternative(this); - if (d.isMain()) - User.warning(this, "This syntax for the main function is deprecated.\nPlease use instead the following:\n\nvoid main(String[] args)\n{\n ...\n}"); - parameters = buildSymbols(this.formals, declaration.getArgTypes()); scope.addSymbols(parameters); --- 153,156 ---- |
From: <bo...@us...> - 2003-08-26 14:21:43
|
Update of /cvsroot/nice/Nice/testsuite/compiler/classes In directory sc8-pr-cvs1:/tmp/cvs-serv26745/testsuite/compiler/classes Modified Files: field-override.testsuite Log Message: Make sure that field overrides are taken into account when importing a compiled package. Index: field-override.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/classes/field-override.testsuite,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** field-override.testsuite 6 Aug 2003 22:40:31 -0000 1.4 --- field-override.testsuite 26 Aug 2003 14:21:37 -0000 1.5 *************** *** 191,192 **** --- 191,208 ---- override byte b = 2; } + + /// PASS + /// package a + /// Toplevel + abstract class A {} + class B extends A {} + + abstract class AA { + final A val; + } + class BB extends AA { + override B val; + } + + /// package b import a + B b = new BB(val: new B()).val; |
From: <bo...@us...> - 2003-08-26 14:21:43
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv26745/src/bossa/syntax Modified Files: NiceClass.java Log Message: Make sure that field overrides are taken into account when importing a compiled package. Index: NiceClass.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** NiceClass.java 24 Aug 2003 18:07:28 -0000 1.58 --- NiceClass.java 26 Aug 2003 14:21:37 -0000 1.59 *************** *** 498,502 **** ( " {\n" ! + Util.map("",";\n",";\n",fields) + "}\n\n" ); --- 498,503 ---- ( " {\n" ! + Util.map("", ";\n", ";\n", fields) ! + Util.map("", ";\n", ";\n", overrides) + "}\n\n" ); |
From: <bo...@us...> - 2003-08-26 02:22:40
|
Update of /cvsroot/nice/Nice/stdlib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv27909/stdlib/nice/lang Modified Files: array.nice Log Message: Make use of the possibility for a default value to refer to previous params. Index: array.nice =================================================================== RCS file: /cvsroot/nice/Nice/stdlib/nice/lang/array.nice,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** array.nice 24 Aug 2003 20:47:57 -0000 1.26 --- array.nice 25 Aug 2003 17:27:10 -0000 1.27 *************** *** 79,89 **** } ! <Any T> T[] slice(T[] array, int from = 0, int to = -1) ! { ! if (to == -1) ! to = array.length - 1; ! ! return fill(new T[to - from + 1], int i => array[i + from]); ! } // Define collection methods --- 79,84 ---- } ! <T> T[] slice(T[] array, int from = 0, int to = array.length - 1) = ! fill(new T[to - from + 1], int i => array[i + from]); // Define collection methods |
From: <bo...@us...> - 2003-08-26 00:45:26
|
Update of /cvsroot/nice/Nice/debian In directory sc8-pr-cvs1:/tmp/cvs-serv5555/debian Modified Files: changelog Log Message: Correctly wrap byte local variables during incrementation. Index: changelog =================================================================== RCS file: /cvsroot/nice/Nice/debian/changelog,v retrieving revision 1.199 retrieving revision 1.200 diff -C2 -d -r1.199 -r1.200 *** changelog 25 Aug 2003 18:03:30 -0000 1.199 --- changelog 26 Aug 2003 00:45:13 -0000 1.200 *************** *** 3,6 **** --- 3,7 ---- * Classes that implement java.lang.Cloneable now automatically support the clone method. + * Bugfixes (incrementation of byte local variables, ...) -- |
From: <bo...@us...> - 2003-08-26 00:45:26
|
Update of /cvsroot/nice/Nice/src/gnu/expr In directory sc8-pr-cvs1:/tmp/cvs-serv5555/src/gnu/expr Modified Files: IncrementExp.java Log Message: Correctly wrap byte local variables during incrementation. Index: IncrementExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/IncrementExp.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IncrementExp.java 30 May 2002 13:45:25 -0000 1.4 --- IncrementExp.java 26 Aug 2003 00:45:13 -0000 1.5 *************** *** 6,10 **** * Pre/post incrementation of a local variable. * ! * @author Daniel Bonniot (d.b...@ma...) */ --- 6,10 ---- * Pre/post incrementation of a local variable. * ! * @author Daniel Bonniot (bo...@us...) */ *************** *** 45,49 **** code.emitLoad(var); ! if (var.getType().promote() == Type.int_type) code.emitInc(var, increment); else --- 45,49 ---- code.emitLoad(var); ! if (var.getType() == Type.int_type) code.emitInc(var, increment); else |
From: <bo...@us...> - 2003-08-26 00:45:26
|
Update of /cvsroot/nice/Nice/regtest/coreJava In directory sc8-pr-cvs1:/tmp/cvs-serv5555/regtest/coreJava Modified Files: coreJava.code Log Message: Correctly wrap byte local variables during incrementation. Index: coreJava.code =================================================================== RCS file: /cvsroot/nice/Nice/regtest/coreJava/coreJava.code,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** coreJava.code 25 Aug 2003 23:45:32 -0000 1.27 --- coreJava.code 26 Aug 2003 00:45:13 -0000 1.28 *************** *** 96,99 **** --- 96,104 ---- y = -2.1; p("" + y); + + // bytes + byte b = 127; + b++; + p("" + b); } |
From: <bo...@us...> - 2003-08-25 23:45:40
|
Update of /cvsroot/nice/Nice/regtest/coreJava In directory sc8-pr-cvs1:/tmp/cvs-serv30082/regtest/coreJava Modified Files: coreJava.code Log Message: Check the handling of floating point literals. Index: coreJava.code =================================================================== RCS file: /cvsroot/nice/Nice/regtest/coreJava/coreJava.code,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** coreJava.code 1 Aug 2003 19:15:41 -0000 1.26 --- coreJava.code 25 Aug 2003 23:45:32 -0000 1.27 *************** *** 94,97 **** --- 94,99 ---- p("" + (i+(j-y)*x)); + y = -2.1; + p("" + y); } |
From: <bo...@us...> - 2003-08-25 23:43:43
|
Update of /cvsroot/nice/Nice/regtest/basic In directory sc8-pr-cvs1:/tmp/cvs-serv29799/regtest/basic Modified Files: arrays.nice Log Message: Take into account that floating point literals are now of type double by default. Index: arrays.nice =================================================================== RCS file: /cvsroot/nice/Nice/regtest/basic/arrays.nice,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** arrays.nice 15 Jun 2003 12:58:30 -0000 1.21 --- arrays.nice 25 Aug 2003 23:43:36 -0000 1.22 *************** *** 57,61 **** aF[0] = 2; for(int i=1; i<aF.length; i++) ! aF[i] = aF[i-1]*1.5; double[] aD = new double[10]; --- 57,61 ---- aF[0] = 2; for(int i=1; i<aF.length; i++) ! aF[i] = aF[i-1]*1.5f; double[] aD = new double[10]; *************** *** 146,150 **** ts.iter( String s =>println(s)); ! float[] tf = [ 1.5, 2, 3.7 ]; tf.iter(float fl => println(fl + 1)); } --- 146,150 ---- ts.iter( String s =>println(s)); ! float[] tf = [ 1.5f, 2f, 3.7f ]; tf.iter(float fl => println(fl + 1)); } |
From: <bo...@us...> - 2003-08-25 22:30:24
|
Update of /cvsroot/nice/Nice/src/gnu/bytecode In directory sc8-pr-cvs1:/tmp/cvs-serv18702/src/gnu/bytecode Modified Files: Type.java ArrayType.java Access.java Log Message: Take into account that clone is a public method for arrays. Index: Type.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/Type.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Type.java 24 Jun 2003 20:07:38 -0000 1.14 --- Type.java 25 Aug 2003 22:30:00 -0000 1.15 *************** *** 198,201 **** --- 198,203 ---- public final boolean isVoid () { return size == 0; } + public boolean isArray () { return false; } + /** Returns the primitive type corresponding to a signature character. * @return a primitive type, or null if there is no such type. */ Index: ArrayType.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/ArrayType.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ArrayType.java 19 Nov 2002 16:28:01 -0000 1.5 --- ArrayType.java 25 Aug 2003 22:30:00 -0000 1.6 *************** *** 24,27 **** --- 24,29 ---- } + public final boolean isArray () { return true; } + public Type getImplementationType() { Index: Access.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/Access.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Access.java 25 Aug 2003 18:09:10 -0000 1.3 --- Access.java 25 Aug 2003 22:30:00 -0000 1.4 *************** *** 61,64 **** --- 61,69 ---- return c == target; + // clone is the only method overriden for arrays, where it is public. + // (JLS-2 10.7) + if (m.getName().equals("clone") && receiver.isArray()) + return true; + // PROTECTED return c.getPackageName().equals(target.getPackageName()) |
From: <bo...@us...> - 2003-08-25 22:27:40
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv18365/web Modified Files: .htaccess Log Message: Released 0.9.1 Index: .htaccess =================================================================== RCS file: /cvsroot/nice/Nice/web/.htaccess,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** .htaccess 18 Jul 2003 22:49:44 -0000 1.10 --- .htaccess 25 Aug 2003 22:27:14 -0000 1.11 *************** *** 1,5 **** Redirect /Wiki http://nice.sourceforge.net/cgi-bin/twiki/view ! Redirect /Nice.tar http://prdownloads.sourceforge.net/nice/Nice-0.9.0-unix.tar.gz ! Redirect /Nice.zip http://prdownloads.sourceforge.net/nice/Nice-0.9.0-windows.zip ! Redirect /nice.deb http://prdownloads.sourceforge.net/nice/nice_0.9.0_all.deb ! Redirect /nice.rpm http://prdownloads.sourceforge.net/nice/Nice-0.9.0-1.noarch.rpm --- 1,5 ---- Redirect /Wiki http://nice.sourceforge.net/cgi-bin/twiki/view ! Redirect /Nice.tar http://prdownloads.sourceforge.net/nice/Nice-0.9.1-unix.tar.gz ! Redirect /Nice.zip http://prdownloads.sourceforge.net/nice/Nice-0.9.1-windows.zip ! Redirect /nice.deb http://prdownloads.sourceforge.net/nice/nice_0.9.1_all.deb ! Redirect /nice.rpm http://prdownloads.sourceforge.net/nice/Nice-0.9.1-1.noarch.rpm |
From: <bo...@us...> - 2003-08-25 18:18:00
|
Update of /cvsroot/nice/Nice/testsuite/lib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv3351/testsuite/lib/nice/lang Modified Files: clone.testsuite Log Message: Check that calls to protected Java methods are valid access-wise. Index: clone.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/lib/nice/lang/clone.testsuite,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** clone.testsuite 24 Aug 2003 18:07:28 -0000 1.3 --- clone.testsuite 25 Aug 2003 18:09:09 -0000 1.4 *************** *** 29,30 **** --- 29,33 ---- /// Toplevel class A {} + + /// FAIL + "abc".clone(); |
From: <bo...@us...> - 2003-08-25 18:17:59
|
Update of /cvsroot/nice/Nice/src/gnu/bytecode In directory sc8-pr-cvs1:/tmp/cvs-serv3351/src/gnu/bytecode Modified Files: CodeAttr.java Access.java Added Files: VerificationError.java Log Message: Check that calls to protected Java methods are valid access-wise. --- NEW FILE: VerificationError.java --- /**************************************************************************/ /* N I C E */ /* A high-level object-oriented research language */ /* (c) Daniel Bonniot 2002 */ /* */ /* This program is free software; you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License, or */ /* (at your option) any later version. */ /* */ /**************************************************************************/ package gnu.bytecode; /** The error thrown when an attempt to generate invalid bytecode is made. @version $Date: 2003/08/25 18:09:10 $ @author () */ public class VerificationError extends Error { VerificationError(String message) { super(message); } } Index: CodeAttr.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/CodeAttr.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** CodeAttr.java 24 Jun 2003 20:07:38 -0000 1.17 --- CodeAttr.java 25 Aug 2003 18:09:10 -0000 1.18 *************** *** 1064,1067 **** --- 1064,1069 ---- throw new Error ("emitInvokeXxx static flag mis-match method.flags="+method.access_flags); + Type receiverType = null; + while (--arg_count >= 0) popType(); *************** *** 1069,1073 **** { arg_count++; ! Type receiverType = popType(); // Don't change anything is the call is an invokespecial if (opcode != 183 && receiverType != method.getDeclaringClass()) --- 1071,1075 ---- { arg_count++; ! receiverType = popType(); // Don't change anything is the call is an invokespecial if (opcode != 183 && receiverType != method.getDeclaringClass()) *************** *** 1093,1096 **** --- 1095,1103 ---- } } + + if (! Access.legal(getMethod().getDeclaringClass(), method, receiverType)) + throw new VerificationError + ("Method " + method.getName() + " is not accessible"); + put1(opcode); // invokevirtual, invokespecial, or invokestatic putIndex2(getConstants().addMethodRef(method)); Index: Access.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/bytecode/Access.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Access.java 30 Oct 2001 15:16:50 -0000 1.2 --- Access.java 25 Aug 2003 18:09:10 -0000 1.3 *************** *** 45,47 **** --- 45,67 ---- return buf.toString(); } + + /** + @return true if code in class c can access method m, with the first + argument of the call being receiver. + */ + public static boolean legal(ClassType c, Method m, Type receiver) + { + int mod = m.getModifiers(); + if ((mod & PUBLIC) != 0) + return true; + + ClassType target = m.getDeclaringClass(); + + if ((mod & PRIVATE) != 0) + return c == target; + + // PROTECTED + return c.getPackageName().equals(target.getPackageName()) + || (c.isSubclass(target) && receiver.isSubtype(c)); + } } |
From: <bo...@us...> - 2003-08-25 18:17:59
|
Update of /cvsroot/nice/Nice/src/gnu/expr In directory sc8-pr-cvs1:/tmp/cvs-serv3351/src/gnu/expr Modified Files: PrimProcedure.java Log Message: Check that calls to protected Java methods are valid access-wise. Index: PrimProcedure.java =================================================================== RCS file: /cvsroot/nice/Nice/src/gnu/expr/PrimProcedure.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PrimProcedure.java 8 Aug 2003 19:16:32 -0000 1.8 --- PrimProcedure.java 25 Aug 2003 18:09:10 -0000 1.9 *************** *** 431,435 **** comp.error('e', arg_error); ! compile(getStaticFlag() ? null : method.getDeclaringClass(), args, comp, target); } --- 431,441 ---- comp.error('e', arg_error); ! try { ! compile(getStaticFlag() ? null : method.getDeclaringClass(), args, comp, target); ! } ! catch (VerificationError e) { ! throw bossa.util.User.error(bossa.util.Location.make(exp), ! e.getMessage()); ! } } |
From: <bo...@us...> - 2003-08-25 18:17:57
|
Update of /cvsroot/nice/Nice/src/bossa/util In directory sc8-pr-cvs1:/tmp/cvs-serv3351/src/bossa/util Modified Files: Location.java Log Message: Check that calls to protected Java methods are valid access-wise. Index: Location.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/util/Location.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** Location.java 24 Jun 2003 21:39:45 -0000 1.25 --- Location.java 25 Aug 2003 18:09:10 -0000 1.26 *************** *** 218,221 **** --- 218,229 ---- } + public static Location make(gnu.expr.Expression expr) + { + String file = expr.getFile(); + return new Source(file != null ? new java.io.File(file) : null, + expr.getLine(), expr.getColumn(), + -1, -1); + } + /**************************************************************** * A compilation option |
From: <bo...@us...> - 2003-08-25 18:17:56
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv3351/src/bossa/syntax Modified Files: CallExp.java Log Message: Check that calls to protected Java methods are valid access-wise. Index: CallExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/CallExp.java,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -d -r1.83 -r1.84 *** CallExp.java 31 Jul 2003 18:45:35 -0000 1.83 --- CallExp.java 25 Aug 2003 18:09:10 -0000 1.84 *************** *** 315,318 **** --- 315,319 ---- res = new gnu.expr.ApplyExp(function.generateCodeInCallPosition(), compileParams()); + location().write(res); return EnsureTypeProc.ensure(res, Types.javaType(type)); |
From: <ar...@us...> - 2003-08-25 18:17:32
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv4355/F:/nice/src/bossa/syntax Modified Files: ConstantExp.java Log Message: Correct handling of floating literals. Index: ConstantExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/ConstantExp.java,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** ConstantExp.java 15 Jul 2003 21:41:36 -0000 1.45 --- ConstantExp.java 25 Aug 2003 18:15:12 -0000 1.46 *************** *** 250,262 **** } - public static ConstantExp makeDouble(double value, Location location) - { - return new ConstantExp(PrimitiveType.floatTC, new Double(value), value+"", - location); - } - public static ConstantExp makeFloating(LocatedString representation) { ! return makeDouble(Double.parseDouble(representation.toString()), representation.location()); } --- 250,266 ---- } public static ConstantExp makeFloating(LocatedString representation) { ! String repres = representation.toString(); ! if (repres.endsWith("F") || repres.endsWith("f")) ! { ! float value = Float.parseFloat(repres); ! return new ConstantExp(PrimitiveType.floatTC, new Float(value), value+"", ! representation.location()); ! } ! ! double value = Double.parseDouble(repres); ! return new ConstantExp(PrimitiveType.doubleTC, new Double(value), value+"", ! representation.location()); } |
From: <bo...@us...> - 2003-08-25 18:05:57
|
Update of /cvsroot/nice/Nice/debian In directory sc8-pr-cvs1:/tmp/cvs-serv2397/debian Modified Files: changelog Log Message: Classes that implement java.lang.Cloneable now automatically support the clone method. Index: changelog =================================================================== RCS file: /cvsroot/nice/Nice/debian/changelog,v retrieving revision 1.198 retrieving revision 1.199 diff -C2 -d -r1.198 -r1.199 *** changelog 9 Aug 2003 22:00:38 -0000 1.198 --- changelog 25 Aug 2003 18:03:30 -0000 1.199 *************** *** 1,2 **** --- 1,9 ---- + nice (0.9.2) unstable; urgency=low + + * Classes that implement java.lang.Cloneable now automatically support + the clone method. + + -- + nice (0.9.1) unstable; urgency=low |
From: <bo...@us...> - 2003-08-25 17:05:18
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv24129/web Modified Files: .cvsignore Log Message: Added files to keep track of send time. Index: .cvsignore =================================================================== RCS file: /cvsroot/nice/Nice/web/.cvsignore,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** .cvsignore 16 Jun 2003 18:52:54 -0000 1.10 --- .cvsignore 25 Aug 2003 17:04:39 -0000 1.11 *************** *** 7,10 **** --- 7,12 ---- roadmap.html safety.html + send_manual_pdf + send_manual_ps testimonials.html *.pdf |
From: <bo...@us...> - 2003-08-25 16:43:13
|
Update of /cvsroot/nice/Nice/testsuite/lib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv10232/testsuite/lib/nice/lang Modified Files: clone.testsuite Log Message: Make classes that implement Cloneable have a public clone method that call super. Index: clone.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/lib/nice/lang/clone.testsuite,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** clone.testsuite 24 Jun 2003 20:07:37 -0000 1.2 --- clone.testsuite 24 Aug 2003 18:07:28 -0000 1.3 *************** *** 14,15 **** --- 14,30 ---- clone() = new A(x: this.x); } + + /// PASS + A a = new A().clone(); + /// Toplevel + class A implements Cloneable {} + + /// PASS + try { + A.class.getDeclaredMethod("clone", []); + assert false; + } + catch (NoSuchMethodException ex) {} + + /// Toplevel + class A {} |
From: <bo...@us...> - 2003-08-25 16:43:12
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv10232/src/bossa/syntax Modified Files: NiceClass.java ClassDefinition.java Log Message: Make classes that implement Cloneable have a public clone method that call super. Index: NiceClass.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** NiceClass.java 6 Aug 2003 22:40:31 -0000 1.57 --- NiceClass.java 24 Aug 2003 18:07:28 -0000 1.58 *************** *** 333,336 **** --- 333,337 ---- resolveIntitializers(); createConstructor(); + addPublicCloneMethod(); } *************** *** 516,519 **** --- 517,535 ---- */ classe = createClassExp(); + } + + static gnu.bytecode.Method cloneMethod = + gnu.bytecode.Type.pointer_type.getDeclaredMethod("clone", 0); + + private void addPublicCloneMethod() + { + if (! definition.implementsJavaInterface("java.lang.Cloneable")) + return; + + gnu.expr.Expression[] params = new gnu.expr.Expression[1]; + gnu.expr.LambdaExp lambda = createJavaMethod("clone", cloneMethod, params); + Gen.setMethodBody(lambda, + new gnu.expr.ApplyExp(new gnu.expr.QuoteExp(gnu.expr.PrimProcedure.specialCall(cloneMethod)), params)); + addJavaMethod(lambda); } Index: ClassDefinition.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/ClassDefinition.java,v retrieving revision 1.93 retrieving revision 1.94 diff -C2 -d -r1.93 -r1.94 *** ClassDefinition.java 2 Jun 2003 17:43:12 -0000 1.93 --- ClassDefinition.java 24 Aug 2003 18:07:28 -0000 1.94 *************** *** 60,63 **** --- 60,68 ---- int getBytecodeFlags() { return Access.INTERFACE; } + boolean implementsJavaInterface(String name) + { + return false; + } + public mlsub.typing.TypeSymbol getTypeSymbol() { *************** *** 220,223 **** --- 225,237 ---- } + boolean implementsJavaInterface(String name) + { + if (javaInterfaces != null) + for (int i = 0; i < javaInterfaces.length; i++) + if (javaInterfaces[i].toString().equals(name)) + return true; + return false; + } + public mlsub.typing.TypeSymbol getTypeSymbol() { *************** *** 449,452 **** --- 463,468 ---- abstract int getBytecodeFlags(); + + abstract boolean implementsJavaInterface(String name); /**************************************************************** |
From: <ar...@us...> - 2003-08-24 20:48:00
|
Update of /cvsroot/nice/Nice/stdlib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv1668/F:/nice/stdlib/nice/lang Modified Files: array.nice collections.nice Log Message: First part of updates to the stdlib. Index: array.nice =================================================================== RCS file: /cvsroot/nice/Nice/stdlib/nice/lang/array.nice,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** array.nice 21 Jul 2003 17:24:14 -0000 1.25 --- array.nice 24 Aug 2003 20:47:57 -0000 1.26 *************** *** 24,30 **** = native; ! <Any T> !T[] elementsNotNull(?T[] arr) { ! assert(!arr.has(?T elem => elem == null)); return cast(arr); } --- 24,30 ---- = native; ! <T> !T[] elementsNotNull(?T[] arr) { ! assert(arr.all(?T elem => elem != null)); return cast(arr); } *************** *** 34,43 **** The result can be the same array as the argument. */ ! <Any T> T[] resize(T[], int newSize) = native Object Native.resize(Object,int); ! <Any T> int length(T[]) = inline nice.lang.inline.ArrayLength(); ! <Any T> T get(T[], int) = inline nice.lang.inline.ArrayGetOp("o"); ! <Any T> void set(T[], int, T) = inline nice.lang.inline.ArraySetOp("o"); --- 34,43 ---- The result can be the same array as the argument. */ ! <T> T[] resize(T[], int newSize) = native Object Native.resize(Object,int); ! <T> int length(T[]) = inline nice.lang.inline.ArrayLength(); ! <T> T get(T[], int) = inline nice.lang.inline.ArrayGetOp("o"); ! <T> void set(T[], int, T) = inline nice.lang.inline.ArraySetOp("o"); *************** *** 89,104 **** // Define collection methods ! <C,T,U> map(a@Array, f) = fill(new U[a.length], int i => f(a[i])); ! <C,T> filter(a@Array, test) = a.filter(test); // Specialized versions for arrays. ! <T> T[] filter(T[] a, T -> boolean test) { int l = a.length; int found = 0; ! T[] res = cast(new T[l]); a.foreach(T elem => --- 89,104 ---- // Define collection methods ! <C,T,U> map(a@Array, func) = fill(new U[a.length], int i => func(a[i])); ! <C,T,U> filter(a@Array, test) = a.filter(test); // Specialized versions for arrays. ! <T, U | T <: U> U[] filter(T[] a, T -> boolean test) { int l = a.length; int found = 0; ! U[] res = cast(new U[l]); a.foreach(T elem => *************** *** 108,112 **** } ! <Any T> void foreach(T[] a, (T)->void f) { for (int i = 0; i < a.length; i++) --- 108,112 ---- } ! <T> void foreach(T[] a, (T)->void f) { for (int i = 0; i < a.length; i++) *************** *** 114,118 **** } ! <Any T> ?T find(!T[] a, (!T)->boolean test) { for (int i = 0; i < a.length; i++) --- 114,118 ---- } ! <T> ?T find(!T[] a, (!T)->boolean test) { for (int i = 0; i < a.length; i++) *************** *** 143,147 **** like in the above example. */ ! <Any T, Any U | U <: T> U[] fill(T[] array, int->U value) // In particular, this is useful with T = ?X and U = !X. // The above type is more general, and useful when the component type is a type variable. --- 143,147 ---- like in the above example. */ ! <T, U | U <: T> U[] fill(T[] array, int->U value) // In particular, this is useful with T = ?X and U = !X. // The above type is more general, and useful when the component type is a type variable. Index: collections.nice =================================================================== RCS file: /cvsroot/nice/Nice/stdlib/nice/lang/collections.nice,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** collections.nice 21 Jul 2003 17:24:14 -0000 1.51 --- collections.nice 24 Aug 2003 20:47:57 -0000 1.52 *************** *** 19,35 **** ****************************************************************/ ! <Any T> void foreach(java.util.Collection<T>, T->void); // Backward compatibility. `iter` will probably be removed sometime. ! <Any T> void iter(java.util.Collection<T> c, T->void f) = c.foreach(f); ! ! <java.util.Collection C, T, U> C<U> similarEmptyCollection(C<T>); ! <java.util.Collection C, Any T, Any U> C<U> map(C<T>, T->U); ! // A more precise type for filter would be: ! // <Collection C, T, U | T <: U> C<U> filter(C<T>, T -> boolean); ! // This would allow List<A> lA = lB.filter(...) where B is a subclass of A. ! <java.util.Collection C, Any T> C<T> filter(C<T>, T->boolean); /** Return a collection containing all elements for which converter --- 19,31 ---- ****************************************************************/ ! <T> void foreach(Collection<T> coll, T->void func); // Backward compatibility. `iter` will probably be removed sometime. ! <T> void iter(Collection<T> coll, T->void func) = coll.foreach(func); ! <Collection C, T, U> C<U> similarEmptyCollection(C<T>); ! <Collection C, T, U> C<U> map(C<T> coll, T->U func); ! <Collection C, T, U | T <: U> C<U> filter(C<T>, T->boolean); /** Return a collection containing all elements for which converter *************** *** 42,61 **** { C<!U> res = source.similarEmptyCollection(); ! source.foreach(T elem => { ! ?U converted = converter(elem); ! if (converted != null) ! res.add(converted); ! }); return res; } - /** @deprecated */ ! <T> void keep (Collection<T> c, T->boolean test) = c.retain(test); /** Modifies c, only keeping the elements for which test returns true. */ ! <T> void retain (Collection<T> c, T->boolean test) { ! Iterator<T> i = c.iterator(); while (i.hasNext()) { --- 38,57 ---- { C<!U> res = source.similarEmptyCollection(); ! for(T elem : source) ! { ! ?U converted = converter(elem); ! if (converted != null) ! res.add(converted); ! } return res; } /** @deprecated */ ! <T> void keep(Collection<T> coll, T->boolean test) = coll.retain(test); /** Modifies c, only keeping the elements for which test returns true. */ ! <T> void retain(Collection<T> coll, T->boolean test) { ! Iterator<T> i = coll.iterator(); while (i.hasNext()) { *************** *** 67,73 **** /** Modifies c, removing the elements for which test returns true. */ ! <T> void remove (Collection<T> c, T->boolean test) { ! Iterator<T> i = c.iterator(); while (i.hasNext()) { --- 63,69 ---- /** Modifies c, removing the elements for which test returns true. */ ! <T> void remove(Collection<T> coll, T->boolean test) { ! Iterator<T> i = coll.iterator(); while (i.hasNext()) { *************** *** 78,102 **** } ! ! <Any T, Any U> U foldLeft(java.util.List<T> l, (U, T)->U f, U init) { U res = init; ! l.foreach(T elem => { res = f(res, elem); }); return res; } ! <Any T, Any U> U foldRight(java.util.List<T> l, (T, U)->U f, U init) = ! foldRight(l, f, init, 0); ! private <Any T, Any U> ! U foldRight(java.util.List<T> l, (T, U)->U f, U init, int from) { ! if (from < l.size()) ! return f(l[from], l.foldRight(f, init, from + 1)); else return init; } ! <Any T> List<T> slice(List<T> list, int from = 0, int to = -1) { if (to == -1) --- 74,99 ---- } ! <T, U> U foldLeft(List<T> list, (U, T)->U func, U init) { U res = init; ! for (T elem : list) ! res = func(res, elem); ! return res; } ! <T, U> U foldRight(List<T> list, (T, U)->U func, U init) = ! foldRight(list, func, init, 0); ! private <T, U> ! U foldRight(List<T> list, (T, U)->U func, U init, int from) { ! if (from < list.size()) ! return func(list[from], list.foldRight(func, init, from + 1)); else return init; } ! <T> List<T> slice(List<T> list, int from = 0, int to = -1) { if (to == -1) *************** *** 106,109 **** --- 103,107 ---- for (int i = from; i <= to; i++) res.add(list[i]); + return res; } *************** *** 113,145 **** ****************************************************************/ ! /** ! Default implementation, using an Iterator. ! */ ! <T> foreach(c...@ja...llection, f) { ! for (java.util.Iterator<T> i = c.iterator(); i.hasNext();) ! f(i.next()); } ! /** ! A more efficient implementation for lists: doesn't allocate an Iterator. ! */ ! foreach(l...@ja...st, f) { ! for (int i = 0; i < l.size; i++) ! f(l.get(i)); ! } - <C,T,U> map(c, f) - { - C<U> res = c.similarEmptyCollection(); - c.foreach(T elem => { res.add(f(elem)); }); return res; } ! <C,T> filter(c, test) { ! C<T> res = c.similarEmptyCollection(); ! c.foreach(T elem => { if(test(elem)) res.add(elem); }); return res; } --- 111,136 ---- ****************************************************************/ ! <T> foreach(co...@ja...llection, func) { ! for (T elem : coll) ! func(elem); } ! <C,T,U> map(coll, func) { ! C<U> res = coll.similarEmptyCollection(); ! for (T elem : coll) ! res.add(func(elem)); return res; } ! <C,T,U> filter(coll, test) { ! C<U> res = coll.similarEmptyCollection(); ! for (T elem : coll) ! if (test(elem)) ! res.add(elem); ! return res; } *************** *** 183,192 **** /** @deprecated */ ! <Any T> boolean has (java.util.List<T> s, T->boolean test) = s.contains(test); ! <Any T> boolean contains (java.util.List<T> s, T->boolean test) { ! for (int i = 0; i < s.size(); i++) ! if (test(s[i])) return true; --- 174,210 ---- /** @deprecated */ ! <T> boolean has (Collection<T> coll, T->boolean test) = coll.contains(test); ! <T> boolean contains (Collection<T> coll, T->boolean test) { ! for (T elem : coll) ! if (test(elem)) ! return true; ! ! return false; ! } ! ! <T, U, V | T <: V, U <: V> boolean containsAny (Collection<T> coll1, Collection<U> coll2) ! { ! for (T elem : coll1) ! if (coll2.contains(elem)) ! return true; ! ! return false; ! } ! ! <T> int count (Collection<T> coll, T->boolean test) ! { ! int res = 0; ! for (T elem : coll) ! if (test(elem)) res++; ! ! return res; ! } ! ! <T> boolean any (Collection<T> coll, T->boolean test) ! { ! for (T elem : coll) ! if (test(elem)) return true; *************** *** 194,205 **** } /** Find the first element that passes the given test. @throw java.util.NoSuchElementException if there is no such element. */ ! <Any T> T find (java.util.List<T> s, T->boolean test) { ! for (int i = 0; i < s.size(); i++) ! if (test(s[i])) ! return s[i]; throw new java.util.NoSuchElementException(); --- 212,241 ---- } + <T> boolean all (Collection<T> coll, T->boolean test) + { + for (T elem : coll) + if (!test(elem)) + return false; + + return true; + } + + <T> boolean none (Collection<T> coll, T->boolean test) + { + for (T elem : coll) + if (test(elem)) + return false; + + return true; + } + /** Find the first element that passes the given test. @throw java.util.NoSuchElementException if there is no such element. */ ! <T> T find (List<T> list, T->boolean test) { ! for (T elem : list) ! if (test(elem)) ! return elem; throw new java.util.NoSuchElementException(); *************** *** 209,217 **** @throw java.util.NoSuchElementException if there is no such element. */ ! <Any T> T findLast (java.util.List<T> s, T->boolean test) { ! for (int i = s.size(); --i >= 0;) ! if (test(s[i])) ! return s[i]; throw new java.util.NoSuchElementException(); --- 245,253 ---- @throw java.util.NoSuchElementException if there is no such element. */ ! <T> T findLast (List<T> list, T->boolean test) { ! for (int i = list.size(); --i >= 0;) ! if (test(list[i])) ! return list[i]; throw new java.util.NoSuchElementException(); *************** *** 221,229 **** Returns <code>null</code> if there is no such element. */ ! <Any T> ?T search (java.util.List<!T> s, !T->boolean test) { ! for (int i = 0; i < s.size(); i++) ! if (test(s[i])) ! return s[i]; return null; --- 257,265 ---- Returns <code>null</code> if there is no such element. */ ! <Any T> ?T search (java.util.List<!T> list, !T->boolean test) { ! for (!T elem : list) ! if (test(elem)) ! return elem; return null; *************** *** 233,237 **** Returns <code>null</code> if there is no such element. */ ! <Any T> ?T searchLast (java.util.List<!T> s, !T->boolean test) { for (int i = s.size(); --i >= 0;) --- 269,273 ---- Returns <code>null</code> if there is no such element. */ ! <T> ?T searchLast (List<!T> s, !T->boolean test) { for (int i = s.size(); --i >= 0;) *************** *** 243,261 **** /** @deprecated */ ! <Any T> int findIndex (List<T> s, T->boolean test) = s.findIndex(test); ! <Any T> int indexOf (List<T> s, T->boolean test) { ! for (int i = 0; i < s.size(); i++) ! if (test(s[i])) return i; ! throw new java.util.NoSuchElementException(); } ! boolean or(java.util.List<boolean> s) { ! for (int i = 0; i < s.size(); i++) ! if (s[i]) return true; --- 279,297 ---- /** @deprecated */ ! <T> int findIndex (List<T> list, T->boolean test) = list.findIndex(test); ! <T> int indexOf (List<T> list, T->boolean test) { ! for (int i = 0; i < list.size(); i++) ! if (test(list[i])) return i; ! throw new NoSuchElementException(); } ! boolean or(List<boolean> list) { ! for (boolean elem : list) ! if (elem) return true; *************** *** 263,273 **** } ! long max(java.util.List<long> s) requires !s.isEmpty() { long res = Long.MIN_VALUE; ! for(int i = 0; i < s.size(); i++) ! if (s[i] > res) ! res = s[i]; return res; --- 299,351 ---- } ! boolean and(List<boolean> list) ! { ! for (boolean elem : list) ! if (!elem) ! return false; ! ! return true; ! } ! ! long max(List<long> list) requires !list.isEmpty() { long res = Long.MIN_VALUE; ! for(long elem : list) ! if (elem > res) ! res = elem; ! ! return res; ! } ! ! long min(List<long> list) requires !list.isEmpty() ! { ! long res = Long.MAX_VALUE; ! ! for(long elem : list) ! if (elem < res) ! res = elem; ! ! return res; ! } ! ! int max(List<int> list) requires !list.isEmpty() ! { ! int res = Integer.MIN_VALUE; ! ! for(int elem : list) ! if (elem > res) ! res = elem; ! ! return res; ! } ! ! int min(List<int> list) requires !list.isEmpty() ! { ! int res = Integer.MAX_VALUE; ! ! for(int elem : list) ! if (elem < res) ! res = elem; return res; *************** *** 284,320 **** /**************************************************************** ! * Printing ****************************************************************/ ! /* ! We need overriding of native methods for this ! toString(s@List) { ! if (s.size() == 0) ! return "[]"; ! StringBuffer buf = new StringBuffer(); ! buf.append("["); ! buf.append(s[0].toString()); ! for (int i=1; i<s.size(); i++) ! { ! buf.append(", "); ! buf.append(s[i].toString()); ! } ! buf.append("]"); ! return buf.toString(); } - */ /**************************************************************** ! * toArray ****************************************************************/ ! <Any T> T[] toArray(java.util.Collection<T> c) { ! T[] res = cast(new T[c.size()]); - int i = 0; - c.foreach(T elem => res[i++] = elem); return res; } --- 362,439 ---- /**************************************************************** ! * toArray ****************************************************************/ ! <T, U | T <: U> U[] toArray(Collection<T> coll) { ! U[] res = cast(new U[coll.size()]); ! int i = 0; ! for (T elem : coll) ! res[i++] = elem; ! return res; ! } ! ! <T, U> U[] mapToArray(List<T> list, T->U func) ! { ! U[] res = cast(new U[list.size()]); ! int i = 0; ! for (T elem : list) ! res[i++] = func(elem); ! ! return res; } /**************************************************************** ! * Set operations ****************************************************************/ ! <T, U, V | U <: T, V <: T> Set<T> union(Set<U> set1, Set<V> set2) { ! let Set<T> res = new HashSet(set1); ! res.addAll(set2); ! return res; ! } ! ! <T, U, V | U <: T, V <: T> Set<T> intersection(Set<U> set1, Set<V> set2) ! { ! Set<T> res = new HashSet(); ! if (set1.size() > set2.size()) ! { ! for (V elem : set2) ! if (set1.contains(elem)) ! res.add(elem); ! } ! else ! { ! for (U elem : set1) ! if (set2.contains(elem)) ! res.add(elem); ! } ! ! return res; ! } ! ! <T, U, V | U <: T, V <: T> Set<T> disjunction(Set<U> set1, Set<V> set2) ! { ! Set<T> res = new HashSet(); ! for (U elem : set1) ! if (! set2.contains(elem)) ! res.add(elem); ! ! for (V elem : set2) ! if (! set1.contains(elem)) ! res.add(elem); ! ! return res; ! } ! ! <T, U, V, W | U <: T, V <: W, W <: U> Set<T> difference(Set<U> set1, Set<V> set2) ! { ! Set<T> res = new HashSet(); ! for (U elem : set1) ! if (! set2.contains(elem)) ! res.add(elem); return res; } |
From: <bo...@us...> - 2003-08-24 18:09:55
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv10584/src/bossa/syntax Modified Files: analyse.nice Log Message: Clearer error message when a type constant is not declared. Index: analyse.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/analyse.nice,v retrieving revision 1.78 retrieving revision 1.79 diff -C2 -d -r1.78 -r1.79 *** analyse.nice 31 Jul 2003 19:32:05 -0000 1.78 --- analyse.nice 24 Aug 2003 18:09:53 -0000 1.79 *************** *** 552,556 **** if (type == null) ! throw unknownIdent(name); e.value = object(type); --- 552,556 ---- if (type == null) ! throw new bossa.util.UserError(name, "Class " + name + " is not declared"); e.value = object(type); |