[kaffe] CVS kaffe-extras (guilhem): Downgraded to jikes-1.18 (jikes-1.19 fails to compile kjc).

Kaffe CVS Kaffe Mailing List <kaffe@kaffe.org>
Sat Apr 10 09:16:02 2004


PatchSet 33 
Date: 2004/04/10 16:15:46
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Downgraded to jikes-1.18 (jikes-1.19 fails to compile kjc).
Removed old patches and replaced them by a patch against current kopi's cvs merged with our own patches.
Added a script to filter the diff given by 'cvs diff': it contains incorrect $Id$ differences.

Members: 
	build.xml:1.17->1.18 
	patches/kjc-class-file-dir.diff:1.3->1.4(DEAD) 
	patches/kjc-initializers.diff:1.2->1.3(DEAD) 
	patches/kjc-inner-access.diff:1.1->1.2(DEAD) 
	patches/kjc-kaffe.diff:INITIAL->1.1 
	patches/kjc-method-access-nested.diff:1.2->1.3(DEAD) 
	patches/kjc-method-call.diff:1.4->1.5(DEAD) 
	patches/kjc-nested-class-loading.diff:1.1->1.2(DEAD) 
	patches/kjc-parser-ClassnameDotThis.diff:1.1->1.2(DEAD) 
	patches/kjc-static-init.diff:1.1->1.2(DEAD) 
	patches/kjc-string-concat-to-null.diff:1.1->1.2(DEAD) 
	patches/kjc-variable-propagation.diff:1.4->1.5(DEAD) 
	scripts/RemoveId.awk:INITIAL->1.1 

Index: kaffe-extras/build.xml
diff -u kaffe-extras/build.xml:1.17 kaffe-extras/build.xml:1.18
--- kaffe-extras/build.xml:1.17	Sat Mar 27 08:08:54 2004
+++ kaffe-extras/build.xml	Sat Apr 10 16:15:46 2004
@@ -24,7 +24,7 @@
 
   <!-- Jikes -->
 
-  <property name="jikes_ver" value="jikes-1.19"/>
+  <property name="jikes_ver" value="jikes-1.18"/>
   <property name="jikes_dir" location="${build_dir}/${jikes_ver}"/>
   <property name="jikes_tarball" value="${jikes_ver}.tar.bz2"/>
   <property name="jikes_unpacked_stamp" location="${timestamps_dir}/jikes-unpacked.stamp"/>
@@ -49,7 +49,7 @@
 	<exec executable="wget"
 		dir="${tarballs_dir}"
 		failonerror="true">
-		<arg line="ftp://www-126.ibm.com/pub/jikes/1.19/jikes-1.19.tar.bz2"/>
+		<arg line="ftp://www-126.ibm.com/pub/jikes/1.18/jikes-1.18.tar.bz2"/>
 	</exec>
   </target>
 
@@ -233,36 +233,9 @@
 	<move todir="${kjcsuite_dir}">
 		<fileset dir="${build_dir}/${kopi_ver}"/>
 	</move>
-	<patch patchfile="${patches_dir}/kjc-variable-propagation.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-method-access-nested.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-class-file-dir.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-nested-class-loading.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-method-call.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-inner-access.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-string-concat-to-null.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-parser-ClassnameDotThis.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-static-init.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
-	<patch patchfile="${patches_dir}/kjc-initializers.diff"
-		strip="1"
-		dir="${kjcsuite_dir}"/>
+	<patch patchfile="${patches_dir}/kjc-kaffe.diff"
+		strip="0"
+		dir="${kjcsuite_dir}/src"/>
 	<touch file="${kjcsuite_unpacked_stamp}"/>
   </target>
 
===================================================================
Checking out kaffe-extras/patches/kjc-class-file-dir.diff
RCS:  /home/cvs/kaffe/kaffe-extras/patches/Attic/kjc-class-file-dir.diff,v
VERS: 1.3
***************
--- kaffe-extras/patches/kjc-class-file-dir.diff	Sat Apr 10 16:15:51 2004
+++ /dev/null	Sun Aug  4 19:57:58 2002
@@ -1,115 +0,0 @@
-This patch modifies kjc so that it defaults to creating the .class files
-in the same directory as the .java file (as opposed to creating it in
-the current directory).
-
-This change makes the behaviour match the behaviour of Sun's javac (which
-the "javac" ant task depends on).  Fixing this enables the Jasper JSP
-engine to work (used by Tomcat and Jetty).
-
-This should be merged upstream.  If the upstream maintainer objects to
-changing the default behaviour, then I think it might make sense to
-add a "javac compatibility mode" that the ant task could use -- but
-that's more work.
-
-Cheers,
-
- - Jim
-
---- kopi-2.1B.orig/src/bytecode/classfile/ClassInfo.java	2002-07-15 20:53:29.000000000 +0200
-+++ kopi-2.1B.new/src/bytecode/classfile/ClassInfo.java	2003-07-31 10:05:18.000000000 +0200
-@@ -44,6 +44,8 @@
-   // CONSTRUCTORS
-   // --------------------------------------------------------------------
- 
-+	private String sourceDir;
-+
-   /**
-    * Constructs a class info structure.
-    *
-@@ -64,6 +66,7 @@
- 		   FieldInfo[] fields,
- 		   MethodInfo[] methods,
- 		   InnerClassInfo[] innerClasses,
-+		   String sourceDir,
- 		   String sourceFile,
-                    String genericSignature,
- 		   boolean deprecated,
-@@ -81,7 +84,11 @@
-     this.fields = fields;
-     this.methods = methods;
-     this.interfaces = interfaces;
--
-+    if (sourceDir == null || sourceDir.equals(""))
-+	this.sourceDir = ".";
-+    else
-+	this.sourceDir = sourceDir;
-+	
-     this.attributes = new AttributeList(innerClasses != null ? new InnerClassTable(innerClasses) : null,
- 					sourceFile != null ? new SourceFileAttribute(sourceFile) : null,
- 					genericSignature != null ? new SignatureAttribute(genericSignature) : null,
-@@ -111,6 +118,7 @@
- 		   Vector fields,
- 		   Vector methods,
- 		   InnerClassInfo[] innerClasses,
-+		   String sourceDir,
- 		   String sourceFile,
-                    String genericSignature,
- 		   boolean deprecated,
-@@ -123,6 +131,7 @@
- 	 (FieldInfo[])Utils.toArray(fields, FieldInfo.class),
- 	 (MethodInfo[])Utils.toArray(methods, MethodInfo.class),
- 	 innerClasses,
-+	 sourceDir,
- 	 sourceFile,
-          genericSignature,
- 	 deprecated,
-@@ -444,13 +453,14 @@
- //     if (destination != null && destination != "") {
- //       if (classPath[0] != null && classPath[0] != "") {
-     if (destination == null || destination.equals("")) {
--      destination = ".";
--    }
-- 
-+    	destination = sourceDir;
-+    } else {
-+   
-     if (classPath[0] != null && !classPath[0].equals("")) {
-       // the class is part of a package
-       destination += File.separator + classPath[0].replace('/', File.separatorChar);
-     }
-+    }
- 
-       // check that destination exists or else create it
-       File	destDir = new File(destination);
---- kopi-2.1B.orig/src/kjc/CSourceClass.java	2002-07-15 20:53:32.000000000 +0200
-+++ kopi-2.1B.new/src/kjc/CSourceClass.java	2003-07-31 09:48:32.000000000 +0200
-@@ -416,7 +416,7 @@
-   {
-     decl = null; // garbage
-     String[]	classPath = Utils.splitQualifiedName(getSourceFile(), File.separatorChar);
--
-+    
-     try {
-       ClassInfo	classInfo = new ClassInfo((short)(getModifiers() & (~ACC_STATIC)),
- 					  getQualifiedName(),
-@@ -425,6 +425,7 @@
- 					  genFields(factory),
- 					  genMethods(optimizer, factory),
- 					  genInnerClasses(),
-+					  classPath[0],
- 					  classPath[1],
-                                           getSuperClass() == null ? null : getGenericSignature(),
- 					  isDeprecated(),
-diff -ur kjc-suite-2.1B.jim/src/bytecode/ksm/Ksm.g kjc-suite-2.1B/src/bytecode/ksm/Ksm.g
---- kjc-suite-2.1B.jim/src/bytecode/ksm/Ksm.g   2002-07-15 11:53:29.000000000 -0700
-+++ kjc-suite-2.1B/src/bytecode/ksm/Ksm.g       2003-07-26 23:35:30.000000000 -0700
-@@ -152,6 +152,7 @@
- 			   fields,
- 			   methods,
- 			   null, /*!!!inner classes*/
-+			   ".",
- 			   sourceFile,
-                            genSignature, /* generic Signature*/
- 			   deprecated,
-
-
===================================================================
Checking out kaffe-extras/patches/kjc-initializers.diff
RCS:  /home/cvs/kaffe/kaffe-extras/patches/Attic/kjc-initializers.diff,v
VERS: 1.2
***************
--- kaffe-extras/patches/kjc-initializers.diff	Sat Apr 10 16:15:51 2004
+++ /dev/null	Sun Aug  4 19:57:58 2002
@@ -1,952 +0,0 @@
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/CBinaryField.java kjc-suite-2.1B.new/src/kjc/CBinaryField.java
---- kjc-suite-2.1B/src/kjc/CBinaryField.java	2002-07-15 20:53:31.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/CBinaryField.java	2004-02-13 21:23:15.000000000 +0100
-@@ -59,6 +59,7 @@
- 	setValue(createLiteral(factory, getType(), value));
-       }
-     }
-+    setAnalysed(true);
-   }
- 
-   public void checkTypes(CBinaryTypeContext context) throws UnpositionedError {
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/CBodyContext.java kjc-suite-2.1B.new/src/kjc/CBodyContext.java
---- kjc-suite-2.1B/src/kjc/CBodyContext.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/CBodyContext.java	2004-02-13 21:23:15.000000000 +0100
-@@ -55,6 +55,7 @@
-     flowState = parent.flowState;
-     variableInfo = new CVariableInfo(parent.getVariableInfo());
-     fieldInfo = new CVariableInfo(parent.getFieldInfo());
-+    fieldExtInfo = new CVariableExtInfo(parent.getFieldExtInfo());
-     throwables = parent.throwables;
-   }
- 
-@@ -71,6 +72,7 @@
-     flowState = 0;
-     variableInfo = new CVariableInfo(null);
-     fieldInfo = new CVariableInfo(parent.getFieldInfo());
-+    fieldExtInfo = new CVariableExtInfo(null);
-     throwables = parent.getThrowables();
-   }
- 
-@@ -86,6 +88,7 @@
-     variableInfo.createInfo();
-     fieldInfo = new CVariableInfo(source.getFieldInfo());
-     fieldInfo.createInfo();
-+    fieldExtInfo = new CVariableExtInfo(source.getFieldExtInfo());
-     throwables = parent.throwables;
-   }
- 
-@@ -436,6 +439,22 @@
-     return fieldInfo;
-   }
- 
-+  public int getFieldExtInfo(JFieldDeclaration field) {
-+    return fieldExtInfo.getInfo(field);
-+  }
-+  
-+  public CVariableExtInfo getFieldExtInfo() {
-+    return fieldExtInfo;
-+  }
-+
-+  public void setFieldExtInfo(JFieldDeclaration field, int info) {
-+    fieldExtInfo.setInfo(field, info);
-+  }
-+
-+  public void putFieldExtInfo(JFieldDeclaration field, int info) {
-+    fieldExtInfo.putInfo(field, info);
-+  }
-+
-   // ----------------------------------------------------------------------
-   // THROWABLES
-   // ----------------------------------------------------------------------
-@@ -547,5 +566,7 @@
-   private int			flowState;
-   private final CVariableInfo	variableInfo;
-   private final CVariableInfo	fieldInfo;
-+  private final CVariableExtInfo fieldExtInfo;
-+  
-   private Hashtable		throwables;
- }
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/CTryContext.java kjc-suite-2.1B.new/src/kjc/CTryContext.java
---- kjc-suite-2.1B/src/kjc/CTryContext.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/CTryContext.java	2004-02-13 21:23:15.000000000 +0100
-@@ -59,6 +59,13 @@
-   public void close(TokenReference ref) {
-   }
- 
-+  public void restoreThrowables(Hashtable throwables) {
-+    Enumeration elts = throwables.elements();
-+    
-+    while (elts.hasMoreElements())
-+      addThrowable((CThrowableInfo)elts.nextElement());
-+  }
-+
-   // ----------------------------------------------------------------------
-   // ACCESSORS
-   // ----------------------------------------------------------------------
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/CVariableExtInfo.java kjc-suite-2.1B.new/src/kjc/CVariableExtInfo.java
---- kjc-suite-2.1B/src/kjc/CVariableExtInfo.java	1970-01-01 01:00:00.000000000 +0100
-+++ kjc-suite-2.1B.new/src/kjc/CVariableExtInfo.java	2004-02-13 21:23:15.000000000 +0100
-@@ -0,0 +1,65 @@
-+/*
-+ * Copyright (C) 2004 Kaffe.org's developers
-+ *
-+ * 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.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+package at.dms.kjc;
-+
-+import java.util.Hashtable;
-+import java.util.Enumeration;
-+
-+public class CVariableExtInfo
-+{
-+	public CVariableExtInfo(CVariableExtInfo info)
-+	{
-+		if (info == null)
-+		  infos = new Hashtable();
-+		else {
-+		  if (info.infos == null)
-+		    info.infos = infos = new Hashtable();
-+		  else
-+		    infos = info.infos;
-+		}
-+	}
-+
-+	public final void setInfo(JFieldDeclaration field, int info)
-+	{
-+		infos.put(field, new Integer(EXIST | info));
-+	}
-+
-+	public final int getInfo(JFieldDeclaration field)
-+	{
-+		Integer i = (Integer) infos.get(field);
-+		
-+		if (i == null)
-+	          infos.put(field, i = new Integer(0));
-+		return i.intValue();
-+	}
-+
-+	public final void putInfo(JFieldDeclaration field, int info)
-+	{
-+		setInfo(field, getInfo(field) | info | EXIST);
-+	}
-+
-+	public Enumeration enumerateFields()
-+	{
-+		return (infos != null) ? infos.keys() : null;
-+	}
-+
-+	private Hashtable infos;
-+
-+	public static final int EXIST = 0x01;
-+	public static final int ANALYSED = 0x02;
-+}
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JAddExpression.java kjc-suite-2.1B.new/src/kjc/JAddExpression.java
---- kjc-suite-2.1B/src/kjc/JAddExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JAddExpression.java	2004-02-13 21:23:15.000000000 +0100
-@@ -81,6 +81,8 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
-+
-     check(context, left.getType(factory).getTypeID() != TID_VOID && right.getType(factory).getTypeID() != TID_VOID,
- 	  KjcMessages.ADD_BADTYPE, left.getType(factory), right.getType(factory));
- 
-@@ -93,13 +95,16 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     CReferenceType  stringType = context.getTypeFactory().createReferenceType(TypeFactory.RFT_STRING);
- 
-     // programming trick: no conversion for strings here: will be done in code generation
-     if (!type.equals(stringType)) {
-       left = left.convertType(context, type);
-       right = right.convertType(context, type);
--   }
-+    }
- 
-     if (left.isConstant() && right.isConstant()) {
-       if (type.equals(stringType)) {
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JAssignmentExpression.java kjc-suite-2.1B.new/src/kjc/JAssignmentExpression.java
---- kjc-suite-2.1B/src/kjc/JAssignmentExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JAssignmentExpression.java	2004-02-14 13:43:24.000000000 +0100
-@@ -99,6 +99,9 @@
-                                                  context.getEnvironment(), 
-                                                  false, 
-                                                  false));
-+    // Here, we expect it to be true in any case. But we never know.
-+    fully_analysed = right.isFullyAnalysed() && left.isFullyAnalysed();
-+
-     if (right instanceof JTypeNameExpression) {
-       check(context, false, KjcMessages.VAR_UNKNOWN, ((JTypeNameExpression)right).getQualifiedName());
-     }
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JBinaryExpression.java kjc-suite-2.1B.new/src/kjc/JBinaryExpression.java
---- kjc-suite-2.1B/src/kjc/JBinaryExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JBinaryExpression.java	2004-02-13 21:58:46.000000000 +0100
-@@ -46,6 +46,7 @@
-     super(where);
-     this.left = left;
-     this.right = right;
-+    this.fully_analysed = false;
-   }
- 
-   // ----------------------------------------------------------------------
-@@ -59,6 +60,20 @@
-     return type;
-   }
- 
-+  /**
-+   * @return true is the expression has been completely initialized.
-+   */
-+  public boolean isFullyAnalysed() {
-+    return fully_analysed;
-+  }
-+
-+  /**
-+   * @return true if the expression depends on the specified field.
-+   */
-+  public boolean dependsOnField(CField field) {
-+    return left.dependsOnField(field) || right.dependsOnField(field);
-+  }
-+
-   // ----------------------------------------------------------------------
-   // CODE GENERATION
-   // ----------------------------------------------------------------------
-@@ -120,4 +135,5 @@
-   protected	CType			type;
-   protected	JExpression		left;
-   protected	JExpression		right;
-+  protected	boolean			fully_analysed;
- }
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JBitwiseComplementExpression.java kjc-suite-2.1B.new/src/kjc/JBitwiseComplementExpression.java
---- kjc-suite-2.1B/src/kjc/JBitwiseComplementExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JBitwiseComplementExpression.java	2004-02-13 21:52:07.000000000 +0100
-@@ -62,7 +62,11 @@
- 
-     expr = expr.analyse(context);
-     check(context, expr.getType(factory).isOrdinal(), KjcMessages.UNARY_BADTYPE_BNOT, expr.getType(factory));
-+
-     type = CNumericType.unaryPromote(context, expr.getType(factory));
-+    if (!expr.isFullyAnalysed())
-+      return this;
-+
-     expr = expr.convertType(context, type);
- 
-     if (expr.isConstant()) {
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JBitwiseExpression.java kjc-suite-2.1B.new/src/kjc/JBitwiseExpression.java
---- kjc-suite-2.1B/src/kjc/JBitwiseExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JBitwiseExpression.java	2004-02-14 13:25:49.000000000 +0100
-@@ -67,6 +67,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     try {
-       type = computeType(context, left.getType(factory), right.getType(factory));
-@@ -74,6 +75,9 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     left = left.convertType(context, type);
-     right = right.convertType(context, type);
- 
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JClassDeclaration.java kjc-suite-2.1B.new/src/kjc/JClassDeclaration.java
---- kjc-suite-2.1B/src/kjc/JClassDeclaration.java	2004-02-14 13:55:21.000000000 +0100
-+++ kjc-suite-2.1B.new/src/kjc/JClassDeclaration.java	2004-02-13 21:23:15.000000000 +0100
-@@ -378,7 +378,7 @@
-    * Check that initializers are correct
-    * @exception	PositionedError	an error with reference to the source file
-    */
--  public void checkInitializers(CContext context) throws PositionedError {
-+  public boolean checkInitializers(CContext context) throws PositionedError {
-     self = new CClassContext(context, context.getEnvironment(), sourceClass, this);
- 
-     if (assertMethod != null) {
-@@ -386,21 +386,23 @@
-       assertMethod.checkBody1(self);
-     }
- 
--    compileStaticInitializer(self);
-+    boolean good = true; 
-+    good &= compileStaticInitializer(self);
- 
-     // Check inners
-     for (int i = inners.length - 1; i >= 0 ; i--) {
--      inners[i].checkInitializers(self);
-+      good &= inners[i].checkInitializers(self);
-     }
- 
--    super.checkInitializers(context);
-+    return good & super.checkInitializers(context);
-   }
- 
--  public void compileStaticInitializer(CClassContext context)
-+  public boolean compileStaticInitializer(CClassContext context)
-     throws PositionedError
-   {
-     if (statInit != null) {
--      statInit.checkInitializer(context);
-+      if (!statInit.checkInitializer(context))
-+	return false;
- 
-       // check that all final class fields are initialized
-       CField[]	classFields = context.getCClass().getFields();
-@@ -421,6 +423,7 @@
-       // mark all static fields initialized
-       self.markAllFieldToInitialized(true);
-     }
-+    return true;
-   }
- 
-   /**
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JCompilationUnit.java kjc-suite-2.1B.new/src/kjc/JCompilationUnit.java
---- kjc-suite-2.1B/src/kjc/JCompilationUnit.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JCompilationUnit.java	2004-02-13 21:23:15.000000000 +0100
-@@ -220,12 +220,14 @@
-    * @return	true iff sub tree is correct enought to check code
-    * @exception	PositionedError	an error with reference to the source file
-    */
--  public void checkInitializers(Compiler compiler, Vector classes) throws PositionedError {
-+  public boolean checkInitializers(Compiler compiler, Vector classes) throws PositionedError {
-     CCompilationUnitContext	context = new CCompilationUnitContext(compiler, environment, export, classes);
-+    boolean good = true;
- 
-     for (int i = 0; i < typeDeclarations.length ; i++) {
--      typeDeclarations[i].checkInitializers(context);
-+      good &= typeDeclarations[i].checkInitializers(context);
-     }
-+    return good;
-   }
- 
-   // ----------------------------------------------------------------------
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JCompoundAssignmentExpression.java kjc-suite-2.1B.new/src/kjc/JCompoundAssignmentExpression.java
---- kjc-suite-2.1B/src/kjc/JCompoundAssignmentExpression.java	2004-02-14 13:55:21.000000000 +0100
-+++ kjc-suite-2.1B.new/src/kjc/JCompoundAssignmentExpression.java	2004-02-14 13:44:03.000000000 +0100
-@@ -127,6 +127,8 @@
-       check(context, false, KjcMessages.VAR_UNKNOWN, ((JTypeNameExpression)right).getQualifiedName());
-     }
- 
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
-+
-     // JLS 15.26.2 Compound Assignment Operators :
-     // All compound assignment operators require both operands to be of
-     // primitive type, except for +=, which allows the right-hand operand to be
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JConditionalAndExpression.java kjc-suite-2.1B.new/src/kjc/JConditionalAndExpression.java
---- kjc-suite-2.1B/src/kjc/JConditionalAndExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JConditionalAndExpression.java	2004-02-13 21:45:29.000000000 +0100
-@@ -61,6 +61,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     CType	leftType = left.getType(factory);
-     CType	rightType = right.getType(factory);
-@@ -72,6 +73,9 @@
- 
-     type = booleanType;
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     // JLS 15.28: Constant Expression ?
-     if (left.isConstant() && right.isConstant()) {
-       return new JBooleanLiteral(getTokenReference(), left.booleanValue() && right.booleanValue());
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JConditionalOrExpression.java kjc-suite-2.1B.new/src/kjc/JConditionalOrExpression.java
---- kjc-suite-2.1B/src/kjc/JConditionalOrExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JConditionalOrExpression.java	2004-02-13 21:45:39.000000000 +0100
-@@ -61,6 +61,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     CType	leftType = left.getType(factory);
-     CType	rightType = right.getType(factory);
-@@ -72,6 +73,9 @@
- 
-     type = primBoolean;
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     // JLS 15.28: Constant Expression ?
-     if (left.isConstant() && right.isConstant()) {
-       return new JBooleanLiteral(getTokenReference(), left.booleanValue() || right.booleanValue());
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JDivideExpression.java kjc-suite-2.1B.new/src/kjc/JDivideExpression.java
---- kjc-suite-2.1B/src/kjc/JDivideExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JDivideExpression.java	2004-02-13 21:23:15.000000000 +0100
-@@ -63,6 +63,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     try {
-       type = computeType(context, left.getType(factory), right.getType(factory));
-@@ -70,6 +71,9 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     if (type.isOrdinal() && right.isConstant() && ((JLiteral)right).isDefault()) {
-       context.reportTrouble(new CWarning(getTokenReference(), KjcMessages.DIVIDE_BY_ZERO_INT));
-     }
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JEqualityExpression.java kjc-suite-2.1B.new/src/kjc/JEqualityExpression.java
---- kjc-suite-2.1B/src/kjc/JEqualityExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JEqualityExpression.java	2004-02-13 21:47:23.000000000 +0100
-@@ -82,8 +82,15 @@
-   public JExpression analyse(CExpressionContext context) throws PositionedError {
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     TypeFactory factory = context.getTypeFactory();
-+
-+    type = factory.getPrimitiveType(TypeFactory.PRM_BOOLEAN);
-+
-+    if (!fully_analysed)
-+      return this;
-+
-     CType	leftType = left.getType(factory);
-     CType	rightType = right.getType(factory);
-     CType       booleanType = factory.getPrimitiveType(TypeFactory.PRM_BOOLEAN);
-@@ -117,8 +124,6 @@
-       }
-     }
- 
--    type = factory.getPrimitiveType(TypeFactory.PRM_BOOLEAN);
--
-     if (left.isConstant() && right.isConstant()) {
-       return constantFolding(factory);
-     } else {
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JExpression.java kjc-suite-2.1B.new/src/kjc/JExpression.java
---- kjc-suite-2.1B/src/kjc/JExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JExpression.java	2004-02-13 21:23:15.000000000 +0100
-@@ -53,6 +53,21 @@
-   public abstract CType getType(TypeFactory factory);
- 
-   /**
-+   * Tests whether the expression is fully analysed or if they are any pending
-+   * expressions to reanalyse (useful for static initializers).
-+   */
-+  public boolean isFullyAnalysed() {
-+    return true;
-+  }
-+
-+  /**
-+   * Tests whether the expression depends on the specified field.
-+   */
-+  public boolean dependsOnField(CField field) {
-+    return false;
-+  }
-+
-+  /**
-    * Tests whether this expression denotes a compile-time constant (JLS 15.28).
-    *
-    * @return	true iff this expression is constant
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JFieldAccessExpression.java kjc-suite-2.1B.new/src/kjc/JFieldAccessExpression.java
---- kjc-suite-2.1B/src/kjc/JFieldAccessExpression.java	2002-07-15 20:53:33.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JFieldAccessExpression.java	2004-02-14 13:29:25.000000000 +0100
-@@ -107,6 +107,12 @@
-     return type;
-   }
- 
-+  public boolean dependsOnField(CField field) {
-+    return this.field == field ||
-+      (this.field.getValue() != null && 
-+       this.field.getValue().dependsOnField(field));
-+  }
-+
-   /**
-    * Tests whether this expression denotes a compile-time constant (JLS 15.28).
-    *
-@@ -119,10 +125,14 @@
-     //   are constant expressions
-     // - Qualified names of the form TypeName . Identifier that refer to
-     //   final variables whose initializers are constant expressions
-+    if (field.getValue() == null)
-+      return false;
- 
-+    if (field.getValue().dependsOnField(field))
-+      return false;
-+    
-     return constantPrefix
-       && field.isFinal()
--      && field.getValue() != null
-       && field.getValue().isConstant();
-   }
- 
-@@ -184,6 +194,10 @@
-     return field;
-   }
- 
-+  public boolean isFullyAnalysed() {
-+    return (!field.isFinal() || field.isAnalysed());
-+  }
-+
-   /**
-    * Returns the literal value of this field.
-    */
-@@ -275,6 +289,9 @@
- 
-     type = field.getType();
- 
-+    if (!field.isAnalysed())
-+      return this;
-+
-     if (isConstant()) {
-       // FIX Type!!
-       return field.getValue();
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JFieldDeclaration.java kjc-suite-2.1B.new/src/kjc/JFieldDeclaration.java
---- kjc-suite-2.1B/src/kjc/JFieldDeclaration.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JFieldDeclaration.java	2004-02-14 13:29:37.000000000 +0100
-@@ -177,7 +177,20 @@
-   public void analyse(CBodyContext context) throws PositionedError {
-     TypeFactory factory = context.getTypeFactory();
- 
-+    // This is special case where a crazy programmer made this variable
-+    // depends on itself. Sun is gen
-+    if (variable.getValue() != null &&
-+	variable.getValue().dependsOnField(getField())) {
-+      ((CSourceField)getField()).setFullyDeclared(true);
-+    }
-+
-     variable.analyse(context);
-+    if (!variable.isDefinitionAnalysed())
-+    {
-+      context.putFieldExtInfo(this, 0);
-+      return;
-+    }
-+
-     // JLS 8.1.2 : Inner classes may inherit static members that 
-     // are not compile-time constants even though they may not declare 
-     // them. Inner classes may not declare static members, unless 
-@@ -211,6 +224,8 @@
-       }
-     }
- 
-+    context.putFieldExtInfo(this, CVariableExtInfo.ANALYSED);
-+
-     if (hasInitializer()) {
-       context.setFieldInfo(((CSourceField)getField()).getPosition(), CVariableInfo.INITIALIZED);
-     }
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JInitializerDeclaration.java kjc-suite-2.1B.new/src/kjc/JInitializerDeclaration.java
---- kjc-suite-2.1B/src/kjc/JInitializerDeclaration.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JInitializerDeclaration.java	2004-02-13 21:23:15.000000000 +0100
-@@ -22,6 +22,7 @@
- 
- import at.dms.compiler.PositionedError;
- import at.dms.compiler.TokenReference;
-+import java.util.Enumeration;
- 
- /**
-  * This class represents a java class in the syntax tree
-@@ -106,7 +107,7 @@
-    * @param	context		the actual context of analyse
-    * @exception	PositionedError		Error catched as soon as possible
-    */
--  public void checkInitializer(CClassContext context) throws PositionedError {
-+  public boolean checkInitializer(CClassContext context) throws PositionedError {
-     if (getMethod().isStatic()) {
-       TokenReference    ref = TokenReference.NO_REF;
-       JBlock            classBlock = null;
-@@ -219,12 +220,23 @@
-       block.addThisVariable();
-     }
-     body.analyse(block);
--      if (! block.isReachable()) {
--	throw new CLineError(getTokenReference(), KjcMessages.STATEMENT_UNREACHABLE);
--      }
-+    boolean completelyInitialized = true;
-+    Enumeration keys = block.getFieldExtInfo().enumerateFields(); 
-+    while (keys.hasMoreElements()) {
-+      JFieldDeclaration field = (JFieldDeclaration)keys.nextElement();
-+      int info = block.getFieldExtInfo().getInfo(field);
-+
-+      if ((info & (CVariableExtInfo.EXIST|CVariableExtInfo.ANALYSED)) == CVariableExtInfo.EXIST)
-+	completelyInitialized = false;
-+    }
-+    if (! block.isReachable()) {
-+      throw new CLineError(getTokenReference(), KjcMessages.STATEMENT_UNREACHABLE);
-+    }
- 
-     block.close(getTokenReference());
-     self.close(getTokenReference());
-+
-+    return completelyInitialized;
-   }
- 
-   // ----------------------------------------------------------------------
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JInterfaceDeclaration.java kjc-suite-2.1B.new/src/kjc/JInterfaceDeclaration.java
---- kjc-suite-2.1B/src/kjc/JInterfaceDeclaration.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JInterfaceDeclaration.java	2004-02-13 21:23:15.000000000 +0100
-@@ -158,19 +158,20 @@
-    * Check that initializers are correct
-    * @exception	PositionedError	an error with reference to the source file
-    */
--  public void checkInitializers(CContext context) throws PositionedError {
-+  public boolean checkInitializers(CContext context) throws PositionedError {
-     //    CInterfaceContext self = new CInterfaceContext(context, context.getEnvironment(), sourceClass, this);
-     self = new CInterfaceContext(context, context.getEnvironment(), sourceClass, this);
-+    boolean good = true; 
-     if (statInit != null) {
--      statInit.checkInitializer(self);
-+      good &= statInit.checkInitializer(self);
-     }
- 
-     // Check inners
-     for (int i = inners.length - 1; i >= 0 ; i--) {
--      inners[i].checkInitializers(self);
-+      good &= inners[i].checkInitializers(self);
-     }
- 
--    super.checkInitializers(context);
-+    return good & super.checkInitializers(context);
-   }
- 
-   /**
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JLogicalComplementExpression.java kjc-suite-2.1B.new/src/kjc/JLogicalComplementExpression.java
---- kjc-suite-2.1B/src/kjc/JLogicalComplementExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JLogicalComplementExpression.java	2004-02-13 21:51:38.000000000 +0100
-@@ -63,6 +63,7 @@
-     expr = expr.analyse(context);
-     check(context, expr.getType(factory) == booleanType, KjcMessages.UNARY_BADTYPE_LNOT, expr.getType(factory));
-     type = booleanType;
-+
-     if (expr.isConstant()) {
-       return new JBooleanLiteral(getTokenReference(), !expr.booleanValue());
-     } else {
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JMinusExpression.java kjc-suite-2.1B.new/src/kjc/JMinusExpression.java
---- kjc-suite-2.1B/src/kjc/JMinusExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JMinusExpression.java	2004-02-13 21:23:15.000000000 +0100
-@@ -62,6 +62,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     try {
-       type = computeType(context, left.getType(factory), right.getType(factory));
-@@ -69,6 +70,9 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     left = left.convertType(context, type);
-     right = right.convertType(context, type);
- 
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JModuloExpression.java kjc-suite-2.1B.new/src/kjc/JModuloExpression.java
---- kjc-suite-2.1B/src/kjc/JModuloExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JModuloExpression.java	2004-02-13 21:23:15.000000000 +0100
-@@ -63,6 +63,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     try {
-       type = computeType(context, left.getType(factory), right.getType(factory));
-@@ -70,6 +71,9 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     left = left.convertType(context, type);
-     right = right.convertType(context, type);
- 
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JMultExpression.java kjc-suite-2.1B.new/src/kjc/JMultExpression.java
---- kjc-suite-2.1B/src/kjc/JMultExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JMultExpression.java	2004-02-13 21:23:15.000000000 +0100
-@@ -63,6 +63,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     try {
-       type = computeType(context, left.getType(factory), right.getType(factory));
-@@ -70,6 +71,9 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     left = left.convertType(context, type);
-     right = right.convertType(context, type);
- 
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JRelationalExpression.java kjc-suite-2.1B.new/src/kjc/JRelationalExpression.java
---- kjc-suite-2.1B/src/kjc/JRelationalExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JRelationalExpression.java	2004-02-13 21:47:37.000000000 +0100
-@@ -66,6 +66,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     check(context,
- 	  left.getType(factory).isNumeric() && right.getType(factory).isNumeric(),
-@@ -73,6 +74,9 @@
- 
-     type = context.getTypeFactory().getPrimitiveType(TypeFactory.PRM_BOOLEAN);
- 
-+    if (!fully_analysed)
-+      return this;
-+
-     CType	promoted = CNumericType.binaryPromote(context, left.getType(factory), right.getType(factory));
-     left = left.convertType(context, promoted);
-     right = right.convertType(context, promoted);
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JReturnStatement.java kjc-suite-2.1B.new/src/kjc/JReturnStatement.java
---- kjc-suite-2.1B/src/kjc/JReturnStatement.java	2002-07-15 20:53:33.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JReturnStatement.java	2004-02-13 21:23:15.000000000 +0100
-@@ -88,7 +88,8 @@
-       check(context,
- 	    expr.isAssignableTo(expressionContext, returnType),
- 	    KjcMessages.RETURN_BADTYPE, expr.getType(factory), returnType);
--      expr = expr.convertType(expressionContext, returnType);
-+      if (expr.isFullyAnalysed())
-+        expr = expr.convertType(expressionContext, returnType);
-     } else {
-       check(context, returnType.getTypeID() == TID_VOID, KjcMessages.RETURN_EMPTY_NONVOID);
-     }
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JShiftExpression.java kjc-suite-2.1B.new/src/kjc/JShiftExpression.java
---- kjc-suite-2.1B/src/kjc/JShiftExpression.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JShiftExpression.java	2004-02-14 13:25:36.000000000 +0100
-@@ -67,6 +67,7 @@
- 
-     left = left.analyse(context);
-     right = right.analyse(context);
-+    fully_analysed = left.isFullyAnalysed() && right.isFullyAnalysed();
- 
-     try {
-       type = computeType(context, left.getType(factory), right.getType(factory));
-@@ -74,6 +75,9 @@
-       throw e.addPosition(getTokenReference());
-     }
- 
-+    if (!fully_analysed)
-+      return this;
-+    
-     left = left.convertType(context, type);
-     right = right.convertType(context, context.getTypeFactory().getPrimitiveType(TypeFactory.PRM_INT));
- 
-diff -N -ur -x KjcParser.java -x KjcScanner.java -x '*~' kjc-suite-2.1B/src/kjc/JTryCatchStatement.java kjc-suite-2.1B.new/src/kjc/JTryCatchStatement.java
---- kjc-suite-2.1B/src/kjc/JTryCatchStatement.java	2002-07-15 20:53:32.000000000 +0200
-+++ kjc-suite-2.1B.new/src/kjc/JTryCatchStatement.java	2004-02-13 21:23:15.000000000 +0100
-@@ -21,6 +21,7 @@
- package at.dms.kjc;
- 
- import java.util.Enumeration;
-+import java.util.Hashtable;
- 
- import at.dms.compiler.PositionedError;
- import at.dms.compiler.CWarning;
-@@ -84,6 +85,12 @@
- 
-     tryContext = new CTryContext(context, context.getEnvironment());
-     tryClause.analyse(tryContext);
-+    if (!analysed) {
-+      saveThrowables = tryContext.getThrowables();
-+      analysed = true;
-+    } else {
-+      tryContext.restoreThrowables(saveThrowables);
-+    }
-     if (tryContext.isReachable()) {
-       self.merge(tryContext);

*** Patch too long, truncated ***