minor bug fixes
authorcrawshaw <crawshaw@ibex.org>
Wed, 24 Nov 2004 08:07:11 +0000 (08:07 +0000)
committercrawshaw <crawshaw@ibex.org>
Wed, 24 Nov 2004 08:07:11 +0000 (08:07 +0000)
darcs-hash:20041124080711-2eb37-1d38ea3315ff43ff5eaa7188289c8391aeb4e7d8.gz

Makefile
src/java/org/ibex/tool/Compiler.java

index dcd5829..dc8378d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,14 @@
-default: $(patsubst src/java/%.java,build/%.class,$(shell find src/java -name \*.java))
+sources = $(shell find src/java -name \*.java)
+classes = $(sources:src/java/%.java=build/%.class)
+
+default: $(classes)
        @cp -R src/rsc/* build/
 
        @cp -R src/rsc/* build/
 
-build/%.class:
+$(classes): $(sources)
        @mkdir -p build
        @mkdir -p build
-       @echo "Compiling       $(subst /,.,$*)"
+       @echo "Compiling       org.ibex.tool"
        @javac -sourcepath src/java -d build -source 1.3 -target 1.1 \
        @javac -sourcepath src/java -d build -source 1.3 -target 1.1 \
-               src/java/$*.java
+               $(sources)
 
 clean:
        @rm -rf build
 
 clean:
        @rm -rf build
index 26a1b4b..34b504e 100644 (file)
@@ -444,7 +444,7 @@ public class Compiler {
     final INameEnvironment env = new INameEnvironment() {
         public NameEnvironmentAnswer findType(char[][] c) { return findType(name(c), pack(c)); }
         public NameEnvironmentAnswer findType(char[] n, char[][] p) {
     final INameEnvironment env = new INameEnvironment() {
         public NameEnvironmentAnswer findType(char[][] c) { return findType(name(c), pack(c)); }
         public NameEnvironmentAnswer findType(char[] n, char[][] p) {
-            if (DEBUG) System.out.println("requesting: "+ str(p, '.') + "."+new String(n));
+            if (DEBUG) System.out.println("findType: "+ str(p, '.') + "."+new String(n));
 
             try {
                 Class c = Class.forName(str(p, '.') + '.' + new String(n));
 
             try {
                 Class c = Class.forName(str(p, '.') + '.' + new String(n));
@@ -455,7 +455,10 @@ public class Compiler {
             } catch (ClassNotFoundException e) {}
 
             // cut out searches for java.* packages in sources list
             } catch (ClassNotFoundException e) {}
 
             // cut out searches for java.* packages in sources list
-            if (p.length > 0 && eq(p[0], "java".toCharArray())) return null;
+            if (p.length > 0 && eq(p[0], "java".toCharArray())) {
+                if (DEBUG) System.out.println("  not found, unknown java.*");
+                return null;
+            }
 
             try {
                 for (int i=0; i < sources.length; i++) {
 
             try {
                 for (int i=0; i < sources.length; i++) {
@@ -479,12 +482,16 @@ public class Compiler {
                 System.out.println("Unexpected ClassFormatException"); // FIXME
                 e.printStackTrace();
             }
                 System.out.println("Unexpected ClassFormatException"); // FIXME
                 e.printStackTrace();
             }
+            if (DEBUG) System.out.println("  not found");
             return null;
         }
         public boolean isPackage(char[][] parent, char[] name) {
             return null;
         }
         public boolean isPackage(char[][] parent, char[] name) {
+            if (DEBUG) System.out.println("isPackage: "+ str(parent, '.') + "."+new String(name));
             String parentName = str(parent, '/');
             String parentName = str(parent, '/');
-            for (int i=0; i < sources.length; i++)
+            for (int i=0; i < sources.length; i++) {
                 if (eq(name, sources[i].n) && eq(parent, sources[i].p)) return false;
                 if (eq(name, sources[i].n) && eq(parent, sources[i].p)) return false;
+                if (eq(pack(sources[i].p), parent) && eq(name(sources[i].p), name)) return true;
+            }
             return
                 loader.getResource(parentName + ".class") == null &&
                 loader.getResource(parentName + '/' + new String(name) + ".class") == null;
             return
                 loader.getResource(parentName + ".class") == null &&
                 loader.getResource(parentName + '/' + new String(name) + ".class") == null;
@@ -599,6 +606,7 @@ public class Compiler {
 
     /** Returns true of contents of both char arrays are equal. */
     private static boolean eq(char[][] c1, char[][] c2) {
 
     /** Returns true of contents of both char arrays are equal. */
     private static boolean eq(char[][] c1, char[][] c2) {
+        if (c1 == null || c2 == null) return c1 == c2;
         if (c1.length != c2.length) return false;
         for (int i=0; i < c1.length; i++) if (!eq(c1[i], c2[i])) return false;
         return true;
         if (c1.length != c2.length) return false;
         for (int i=0; i < c1.length; i++) if (!eq(c1[i], c2[i])) return false;
         return true;
@@ -606,6 +614,7 @@ public class Compiler {
 
     /** Returns true of contents of both char arrays are equal. */
     private static boolean eq(char[] c1, char[] c2) {
 
     /** Returns true of contents of both char arrays are equal. */
     private static boolean eq(char[] c1, char[] c2) {
+        if (c1 == null || c2 == null) return c1 == c2;
         if (c1.length != c2.length) return false;
         for (int i=0; i < c1.length; i++) if (c1[i] != c2[i]) return false;
         return true;
         if (c1.length != c2.length) return false;
         for (int i=0; i < c1.length; i++) if (c1[i] != c2[i]) return false;
         return true;