nice-commit Mailing List for The Nice Programming Language (Page 106)
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: <xo...@us...> - 2003-06-02 22:11:57
|
Update of /cvsroot/nice/Nice/stdlib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv17954/stdlib/nice/lang Modified Files: strings.nice Log Message: Added functions join() and split() for joining and splitting strings around a separator. Index: strings.nice =================================================================== RCS file: /cvsroot/nice/Nice/stdlib/nice/lang/strings.nice,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** strings.nice 19 Jan 2003 09:27:11 -0000 1.8 --- strings.nice 2 Jun 2003 22:11:53 -0000 1.9 *************** *** 49,50 **** --- 49,88 ---- char get(String s, int index) = native char String.charAt(int); char charAt(String s, int index) = native char String.charAt(int); + + + List<String> split(String str, String sep) + { + List<String> res = new ArrayList(); + int ntx = 0; + int pos = 0; + while(ntx > -1) + { + ntx = str.indexOf(sep, pos); + if (ntx > -1) + { + if (ntx > 0) + { + res.add(str.substring(pos, ntx)); + } + pos = ntx + sep.length; + } + else + { + res.add(pos == 0 ? str : str.substring(pos)); + } + } + return res; + } + + String join(List<String> strings, String sep) + { + StringBuffer buff = new StringBuffer(); + Iterator<String> it = strings.iterator(); + while(it.hasNext()) + { + buff.append(it.next()); + if (it.hasNext()) + buff.append(sep); + } + return buff.toString(); + } |
From: <xo...@us...> - 2003-06-02 22:11:57
|
Update of /cvsroot/nice/Nice/testsuite/lib/nice/lang In directory sc8-pr-cvs1:/tmp/cvs-serv17954/testsuite/lib/nice/lang Added Files: strings.testsuite Log Message: Added functions join() and split() for joining and splitting strings around a separator. --- NEW FILE: strings.testsuite --- /// PASS List<String> splits = split("foo,bar,baz", ","); assert splits.size == 3; /// PASS List<String> splits = split("foo,bar,baz", ","); assert splits[0].equals("foo"); /// PASS List<String> splits = split("foo,bar,baz", ","); assert splits[1].equals("bar"); /// PASS List<String> splits = split("foo,bar,baz", ","); assert splits[2].equals("baz"); /// PASS List<String> splits = split("foo,bar,foo,baz", "foo,"); assert splits.size == 2; /// PASS List<String> splits = split("foo,bar,foo,baz", "foo,"); assert splits[0].equals("bar,"); /// PASS List<String> splits = split("foo,bar,foo,baz", "foo,"); assert splits[1].equals("baz"); /// PASS String joined = ["1", "2", "3"].join(","); assert joined.equals("1,2,3"); |
From: <bo...@us...> - 2003-06-02 19:05:35
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv1087/src/bossa/syntax Modified Files: FunExp.java Log Message: Minor: use List.toArray instead of custom code. Index: FunExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/FunExp.java,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** FunExp.java 1 Jun 2003 10:45:23 -0000 1.42 --- FunExp.java 2 Jun 2003 19:05:31 -0000 1.43 *************** *** 31,40 **** public FunExp(bossa.syntax.Constraint cst, List formals, Statement body) { ! this.formals = new MonoSymbol[formals.size()]; ! for (int i = 0; i < this.formals.length; i++) ! { ! MonoSymbol m = (MonoSymbol) formals.get(i); ! this.formals[i] = m; ! } this.constraint = cst; --- 31,36 ---- public FunExp(bossa.syntax.Constraint cst, List formals, Statement body) { ! this.formals = (MonoSymbol[]) ! formals.toArray(new MonoSymbol[formals.size()]); this.constraint = cst; |
From: <bo...@us...> - 2003-06-02 18:18:51
|
Update of /cvsroot/nice/Nice/src/nice/tools/code In directory sc8-pr-cvs1:/tmp/cvs-serv2449/src/nice/tools/code Modified Files: SpecialArray.java Log Message: Typo. Index: SpecialArray.java =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/code/SpecialArray.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** SpecialArray.java 14 Jan 2003 22:03:15 -0000 1.12 --- SpecialArray.java 2 Jun 2003 18:04:42 -0000 1.13 *************** *** 7,11 **** /** ! Arrays that are wrapped on the flw into objects implementing java.util.List when needed. */ --- 7,11 ---- /** ! Arrays that are wrapped on the fly into objects implementing java.util.List when needed. */ |
From: <bo...@us...> - 2003-06-02 18:18:43
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv3784/src/bossa/syntax Modified Files: MethodBodyDefinition.java Log Message: Minor: changed the order of a test, so that the faster one is done first. Index: MethodBodyDefinition.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/MethodBodyDefinition.java,v retrieving revision 1.123 retrieving revision 1.124 diff -C2 -d -r1.123 -r1.124 *** MethodBodyDefinition.java 29 May 2003 14:17:18 -0000 1.123 --- MethodBodyDefinition.java 2 Jun 2003 18:07:31 -0000 1.124 *************** *** 181,186 **** MethodDeclaration m = ((MethodDeclaration.Symbol) s).getDefinition(); ! if (!(m instanceof NiceMethod || m instanceof JavaMethod) ! || m.getArity() != formals.length) { i.remove(); --- 181,186 ---- MethodDeclaration m = ((MethodDeclaration.Symbol) s).getDefinition(); ! if (m.getArity() != formals.length ! || !(m instanceof NiceMethod || m instanceof JavaMethod)) { i.remove(); |
From: <bo...@us...> - 2003-06-02 18:18:13
|
Update of /cvsroot/nice/Nice/src/mlsub/typing In directory sc8-pr-cvs1:/tmp/cvs-serv32718/src/mlsub/typing Modified Files: Typing.java Log Message: Better debuging info in the type-checker. Index: Typing.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/Typing.java,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** Typing.java 7 Oct 2002 12:38:22 -0000 1.30 --- Typing.java 2 Jun 2003 17:58:28 -0000 1.31 *************** *** 140,144 **** } catch(Unsatisfiable e){ ! throw new InternalError("Initial context is not satisfiable"); } } --- 140,144 ---- } catch(Unsatisfiable e){ ! throw new InternalError("Initial context is not satisfiable: " + e); } } |
From: <bo...@us...> - 2003-06-02 18:18:11
|
Update of /cvsroot/nice/Nice/src/mlsub/typing/lowlevel In directory sc8-pr-cvs1:/tmp/cvs-serv32718/src/mlsub/typing/lowlevel Modified Files: K0.java Interface.java Engine.java Log Message: Better debuging info in the type-checker. Index: K0.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/lowlevel/K0.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** K0.java 2 Jun 2003 17:43:12 -0000 1.17 --- K0.java 2 Jun 2003 17:58:26 -0000 1.18 *************** *** 179,183 **** return callbacks.indexToString(index); } ! private String interfaceToString(int iid) { return callbacks.interfaceToString(iid); } --- 179,183 ---- return callbacks.indexToString(index); } ! String interfaceToString(int iid) { return callbacks.interfaceToString(iid); } Index: Interface.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/lowlevel/Interface.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Interface.java 19 Jun 2001 10:44:21 -0000 1.2 --- Interface.java 2 Jun 2003 17:58:27 -0000 1.3 *************** *** 84,88 **** public String toString() { ! return "" + iid; } } --- 84,88 ---- public String toString() { ! return k0.interfaceToString(iid); } } Index: Engine.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/lowlevel/Engine.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** Engine.java 13 Mar 2003 23:19:40 -0000 1.25 --- Engine.java 2 Jun 2003 17:58:27 -0000 1.26 *************** *** 727,731 **** } protected String interfaceToString(int iid) { ! return Integer.toString(iid); } } --- 727,731 ---- } protected String interfaceToString(int iid) { ! return "" + ((mlsub.typing.Variance) associatedKind).getInterface(iid); } } |
From: <bo...@us...> - 2003-06-02 17:51:28
|
Update of /cvsroot/nice/Nice/testsuite/compiler/abstractInterfaces In directory sc8-pr-cvs1:/tmp/cvs-serv26672/testsuite/compiler/abstractInterfaces Added Files: interface.testsuite Log Message: Interfaces can now implement (finally or not) abstract interfaces. Do not fail anymore when there is ambiguity about the approximation of a class relatively to a certain abstract interface. There is just no approximation in that case. This is important, since it could have been awkward to solve that failure. --- NEW FILE: interface.testsuite --- /// COMMENT Testing normal interfaces implementing abstract interfaces /// PASS /// Toplevel abstract interface K { void foo(); } interface I implements K { foo() {} } |
From: <bo...@us...> - 2003-06-02 17:47:15
|
Update of /cvsroot/nice/Nice/debian In directory sc8-pr-cvs1:/tmp/cvs-serv26672/debian Modified Files: changelog Log Message: Interfaces can now implement (finally or not) abstract interfaces. Do not fail anymore when there is ambiguity about the approximation of a class relatively to a certain abstract interface. There is just no approximation in that case. This is important, since it could have been awkward to solve that failure. Index: changelog =================================================================== RCS file: /cvsroot/nice/Nice/debian/changelog,v retrieving revision 1.167 retrieving revision 1.168 diff -C2 -d -r1.167 -r1.168 *** changelog 31 May 2003 17:42:45 -0000 1.167 --- changelog 2 Jun 2003 17:43:14 -0000 1.168 *************** *** 3,6 **** --- 3,7 ---- * Archives (generated with the -a option) can now be used to distribute Nice libraries. + * Interfaces can now implement (finally or not) abstract interfaces. -- |
From: <bo...@us...> - 2003-06-02 17:43:45
|
Update of /cvsroot/nice/Nice/src/mlsub/typing/lowlevel In directory sc8-pr-cvs1:/tmp/cvs-serv26672/src/mlsub/typing/lowlevel Modified Files: K0.java Log Message: Interfaces can now implement (finally or not) abstract interfaces. Do not fail anymore when there is ambiguity about the approximation of a class relatively to a certain abstract interface. There is just no approximation in that case. This is important, since it could have been awkward to solve that failure. Index: K0.java =================================================================== RCS file: /cvsroot/nice/Nice/src/mlsub/typing/lowlevel/K0.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** K0.java 5 May 2003 16:39:44 -0000 1.16 --- K0.java 2 Jun 2003 17:43:12 -0000 1.17 *************** *** 914,918 **** // abs is a constant that abstracts i // and j is a subInterface of i ! setApproxToMinAbove(abs, getInterface(jid), R); } computeApproxMinimals(0, R); --- 914,924 ---- // abs is a constant that abstracts i // and j is a subInterface of i ! { ! BitVector labs = Rt.getRow(abs); ! for (int node = labs.getLowestSetBit(); ! node != BitVector.UNDEFINED_INDEX; ! node = labs.getNextBit(node)) ! setApproxToMinAbove(node, getInterface(jid), R); ! } } computeApproxMinimals(0, R); *************** *** 953,958 **** else // optimize ? : ! // make tocheck an int, -1 at start. first to check-> N, second to check->-2 ! // if at then end toCHeck =N, it's fast ! toCheck = true; } --- 959,964 ---- else // optimize ? : ! // make tocheck an int, -1 at start. first to check-> N, second to check->-2 if not comparable with toCheck, otherwise the smaller ! // if at then end toCheck == -2, full check. Otherwise just check leq.get(approx, toCheck) ! toCheck = true; } *************** *** 964,969 **** x = implementors.getNextBit(x)) if(leq.get(abs,x) && !leq.get(approx,x)) ! throw new LowlevelUnsatisfiable("Node "+approx+" and "+x+" are uncomparable and both implement "+ j + ! " above "+abs); if(debugK0) System.err.println("Initial approximation for " + --- 970,978 ---- x = implementors.getNextBit(x)) if(leq.get(abs,x) && !leq.get(approx,x)) ! { ! approx = BitVector.UNDEFINED_INDEX; ! break; ! } ! if(debugK0) System.err.println("Initial approximation for " + *************** *** 1022,1025 **** --- 1031,1036 ---- Interface i=getInterface(iid); int n1; + //XXX optim: if we had a BitVector i.hasApprox, + // this could be faster. for(int node=0; node<n; node++) if((n1=i.getApprox(node))!=BitVector.UNDEFINED_INDEX) *************** *** 1028,1031 **** --- 1039,1043 ---- // is implementors OK ? // or should not we compute rigidImplementors first ? + //XXX optim: use i.implementors.getXXXbit to find p candidates if(i.implementors.get(p) && leq.get(node,p)) *************** *** 1039,1043 **** "interface "+interfaceToString(iid)+"\n"+ this); ! else ; else if(!leq.get(n1,p)) --- 1051,1055 ---- "interface "+interfaceToString(iid)+"\n"+ this); ! else /* Nothing to do. Cool! */ ; else if(!leq.get(n1,p)) *************** *** 1054,1058 **** } } - if(changed) leq.closure(); --- 1066,1069 ---- |
From: <bo...@us...> - 2003-06-02 17:43:45
|
Update of /cvsroot/nice/Nice/testsuite/compiler/typing In directory sc8-pr-cvs1:/tmp/cvs-serv26672/testsuite/compiler/typing Modified Files: abstractInterfaces.testsuite Log Message: Interfaces can now implement (finally or not) abstract interfaces. Do not fail anymore when there is ambiguity about the approximation of a class relatively to a certain abstract interface. There is just no approximation in that case. This is important, since it could have been awkward to solve that failure. Index: abstractInterfaces.testsuite =================================================================== RCS file: /cvsroot/nice/Nice/testsuite/compiler/typing/abstractInterfaces.testsuite,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** abstractInterfaces.testsuite 14 May 2003 14:40:26 -0000 1.3 --- abstractInterfaces.testsuite 2 Jun 2003 17:43:10 -0000 1.4 *************** *** 49,50 **** --- 49,97 ---- f(x@B) { A res = new B(); return res; } + /// PASS + /// Toplevel + // We now accept that there are two incomparable nodes that implement + // an abstract interface, abive a node that could approximate for that + // interface. There is just no approximation in that case. + abstract interface I {} + + interface A implements I {} + interface B finally implements I {} + class X implements A,B {} + + /// FAIL + /// Toplevel + // We now accept that there are two incomparable nodes that implement + // an abstract interface, abive a node that could approximate for that + // interface. There is just no approximation in that case. + abstract interface I { alike foo(); } + + interface A implements I {} + interface B finally implements I {} + + class X implements A,B {} + + var B b = new X(); + + foo(x@X) = b; + + /// PASS + /// Toplevel + // This case requires multiple applications of the Abs axiom, the second + // being valid after the first one is applied. Therefore, it illustrates + // the need to repeat applying Abs until nothing changed. + abstract interface I1 {} + abstract interface I2 {} + + interface Root implements I1,I2 {} + + interface B extends Root finally implements I2 {} + class C implements B {} + + class A implements Root finally implements I1 {} + class A1 extends A implements B {} + + <I1 T | T : I2> T f(T); + f(x) = x; + f(x@C) = new A(); + |
From: <bo...@us...> - 2003-06-02 17:43:21
|
Update of /cvsroot/nice/Nice/src/bossa/parser In directory sc8-pr-cvs1:/tmp/cvs-serv26672/src/bossa/parser Modified Files: Parser.jj Log Message: Interfaces can now implement (finally or not) abstract interfaces. Do not fail anymore when there is ambiguity about the approximation of a class relatively to a certain abstract interface. There is just no approximation in that case. This is important, since it could have been awkward to solve that failure. Index: Parser.jj =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/parser/Parser.jj,v retrieving revision 1.175 retrieving revision 1.176 diff -C2 -d -r1.175 -r1.176 *** Parser.jj 29 May 2003 08:41:16 -0000 1.175 --- Parser.jj 2 Jun 2003 17:43:13 -0000 1.176 *************** *** 1017,1021 **** List l; List typeParametersVariances = new ArrayList(0); ! boolean isFinal=false, isAbstract=false, isInterface=false; } { --- 1017,1021 ---- List l; List typeParametersVariances = new ArrayList(0); ! List imp = null, abs = null; } { *************** *** 1026,1033 **** parameters=classTypeParameters(typeParametersVariances) { List ext = null; } ! [ ext = extensions() ] { res = ClassDefinition.makeInterface ! (name, parameters, typeParametersVariances, ext); } | [ "final" { isFinal=true; } | "abstract" { isAbstract=true; } --- 1026,1036 ---- parameters=classTypeParameters(typeParametersVariances) { List ext = null; } ! [ "extends" ext = interfaces() ] ! [ "implements" imp=interfaces() ] ! [ "finally" "implements" abs=interfaces() ] { res = ClassDefinition.makeInterface ! (name, parameters, typeParametersVariances, ext, imp, abs); } | + { boolean isFinal=false, isAbstract=false; } [ "final" { isFinal=true; } | "abstract" { isAbstract=true; } *************** *** 1037,1041 **** parameters=classTypeParameters(typeParametersVariances) ! { TypeIdent sup = null; List imp = null, abs = null; } [ "extends" sup = superClass() ] --- 1040,1044 ---- parameters=classTypeParameters(typeParametersVariances) ! { TypeIdent sup = null; } [ "extends" sup = superClass() ] |
From: <bo...@us...> - 2003-06-02 17:43:21
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv26672/src/bossa/syntax Modified Files: ClassDefinition.java Log Message: Interfaces can now implement (finally or not) abstract interfaces. Do not fail anymore when there is ambiguity about the approximation of a class relatively to a certain abstract interface. There is just no approximation in that case. This is important, since it could have been awkward to solve that failure. Index: ClassDefinition.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/ClassDefinition.java,v retrieving revision 1.92 retrieving revision 1.93 diff -C2 -d -r1.92 -r1.93 *** ClassDefinition.java 29 May 2003 14:17:17 -0000 1.92 --- ClassDefinition.java 2 Jun 2003 17:43:12 -0000 1.93 *************** *** 31,38 **** Constraint typeParameters, List typeParametersVariances, ! List extensions) { return new Interface(name, typeParameters, typeParametersVariances, ! extensions); } --- 31,39 ---- Constraint typeParameters, List typeParametersVariances, ! List extensions, ! List implementations, List abstractions) { return new Interface(name, typeParameters, typeParametersVariances, ! extensions, implementations, abstractions); } *************** *** 41,47 **** Interface(LocatedString name, Constraint typeParameters, List typeParametersVariances, ! List extensions) { ! super(name, typeParameters, typeParametersVariances); this.extensions = extensions; --- 42,50 ---- Interface(LocatedString name, Constraint typeParameters, List typeParametersVariances, ! List extensions, ! List implementations, List abstractions) { ! super(name, typeParameters, typeParametersVariances, ! implementations, abstractions); this.extensions = extensions; *************** *** 94,98 **** catch(KindingEx e){ User.error(name, ! "Class " + name + " cannot extend " + e.t2 + ": they do not have the same number or kind of type parameters"); } --- 97,101 ---- catch(KindingEx e){ User.error(name, ! "Interface " + name + " cannot extend " + e.t2 + ": they do not have the same number or kind of type parameters"); } *************** *** 105,109 **** catch(KindingEx e){ User.error(name, ! "Class " + name + " cannot extend " + e.t2 + ": they do not have the same number or kind of type parameters"); } --- 108,112 ---- catch(KindingEx e){ User.error(name, ! "Interface " + name + " cannot extend " + e.t2 + ": they do not have the same number or kind of type parameters"); } *************** *** 112,117 **** } catch(TypingEx e){ ! User.error(name, "Error in class " + name + " : " + e.getMessage()); } } --- 115,122 ---- } catch(TypingEx e){ ! User.error(name, "Error in interface " + name + " : " + e.getMessage()); } + + super.createContext(); } *************** *** 188,192 **** ) { ! super(name, typeParameters, typeParametersVariances); this.isFinal = isFinal; --- 193,198 ---- ) { ! super(name, typeParameters, typeParametersVariances, ! implementations, abstractions); this.isFinal = isFinal; *************** *** 194,199 **** this.superClassIdent = superClassIdent; - this.implementations = implementations; - this.abstractions = abstractions; this.createTC(); --- 200,203 ---- *************** *** 255,273 **** } - impl = this.resolveInterfaces(implementations); - abs = TypeIdent.resolveToItf(typeScope, abstractions); - - implementations = null; - abstractions = null; - - // Resolve the super-interfaces first. - if (impl != null) - for (int i = 0; i < impl.length; i++) - { - ClassDefinition d = ClassDefinition.get(impl[i].associatedTC()); - if (d != null) - d.resolve(); - } - super.resolveClass(); } --- 259,262 ---- *************** *** 296,319 **** ": they do not have the same number or kind of type parameters"); } - - if (impl != null) - try{ - Typing.assertImp(tc, impl, true); - } - catch(KindingEx e){ - User.error(name, - "Class " + name + " cannot implement " + e.t2 + - ": they do not have the same number or kind of type parameters"); - } - - if (abs != null) - { - Typing.assertImp(tc, abs, true); - Typing.assertAbs(tc, abs); - } } catch(TypingEx e){ User.error(name, "Error in class " + name + " : " + e.getMessage()); } } --- 285,294 ---- ": they do not have the same number or kind of type parameters"); } } catch(TypingEx e){ User.error(name, "Error in class " + name + " : " + e.getMessage()); } + + super.createContext(); } *************** *** 332,341 **** } - protected List - /* of Interface */ implementations, - /* of Interface */ abstractions; TypeIdent superClassIdent; TypeConstructor superClass; - mlsub.typing.Interface[] impl, abs; protected boolean isFinal; --- 307,312 ---- *************** *** 352,360 **** public ClassDefinition(LocatedString name, Constraint typeParameters, ! List typeParametersVariances) { super(name, Node.upper, typeParameters, typeParametersVariances); } void createTC() { --- 323,340 ---- public ClassDefinition(LocatedString name, Constraint typeParameters, ! List typeParametersVariances, ! List implementations, List abstractions ! ) { super(name, Node.upper, typeParameters, typeParametersVariances); + this.implementations = implementations; + this.abstractions = abstractions; } + protected List + /* of Interface */ implementations, + /* of Interface */ abstractions; + mlsub.typing.Interface[] impl, abs; + void createTC() { *************** *** 511,514 **** --- 491,508 ---- void resolveClass() { + impl = this.resolveInterfaces(implementations); + abs = TypeIdent.resolveToItf(typeScope, abstractions); + + implementations = abstractions = null; + + // Resolve the super-interfaces first. + if (impl != null) + for (int i = 0; i < impl.length; i++) + { + ClassDefinition d = ClassDefinition.get(impl[i].associatedTC()); + if (d != null) + d.resolve(); + } + createContext(); implementation.resolveClass(); *************** *** 597,601 **** ****************************************************************/ ! abstract void createContext(); /**************************************************************** --- 591,617 ---- ****************************************************************/ ! void createContext() ! { ! try { ! if (impl != null) ! try{ ! Typing.assertImp(tc, impl, true); ! } ! catch(KindingEx e){ ! User.error(name, ! "Class " + name + " cannot implement " + e.t2 + ! ": they do not have the same number or kind of type parameters"); ! } ! ! if (abs != null) ! { ! Typing.assertImp(tc, abs, true); ! Typing.assertAbs(tc, abs); ! } ! } ! catch(TypingEx e){ ! User.error(name, "Error in " + name + " : " + e.getMessage()); ! } ! } /**************************************************************** |
From: <ar...@us...> - 2003-06-01 10:45:27
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1:/tmp/cvs-serv13891/F:/nice/src/bossa/syntax Modified Files: FunExp.java Pattern.java Log Message: Don't print deprecated syntax to package.nicei files. Index: FunExp.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/FunExp.java,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** FunExp.java 22 May 2003 12:34:48 -0000 1.41 --- FunExp.java 1 Jun 2003 10:45:23 -0000 1.42 *************** *** 136,140 **** (constraint == null ? mlsub.typing.Constraint.toString(cst) : constraint.toString()) ! + "fun (" + Util.map("",", ","",formals) + ") => " --- 136,140 ---- (constraint == null ? mlsub.typing.Constraint.toString(cst) : constraint.toString()) ! + "(" + Util.map("",", ","",formals) + ") => " Index: Pattern.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/Pattern.java,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** Pattern.java 28 May 2003 12:57:26 -0000 1.47 --- Pattern.java 1 Jun 2003 10:45:24 -0000 1.48 *************** *** 387,394 **** { if (atNull()) ! return "@null"; if (atAny()) return "@_"; ! if (atBool() || atIntValue) return "@" + atValue.toString(); StringBuffer res = new StringBuffer(); --- 387,396 ---- { if (atNull()) ! return "null"; if (atAny()) return "@_"; ! if (atBool()) ! return atValue.toString(); ! if (atIntValue) return "@" + atValue.toString(); StringBuffer res = new StringBuffer(); |
From: <bo...@us...> - 2003-05-31 17:42:48
|
Update of /cvsroot/nice/Nice/debian In directory sc8-pr-cvs1:/tmp/cvs-serv8339/debian Modified Files: changelog Log Message: Include 'package.nicei' in a generated archive file, so that the archive can be used to distributed a library. Index: changelog =================================================================== RCS file: /cvsroot/nice/Nice/debian/changelog,v retrieving revision 1.166 retrieving revision 1.167 diff -C2 -d -r1.166 -r1.167 *** changelog 29 May 2003 17:40:52 -0000 1.166 --- changelog 31 May 2003 17:42:45 -0000 1.167 *************** *** 1,2 **** --- 1,9 ---- + nice (0.9.0) unstable; urgency=low + + * Archives (generated with the -a option) can now be used to distribute + Nice libraries. + + -- + nice (0.8) unstable; urgency=low |
From: <bo...@us...> - 2003-05-31 17:31:52
|
Update of /cvsroot/nice/Nice/src/bossa/modules In directory sc8-pr-cvs1:/tmp/cvs-serv2995/src/bossa/modules Modified Files: DirectoryCompiledContent.java Log Message: Include 'package.nicei' in a generated archive file, so that the archive can be used to distributed a library. Index: DirectoryCompiledContent.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/modules/DirectoryCompiledContent.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** DirectoryCompiledContent.java 3 May 2002 10:05:53 -0000 1.6 --- DirectoryCompiledContent.java 31 May 2003 17:31:49 -0000 1.7 *************** *** 126,130 **** public boolean accept(File f) { ! String name = f.getPath(); return name.endsWith(".class") && (wantDispatch || dispatchFile.compareTo(f) != 0) --- 126,134 ---- public boolean accept(File f) { ! String name = f.getName(); ! ! if (name.equals("package.nicei")) ! return true; ! return name.endsWith(".class") && (wantDispatch || dispatchFile.compareTo(f) != 0) |
From: <bo...@us...> - 2003-05-31 17:30:42
|
Update of /cvsroot/nice/Nice/src/bossa/modules In directory sc8-pr-cvs1:/tmp/cvs-serv2413/src/bossa/modules Modified Files: Package.java Log Message: Make sure that 'fun.class' is always generated, since it is currently required for a compiled package to be recognised. Index: Package.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/modules/Package.java,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -d -r1.87 -r1.88 *** Package.java 30 Apr 2003 19:39:04 -0000 1.87 --- Package.java 31 May 2003 17:30:39 -0000 1.88 *************** *** 339,342 **** --- 339,348 ---- return res; + if (compiling()) + // Force generation of the package class. + // We might not need to do that forever, but at the moment, a compiled + // package is ignored when "fun.class" is missing. + getImplementationClass(); + // The implementation class is null if this package was up-to-date. if (implementationClass != null) |
From: <bo...@us...> - 2003-05-30 13:10:38
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv18376 Modified Files: Makefile Log Message: Changed the order in which files are sent, to minimize inconsistencies. Index: Makefile =================================================================== RCS file: /cvsroot/nice/Nice/web/Makefile,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Makefile 1 May 2003 13:30:07 -0000 1.10 --- Makefile 30 May 2003 12:07:55 -0000 1.11 *************** *** 17,21 **** send: all ! scp -r *.html *.pdf *.ps *.css .htaccess images bo...@sh...:/home/groups/n/ni/nice/htdocs old: safety.html --- 17,21 ---- send: all ! scp -r *.css *.html .htaccess images *.pdf *.ps bo...@sh...:/home/groups/n/ni/nice/htdocs old: safety.html |
From: <bo...@us...> - 2003-05-30 12:31:29
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv17301 Modified Files: manual.xml language.html Log Message: Clarified the terminology: we should always use "to declare and to implement" a method, and "a method declaration, a method implementation". The tutorial used to say "to declare and to define" (which is easier to confuse) and "a method declaration, a method alternative". If these uses stay somewhere, they should be updated. Changed the order, to first present everything about methods, and then move to advanced typing (parametric classes, precise types). Added a link to the new tutorial in wiki about methods. Removed advanced things about interfacing with Java. This does not belong to the tutorial, and is covered in the manual (added a link). Added link to the roadmap, about visibility modifiers. Index: manual.xml =================================================================== RCS file: /cvsroot/nice/Nice/web/manual.xml,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** manual.xml 28 Apr 2003 21:53:59 -0000 1.19 --- manual.xml 30 May 2003 12:06:07 -0000 1.20 *************** *** 936,940 **** </chapter> ! <chapter><title>Interfacing with Java</title> <section><title>Using Java from Nice</title> <para> --- 936,940 ---- </chapter> ! <chapter id="interfacingWithJava"><title>Interfacing with Java</title> <section><title>Using Java from Nice</title> <para> Index: language.html =================================================================== RCS file: /cvsroot/nice/Nice/web/language.html,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** language.html 27 Apr 2003 20:21:33 -0000 1.19 --- language.html 30 May 2003 12:06:07 -0000 1.20 *************** *** 47,62 **** </PRE> <p>Note that <tt>String display(); </tt><b>declares</b> a method, that ! is informs that this method exists. Now we have to <b>define</b> it, that is tell what code is to be executed, depending on the runtime type of the person (in this short example either <tt>Person</tt> or <tt>Worker</tt>). <br> ! <h2>Defining methods</h2> ! Method definitions are placed outside of classes. Their order does not matter ! at all. The definitions of a single method may even occur in several files ! (this is not a flaw, it's an important feature that allows modularity). ! <p>So after the two above class definitions, we define two <b>alternatives</b> ! for method <tt>display </tt>: <PRE> <FONT COLOR="#cd0000">display</FONT>(p<FONT COLOR="#0000ee">@</FONT><FONT COLOR="#b7860b">Person</FONT>) --- 47,63 ---- </PRE> <p>Note that <tt>String display(); </tt><b>declares</b> a method, that ! is informs that this method exists. Now we have to <b>implement</b> it, that is tell what code is to be executed, depending on the runtime type of the person (in this short example either <tt>Person</tt> or <tt>Worker</tt>). <br> ! <h2>Implementing methods</h2> ! Method implementations can be placed outside of classes. ! Their order does not matter. ! The implementations of a single method may even occur in several files ! (this is an important feature that allows modularity). ! <p>So after the two above class definitions, we write two ! <b>implementations</b> for method <tt>display</tt>: <PRE> <FONT COLOR="#cd0000">display</FONT>(p<FONT COLOR="#0000ee">@</FONT><FONT COLOR="#b7860b">Person</FONT>) *************** *** 70,130 **** } </PRE> - <br> - <h2>Parametric classes</h2> - - Classes and interfaces can have type parameters. For example, the <tt>Collection</tt> - interface is parametrized by the type of its elements: - <p> - <PRE> - <FONT COLOR="#0000ee">interface</FONT> <FONT COLOR="#cd0000">Collection</FONT><T> - { - ... - } - </PRE> - <p>If a class (resp. interface) has type parameters, then all its sub-classes - (resp. sub-interfaces and implementing classes) must have the same type - parameters. - <p> - <PRE> - <FONT COLOR="#0000ee">class</FONT> <FONT COLOR="#cd0000">LinkedList</FONT><T> <FONT COLOR="#0000ee">implements</FONT> <FONT COLOR="#b7860b">Collection<T> </FONT> - { - <FONT COLOR="#b7860b">T </FONT><FONT COLOR="#cd0000">head</FONT>; - <FONT COLOR="#b7860b">LinkedList<T> </FONT><FONT COLOR="#cd0000">tail</FONT>; - } - </PRE> - <p>A consequence of this rule is that there is no class (like <tt>Object</tt> - in Java) that is an ancestor of all classes. There could not be, since - all classes do not have the same number of type parameters. - <br>However, it is possible to express that a method takes arguments of - any type. For instance the <tt>equals</tt> method is declared in Nice: - <br> - <PRE> - <<FONT COLOR="#b7860b">Any T</FONT>> <FONT COLOR="#b7860b">boolean</FONT> <FONT COLOR="#cd0000">equals</FONT>(<FONT COLOR="#b7860b">T</FONT>, <FONT COLOR="#b7860b">T</FONT>); - </PRE> - <p> - One can read this as - "for Any type T, the method <tt>equals</tt> takes two objects of type T, - and returns a boolean". - <p>Thanks to the usual subsumption rule, this type makes it possible to - call <tt>equals</tt> with arguments of different type, - as long as they are compatible (have a common super type). - For instance, it's legal to use <tt>equals</tt> to compare expressions - of type <tt>Collection<int></tt> and <tt>LinkedList<int></tt>, - while it is not with types <tt>Collection<String></tt> and <tt>String</tt>. - <p>This approach is more sensible than Java's one, where the laters would - be allowed and would always return false (not even raising a runtime error), - while it is very likely a bug to compare a collection of strings to a string. - <p>Note that it is also possible to define a function that takes two unrelated - and unconstrained types. So it would be possible to define <tt>equals</tt> - to have the same typing behaviour it has in Java: - <br><PRE><<FONT COLOR="#b7860b">Any T</FONT>, <FONT COLOR="#b7860b">Any U</FONT>> <FONT COLOR="#b7860b">boolean</FONT> <FONT COLOR="#cd0000">equals</FONT>(<FONT COLOR="#b7860b">T</FONT>, <FONT COLOR="#b7860b">U</FONT>);</PRE> <br> <h2>Multiple dispatch</h2> ! In Nice, the choice of the method alternative is made at run-time, based ! on <b>all</b> parameters (in java, only the first, implicit parameter is ! used to choose the alternative). Such methods are thus called <b>multi-methods</b>. <p> --- 71,82 ---- } </PRE> <br> <h2>Multiple dispatch</h2> ! In Nice, the choice of the method implementation is made at run-time, based ! on <b>all</b> parameters (in java, only the implicit parameter ! <tt>this</tt> is used to choose the alternative). Such methods are thus called <b>multi-methods</b>. <p> *************** *** 193,198 **** --- 145,209 ---- alternative to the <b>Visitor Pattern</b>. <a href="visitor.html">This solution is presented in a full example</a>. + + <p> + + There is a + <a + href="http://nice.sourceforge.net/cgi-bin/twiki/view/Doc/FunctionsAndMethods"> + more detailed introduction to methods in Nice</a> on the wiki. + + <br> + <br> + <h2>Parametric classes</h2> + + Classes and interfaces can have type parameters. For example, the <tt>Collection</tt> + interface is parametrized by the type of its elements: + <p> + <PRE> + <FONT COLOR="#0000ee">interface</FONT> <FONT COLOR="#cd0000">Collection</FONT><T> + { + ... + } + </PRE> + <p>If a class (resp. interface) has type parameters, then all its sub-classes + (resp. sub-interfaces and implementing classes) must have the same type + parameters. + <p> + <PRE> + <FONT COLOR="#0000ee">class</FONT> <FONT COLOR="#cd0000">LinkedList</FONT><T> <FONT COLOR="#0000ee">implements</FONT> <FONT COLOR="#b7860b">Collection<T> </FONT> + { + <FONT COLOR="#b7860b">T </FONT><FONT COLOR="#cd0000">head</FONT>; + <FONT COLOR="#b7860b">LinkedList<T> </FONT><FONT COLOR="#cd0000">tail</FONT>; + } + </PRE> + <p>A consequence of this rule is that there is no class (like <tt>Object</tt> + in Java) that is an ancestor of all classes. There could not be, since + all classes do not have the same number of type parameters. + <br>However, it is possible to express that a method takes arguments of + any type. For instance the <tt>equals</tt> method is declared in Nice: + <br> + <PRE> + <<FONT COLOR="#b7860b">Any T</FONT>> <FONT COLOR="#b7860b">boolean</FONT> <FONT COLOR="#cd0000">equals</FONT>(<FONT COLOR="#b7860b">T</FONT>, <FONT COLOR="#b7860b">T</FONT>); + </PRE> + <p> + One can read this as + "for Any type T, the method <tt>equals</tt> takes two objects of type T, + and returns a boolean". + <p>Thanks to the usual subsumption rule, this type makes it possible to + call <tt>equals</tt> with arguments of different type, + as long as they are compatible (have a common super type). + For instance, it's legal to use <tt>equals</tt> to compare expressions + of type <tt>Collection<int></tt> and <tt>LinkedList<int></tt>, + while it is not with types <tt>Collection<String></tt> and <tt>String</tt>. + <p>This approach is more sensible than Java's one, where the laters would + be allowed and would always return false (not even raising a runtime error), + while it is very likely a bug to compare a collection of strings to a string. + <p>Note that it is also possible to define a function that takes two unrelated + and unconstrained types. So it would be possible to define <tt>equals</tt> + to have the same typing behaviour it has in Java: + <br><PRE><<FONT COLOR="#b7860b">Any T</FONT>, <FONT COLOR="#b7860b">Any U</FONT>> <FONT COLOR="#b7860b">boolean</FONT> <FONT COLOR="#cd0000">equals</FONT>(<FONT COLOR="#b7860b">T</FONT>, <FONT COLOR="#b7860b">U</FONT>);</PRE> + <h2>Precise types</h2> *************** *** 330,335 **** <h2>Instructions and expressions</h2> ! The code of a method alternative, that goes between <tt>{</tt> and <tt>}</tt>, ! can be virtually any legal Java code. <br>Here is a list of the differences: <center><b>Missing constructs</b></center> --- 341,346 ---- <h2>Instructions and expressions</h2> ! The code of a method implementation, that goes between <tt>{</tt> and ! <tt>}</tt>, can be almost any legal Java code. <br>Here is a list of the differences: <center><b>Missing constructs</b></center> *************** *** 346,350 **** <b>Visibility modifiers</b> (<tt>public, private</tt>) are accepted for class members, but are currently ignored. There is no theoretical problem ! to add visibility modifiers. This is future work to handle them.</li> </ul> --- 357,363 ---- <b>Visibility modifiers</b> (<tt>public, private</tt>) are accepted for class members, but are currently ignored. There is no theoretical problem ! to add visibility modifiers. We are <a ! href="roadmap.html">planning</a> ! to support them before version <tt>1.0</tt>.</li> </ul> *************** *** 373,377 **** <li> ! <b>Functional-like syntax for method definitions</b>. One can write <tt>f(x@P) = e; </tt>as an equivalent form for <tt>f(x@p) { return e; }</tt>. This is very handy when defining methods that return simple values, depending --- 386,390 ---- <li> ! <b>Functional-like syntax for method implementations</b>. One can write <tt>f(x@P) = e; </tt>as an equivalent form for <tt>f(x@p) { return e; }</tt>. This is very handy when defining methods that return simple values, depending *************** *** 440,471 **** <br><tt>}</tt> <br> ! <p>However, one might want to explicitely import methods to give them a ! more precise type (to benefit from parametric types for instance). Here ! is a more sophisticated example for the <tt>java.util.Map</tt> interface: ! <p><tt>interface Map<Key,Element> = native java.util.Map;</tt> ! <p><tt><Any Key, Any Element> Element get(Map<Key,Element>, Key) ! =</tt> ! <br><tt> native Object java.util.Map.get(Object);</tt> ! <br><br> ! Retyping can be more complex in practice but the java.util package is ! already retyped in the compiler so you don't have to worry about it. ! <br> ! <p>Calling Nice code from Java is also possible. ! When calling a Nice method <tt>m</tt> declared in package ! <tt>my.package</tt>, the call in Java must be ! <tt>my.package.dispatch.m(...)</tt>. Of course the ! <tt>my.package</tt> part can be omitted if that package ! has been imported. ! Calling a Nice function is similar, replacing <tt>dispatch</tt> ! by <tt>fun</tt>. ! Nice classes can be created normally from Java using <tt>new</tt>. ! The constructor expects the initial value of all fields, given in the ! order they are defined (starting with fields from super-classes). <br> <h2>What else?</h2> ! A few advanced features are missing from this tutorial: ! constructors, abstract interfaces, general constraints, final implementation. <h2>General information about Nice : --- 453,467 ---- <br><tt>}</tt> <br> ! <p> ! More advanced usage is described in the ! <a href="manual.html#interfacingWithJava">corresponding section ! of the User's manual</a>: giving more precise types to Java methods, ! calling Nice code from a Java program, ... <br> <h2>What else?</h2> ! For a more complete description of the language, see ! <a href="manual.html">the User's manual</a>. <h2>General information about Nice : |
From: <bo...@us...> - 2003-05-30 11:49:04
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv628 Modified Files: roadmap.xml Log Message: Added links to Wiki pages that discuss the new features. Index: roadmap.xml =================================================================== RCS file: /cvsroot/nice/Nice/web/roadmap.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** roadmap.xml 10 May 2003 14:03:21 -0000 1.5 --- roadmap.xml 30 May 2003 11:38:29 -0000 1.6 *************** *** 36,44 **** <listitem> <para> ! Implement visibility modifiers (private, default, public). ! Improve the support for object creation, besides automatic constructors. ! A plugin to write Nice programs in <ulink url="http://www.eclipse.org">Eclipse ! </ulink> will likely be included. ! Finish a first version of the User's manual. </para> --- 36,48 ---- <listitem> <para> ! Implement <ulink ! url="http://nice.sourceforge.net/cgi-bin/twiki/view/Dev/VisibilityModifiers"> ! visibility modifiers</ulink> (private, default, public). ! Improve the <ulink ! url="http://nice.sourceforge.net/cgi-bin/twiki/view/Dev/NiceConstructors"> ! support for object creation</ulink>, besides automatic constructors. ! A plugin to write Nice programs in <ulink url="http://www.eclipse.org"> ! Eclipse</ulink> will likely be included. ! Finish a first version of the <ulink url="manual.html">User's manual</ulink>. </para> |
From: <bo...@us...> - 2003-05-30 11:48:51
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv32599 Modified Files: new.xsl Log Message: Put link to the Dev wiki in development. Index: new.xsl =================================================================== RCS file: /cvsroot/nice/Nice/web/new.xsl,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** new.xsl 10 May 2003 14:02:37 -0000 1.8 --- new.xsl 30 May 2003 11:37:46 -0000 1.9 *************** *** 133,140 **** <td bgcolor="#ffffff"> <span class="small">o</span><xsl:text> </xsl:text> ! <!-- <a class="nav" href="Wiki">Collaborative site (Wiki)</a>--> ! <span class="nav">Wiki </span> ! <a class="nav" href="/cgi-bin/twiki/view/Dev/WebHome">Dev</a> ! <a class="nav" href="/cgi-bin/twiki/view/Doc/WebHome">Doc</a> <br /> <span class="small">o</span><xsl:text> </xsl:text> --- 133,138 ---- <td bgcolor="#ffffff"> <span class="small">o</span><xsl:text> </xsl:text> ! <a class="nav" href="/cgi-bin/twiki/view/Doc/WebHome"> ! Collaborative site (Wiki)</a> <br /> <span class="small">o</span><xsl:text> </xsl:text> *************** *** 150,154 **** <br /> <span class="small">o</span><xsl:text> </xsl:text> ! <a class="nav" href="http://sourceforge.net/project/filemodule_monitor.php?filemodule_id=11365">Be notified of new versions</a> <br /> <span class="small">o</span><xsl:text> </xsl:text> --- 148,152 ---- <br /> <span class="small">o</span><xsl:text> </xsl:text> ! <a class="nav" href="http://sourceforge.net/project/filemodule_monitor.php?filemodule_id=11365">Notify me of new versions</a> <br /> <span class="small">o</span><xsl:text> </xsl:text> *************** *** 181,184 **** --- 179,185 ---- <span class="small">o</span><xsl:text> </xsl:text> <a class="nav" href="tests.html">Tests</a> + <br /> + <span class="small">o</span><xsl:text> </xsl:text> + <a class="nav" href="/cgi-bin/twiki/view/Dev/WebHome">Wiki</a> <br /> <span class="small">o</span><xsl:text> </xsl:text> |
From: <bo...@us...> - 2003-05-30 01:34:26
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv10519/web Modified Files: .htaccess Log Message: Release 0.8 Index: .htaccess =================================================================== RCS file: /cvsroot/nice/Nice/web/.htaccess,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** .htaccess 10 May 2003 14:02:04 -0000 1.8 --- .htaccess 30 May 2003 01:34:22 -0000 1.9 *************** *** 1,5 **** Redirect /Wiki http://nice.sourceforge.net/cgi-bin/twiki/view ! Redirect /Nice.tar http://prdownloads.sourceforge.net/nice/Nice-0.7.9-unix.tar.gz ! Redirect /Nice.zip http://prdownloads.sourceforge.net/nice/Nice-0.7.9-windows.zip ! Redirect /nice.deb http://prdownloads.sourceforge.net/nice/nice_0.7.9_all.deb ! Redirect /nice.rpm http://prdownloads.sourceforge.net/nice/Nice-0.7.9-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.8-unix.tar.gz ! Redirect /Nice.zip http://prdownloads.sourceforge.net/nice/Nice-0.8-windows.zip ! Redirect /nice.deb http://prdownloads.sourceforge.net/nice/nice_0.8_all.deb ! Redirect /nice.rpm http://prdownloads.sourceforge.net/nice/Nice-0.8-1.noarch.rpm |
From: <bo...@us...> - 2003-05-29 23:26:59
|
Update of /cvsroot/nice/Nice/web In directory sc8-pr-cvs1:/tmp/cvs-serv5189/web Modified Files: Readme.txt Log Message: Updated the zip file name, the contact info, ... Index: Readme.txt =================================================================== RCS file: /cvsroot/nice/Nice/web/Readme.txt,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Readme.txt 17 Sep 2002 14:57:53 -0000 1.4 --- Readme.txt 29 May 2003 23:26:55 -0000 1.5 *************** *** 7,11 **** INSTALLATION STEPS ! 1. You should have downloaded a file Nice-X.Y.zip, where X.Y is the version of the compiler. The latest version of this file is always available at http://nice.sourceforge.net/Nice.zip --- 7,11 ---- INSTALLATION STEPS ! 1. You should have downloaded a file Nice-X.Y-windows.zip, where X.Y is the version of the compiler. The latest version of this file is always available at http://nice.sourceforge.net/Nice.zip *************** *** 32,37 **** The file nicec.html lists the command-line options of the compiler. ! It is recommended to use Emacs for windows to edit and compile programs. ! There are blends, both freely available: * NT Emacs http://www.gnu.org/software/emacs/windows/ * X Emacs http://www.xemacs.org/Download/win32/ --- 32,39 ---- The file nicec.html lists the command-line options of the compiler. ! It is recommended to use an IDE to edit and compile programs. ! A plugin for Eclipse is being worked on. ! For the moment, the best solution is to use Emacs for windows ! There are two blends, both freely available: * NT Emacs http://www.gnu.org/software/emacs/windows/ * X Emacs http://www.xemacs.org/Download/win32/ *************** *** 62,67 **** CONTACT ! If you experience any problem with Nice, in particular with the ! Windows installation, or if you can contribute information for this document, ! you should visit http://nice.sourceforge.net or email ! Daniel Bonniot: bo...@us... --- 64,68 ---- CONTACT ! For further information about Nice, visit http://nice.sourceforge.net ! In particular, if you need assistance with the Windows installation, or if you can contribute information for this document, you can use the nice-info mailing list, ! the forums, or email directly the main author Daniel Bonniot: bo...@us... |
From: <bo...@us...> - 2003-05-29 21:10:18
|
Update of /cvsroot/nice/Nice/bin In directory sc8-pr-cvs1:/tmp/cvs-serv14250/bin Modified Files: nicec.bat Log Message: Put a version with dos style line-endings (it got converted to unix style at version 1.7). With unix endings, the bat cannot be run on windows (at least on win98). Add an emacs file variable, to force the coding to dos, in case it gets changed again. Index: nicec.bat =================================================================== RCS file: /cvsroot/nice/Nice/bin/nicec.bat,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** nicec.bat 13 May 2003 13:58:45 -0000 1.9 --- nicec.bat 29 May 2003 21:10:14 -0000 1.10 *************** *** 1,43 **** ! @echo off ! rem --------------------------------------------------------------------------- ! rem nicec.bat - a nice compiler batch file ! rem ! rem Environment Variariable Prerequisites: ! rem ! rem NICE - the root directory where nice is installed ! rem --------------------------------------------------------------------------- ! ! rem -- do we have a nice environment variable? ! if not "%NICE%" == "" goto gotNice ! ! rem -- try some standard places ! ! set NICE=c:\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=c:\Program Files\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=c:\programs\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=d:\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=d:\Program Files\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=d:\programs\nice ! if exist %NICE%\nice.jar goto gotNice ! ! ! echo You must set the NICE environment variable to point to the directory you've installed nice in e.g. ! echo set NICE=C:\programs\nice ! echo (note: do not add a ';' at the end) ! echo You can do it by modifying Autoexec.bat or in the system settings. ! goto end ! ! :gotNice ! java -classpath %NICE%\nice.jar;%CLASSPATH% nice.tools.compiler.fun --runtime=%NICE%\nice.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 ! ! :end --- 1,47 ---- ! @echo off ! rem --------------------------------------------------------------------------- ! rem nicec.bat - a nice compiler batch file ! rem ! rem Environment Variariable Prerequisites: ! rem ! rem NICE - the root directory where nice is installed ! rem --------------------------------------------------------------------------- ! ! rem -- do we have a nice environment variable? ! if not "%NICE%" == "" goto gotNice ! ! rem -- try some standard places ! ! set NICE=c:\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=c:\Program Files\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=c:\programs\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=d:\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=d:\Program Files\nice ! if exist %NICE%\nice.jar goto gotNice ! ! set NICE=d:\programs\nice ! if exist %NICE%\nice.jar goto gotNice ! ! ! echo You must set the NICE environment variable to point to the directory you've installed nice in e.g. ! echo set NICE=C:\programs\nice ! echo (note: do not add a ';' at the end) ! echo You can do it by modifying Autoexec.bat or in the system settings. ! goto end ! ! :gotNice ! java -classpath %NICE%\nice.jar;%CLASSPATH% nice.tools.compiler.fun --runtime=%NICE%\nice.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 ! ! :end ! ! rem Local variables: ! rem coding:dos ! rem End: |
From: <bo...@us...> - 2003-05-29 18:33:25
|
Update of /cvsroot/nice/Nice/src/nice/tools/compiler In directory sc8-pr-cvs1:/tmp/cvs-serv26203/src/nice/tools/compiler Modified Files: main.nice Log Message: Yeah, it's 2003 now! :-) Index: main.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/nice/tools/compiler/main.nice,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** main.nice 22 Jan 2003 17:16:46 -0000 1.47 --- main.nice 29 May 2003 18:33:21 -0000 1.48 *************** *** 199,203 **** { println("Nice compiler version " + versionNumber + " (build " + buildDate + ")"); ! println("Copyright (C) 2002 Daniel Bonniot"); println("Visit the Nice homepage: http://nice.sourceforge.net"); System.exit(0); --- 199,203 ---- { println("Nice compiler version " + versionNumber + " (build " + buildDate + ")"); ! println("Copyright (C) 2003 Daniel Bonniot"); println("Visit the Nice homepage: http://nice.sourceforge.net"); System.exit(0); |