From 50cbca6d793ffccaa11ff399abf37c88ba7a8af9 Mon Sep 17 00:00:00 2001 From: crawshaw Date: Wed, 24 Nov 2004 08:07:11 +0000 Subject: [PATCH] minor bug fixes darcs-hash:20041124080711-2eb37-1d38ea3315ff43ff5eaa7188289c8391aeb4e7d8.gz --- Makefile | 11 +++++++---- src/java/org/ibex/tool/Compiler.java | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index dcd5829..dc8378d 100644 --- 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/ -build/%.class: +$(classes): $(sources) @mkdir -p build - @echo "Compiling $(subst /,.,$*)" + @echo "Compiling org.ibex.tool" @javac -sourcepath src/java -d build -source 1.3 -target 1.1 \ - src/java/$*.java + $(sources) clean: @rm -rf build diff --git a/src/java/org/ibex/tool/Compiler.java b/src/java/org/ibex/tool/Compiler.java index 26a1b4b..34b504e 100644 --- a/src/java/org/ibex/tool/Compiler.java +++ b/src/java/org/ibex/tool/Compiler.java @@ -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) { - 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)); @@ -455,7 +455,10 @@ public class Compiler { } 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++) { @@ -479,12 +482,16 @@ public class Compiler { System.out.println("Unexpected ClassFormatException"); // FIXME e.printStackTrace(); } + if (DEBUG) System.out.println(" not found"); return null; } public boolean isPackage(char[][] parent, char[] name) { + if (DEBUG) System.out.println("isPackage: "+ str(parent, '.') + "."+new String(name)); 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(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; @@ -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) { + 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; @@ -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) { + 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; -- 1.7.10.4