Compiling this:
class test {
int v[];
void foo() {
System.out.print("v="+v+"\\n");
}
}
causes a null pointer exception in the compiler:
norquay% oakc test.oak
oak.lang.NullPointerException
at oak.util.Hashtable.get(Hashtable.oak)
at oak.tools.asm.ConstantPool.put(ConstantPool.oak)
at oak.tools.asm.Instruction.collect(Instruction.oak)
at oak.tools.oakc.SourceClass.compile(SourceClass.oak)
at oak.tools.oakc.Main.main(Main.oak)
-- listing --
4: getstatic oak.io.PrintStream out
4: new class oak.lang.StringBuffer
4: dup
4: invokenonvirtual oak.lang.StringBuffer()
4: ldc2 oak/tools/tree/Node.oak/tools/tree/Expression.oak/tools/tree/ConstantExpression.oak/tools/tree/StringExpression[value=oak/lang/String, type=oak/tools/oak/Type.oak/tools/oak/ClassType, op=69, where=1048637]
4: invokevirtual oak.lang.StringBuffer append(oak.lang.String)
4: aload 0
4: getfield int v[]
4: invokevirtual
4: ldc2 oak/tools/tree/Node.oak/tools/tree/Expression.oak/tools/tree/ConstantExpression.oak/tools/tree/StringExpression[value=oak/lang/String, type=oak/tools/oak/Type.oak/tools/oak/ClassType, op=69, where=1048644]
4: invokevirtual oak.lang.StringBuffer append(oak.lang.String)
4: invokevirtual oak.lang.String toString()
4: invokevirtual void print(oak.lang.String)
3: return
oak.lang.NullPointerException
at oak.tools.oakc.SourceClass.compile(SourceClass.oak)
at oak.tools.oakc.Main.main(Main.oak)
oakc: an exception has occurred, please contact x47242.
Exception in thread "main" oak.lang.ArrayIndexOutOfBoundsException
at oak.tools.oakc.BatchEnvironment.flushErrors(BatchEnvironment.oak)
at oak.tools.oakc.Main.main(Main.oak)
class test {
int v[];
void foo() {
System.out.print("v="+v+"\\n");
}
}
causes a null pointer exception in the compiler:
norquay% oakc test.oak
oak.lang.NullPointerException
at oak.util.Hashtable.get(Hashtable.oak)
at oak.tools.asm.ConstantPool.put(ConstantPool.oak)
at oak.tools.asm.Instruction.collect(Instruction.oak)
at oak.tools.oakc.SourceClass.compile(SourceClass.oak)
at oak.tools.oakc.Main.main(Main.oak)
-- listing --
4: getstatic oak.io.PrintStream out
4: new class oak.lang.StringBuffer
4: dup
4: invokenonvirtual oak.lang.StringBuffer()
4: ldc2 oak/tools/tree/Node.oak/tools/tree/Expression.oak/tools/tree/ConstantExpression.oak/tools/tree/StringExpression[value=oak/lang/String, type=oak/tools/oak/Type.oak/tools/oak/ClassType, op=69, where=1048637]
4: invokevirtual oak.lang.StringBuffer append(oak.lang.String)
4: aload 0
4: getfield int v[]
4: invokevirtual
4: ldc2 oak/tools/tree/Node.oak/tools/tree/Expression.oak/tools/tree/ConstantExpression.oak/tools/tree/StringExpression[value=oak/lang/String, type=oak/tools/oak/Type.oak/tools/oak/ClassType, op=69, where=1048644]
4: invokevirtual oak.lang.StringBuffer append(oak.lang.String)
4: invokevirtual oak.lang.String toString()
4: invokevirtual void print(oak.lang.String)
3: return
oak.lang.NullPointerException
at oak.tools.oakc.SourceClass.compile(SourceClass.oak)
at oak.tools.oakc.Main.main(Main.oak)
oakc: an exception has occurred, please contact x47242.
Exception in thread "main" oak.lang.ArrayIndexOutOfBoundsException
at oak.tools.oakc.BatchEnvironment.flushErrors(BatchEnvironment.oak)
at oak.tools.oakc.Main.main(Main.oak)