[Nice-commit] Nice/src/bossa/syntax ClassImplementation.java,NONE,1.1 javaclass.nice,NONE,1.1 Abstra
Brought to you by:
bonniot
From: Arjan B. <ar...@us...> - 2004-11-18 17:31:27
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24235/F:/nice/src/bossa/syntax Modified Files: AbstractInterfaceImplementation.java ClassDefinition.java NiceClass.java PrimitiveType.java niceclass.nice tools.nice Added Files: ClassImplementation.java javaclass.nice Removed Files: JavaClass.java Log Message: Converted JavaClass and extracted ClassImplementation. --- JavaClass.java DELETED --- Index: ClassDefinition.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/ClassDefinition.java,v retrieving revision 1.110 retrieving revision 1.111 diff -C2 -d -r1.110 -r1.111 *** ClassDefinition.java 6 Nov 2004 11:23:07 -0000 1.110 --- ClassDefinition.java 18 Nov 2004 17:31:15 -0000 1.111 *************** *** 905,918 **** } - abstract static class ClassImplementation - { - abstract void resolveClass(); - void resolveBody() {} - void typecheck() {} - void compile() {} - void recompile() {} - abstract void printInterface(java.io.PrintWriter s); - } - ClassImplementation implementation; --- 905,908 ---- --- NEW FILE: ClassImplementation.java --- /**************************************************************************/ /* N I C E */ /* A high-level object-oriented research language */ /* (c) Daniel Bonniot 2004 */ /* */ /* 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 bossa.syntax; public abstract class ClassImplementation { abstract void resolveClass(); void resolveBody() {} void typecheck() {} void compile() {} void recompile() {} abstract void printInterface(java.io.PrintWriter s); } Index: PrimitiveType.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/PrimitiveType.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** PrimitiveType.java 5 Aug 2004 19:01:18 -0000 1.13 --- PrimitiveType.java 18 Nov 2004 17:31:16 -0000 1.14 *************** *** 32,36 **** */ ! public class PrimitiveType extends ClassDefinition.ClassImplementation { public PrimitiveType(ClassDefinition definition) --- 32,36 ---- */ ! public class PrimitiveType extends ClassImplementation { public PrimitiveType(ClassDefinition definition) --- NEW FILE: javaclass.nice --- /**************************************************************************/ /* N I C E */ /* A high-level object-oriented research language */ /* (c) Daniel Bonniot 2004 */ /* */ /* 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 bossa.syntax; import bossa.util.*; /** A class definition which reflects an existing native java class. This is usefull when you want to add type parameters to an existing java class. */ public class JavaClass extends ClassImplementation { ClassDefinition definition; LocatedString javaName; boolean ignoredRetyping = false; { this.lookup(); } /** This must be called in a first pass, before bytecode types are implicitely loaded, so that the retyping is taken into account. */ private void lookup() { let classType = nice.tools.code.TypeImport.lookup(javaName); if (classType == null) { if (!definition.inInterfaceFile()) User.warning(javaName, javaName + " was not found in classpath so this retyping is ignored"); ignoredRetyping = true; return; } if (! (classType instanceof gnu.bytecode.ClassType)) throw User.error(definition, javaName + " is a primitive type"); // Check that we don't give a wrong arity to a generic class. int nativeArity = classType.getArity(); if (nativeArity != -1 && nativeArity != notNull(definition.tc).arity()) User.error(definition, javaName + " has " + nativeArity + " type parameters"); let old = JavaClasses.setTypeConstructorForJavaClass (definition.compilation(), definition.tc, classType); if (old != null) User.error(definition, javaName + " was already associated with the Nice class " + old); definition.setJavaType(classType); } resolveClass() { if (ignoredRetyping) return; JavaClasses.fetchMethods(definition.tc, cast(definition.getJavaType())); } printInterface(s) { s.print(" = native " + javaName.toString() + ";\n"); } } Index: tools.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/tools.nice,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** tools.nice 7 Nov 2004 01:07:26 -0000 1.59 --- tools.nice 18 Nov 2004 17:31:16 -0000 1.60 *************** *** 236,239 **** --- 236,241 ---- void printInterface(Definition, java.io.PrintWriter) = native void Definition.printInterface(java.io.PrintWriter); ?gnu.expr.Declaration getDeclaration(VarSymbol) = native gnu.expr.Declaration VarSymbol.getDeclaration(); + void printInterface(ClassImplementation, java.io.PrintWriter) = native void ClassImplementation.printInterface(java.io.PrintWriter); + ?gnu.bytecode.Type TypeImport_lookup(LocatedString) = native gnu.bytecode.Type nice.tools.code.TypeImport.lookup(LocatedString); // Retypings needed since java types are not strict. Index: NiceClass.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/NiceClass.java,v retrieving revision 1.92 retrieving revision 1.93 diff -C2 -d -r1.92 -r1.93 *** NiceClass.java 5 Nov 2004 14:57:57 -0000 1.92 --- NiceClass.java 18 Nov 2004 17:31:15 -0000 1.93 *************** *** 31,35 **** */ ! public abstract class NiceClass extends ClassDefinition.ClassImplementation { abstract public LocatedString getName(); --- 31,35 ---- */ ! public abstract class NiceClass extends ClassImplementation { abstract public LocatedString getName(); Index: niceclass.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/niceclass.nice,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** niceclass.nice 6 Nov 2004 00:28:17 -0000 1.3 --- niceclass.nice 18 Nov 2004 17:31:16 -0000 1.4 *************** *** 336,340 **** printInterface(s) { ! notNull(s).print(" {\n" + Util.map("", ";\n", ";\n", fields) + Util.map("", ";\n", ";\n", overrides) --- 336,340 ---- printInterface(s) { ! s.print(" {\n" + Util.map("", ";\n", ";\n", fields) + Util.map("", ";\n", ";\n", overrides) Index: AbstractInterfaceImplementation.java =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/AbstractInterfaceImplementation.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AbstractInterfaceImplementation.java 11 Oct 2004 16:21:06 -0000 1.8 --- AbstractInterfaceImplementation.java 18 Nov 2004 17:31:15 -0000 1.9 *************** *** 68,72 **** boolean isNiceClass = def != null && ! ! (def.getImplementation() instanceof JavaClass); if (!isNiceClass && interfaceITF.associatedTC() != null) --- 68,72 ---- boolean isNiceClass = def != null && ! (def.getImplementation() instanceof NiceClass); if (!isNiceClass && interfaceITF.associatedTC() != null) |