Bug 30026 - NullPointerException when compiling
Summary: NullPointerException when compiling
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 minor (vote)
Target Milestone: ---   Edit
Assignee: Jim Hugunin CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-01-22 17:06 EST by Robert Wenner CLA
Modified: 2003-03-06 14:30 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Robert Wenner CLA 2003-01-22 17:06:50 EST
With the following program I get a NullPointerException during compiling and a
warning that the source code of Object is not available for weaving:

public class NullPtr {
    public static void main(String args[]) {
        NullPtr np = new NullPtr();
        np = null;
    }

    public void finalize() throws Throwable {
    }
}

aspect FinalizeContract {
    pointcut finalizeCall(Object o):
        this(Object+) &&
        this(o) &&
        execution(void finalize());

    void around(Object o) throws Throwable: finalizeCall(o) {
        o.finalize();               // error
        ((NullPtr) o).finalize();   // ok
        proceed(o);
    }
}

It works if I comment out the line indicated by the // error comment or if I
declare the aspect as privileged.
Comment 1 Jim Hugunin CLA 2003-02-13 20:21:21 EST
The correct behavior is for the compiler to signal that the finalize method is 
not visible to the aspect because its a protected method on Object.  This is 
the behavior that I observe for 1.1beta4.

Can you confirm that you're seeing it with the latest version of the compiler, 
and if so include the text of the stack trace and warning?
Comment 2 Robert Wenner CLA 2003-02-16 05:13:28 EST
The compiler claims to be AspectJ Compiler 1.1beta4
Below is what I get when compiling and running the program:

robert@Knochenmehl:~/daten/text/publications/aspecttesting/code> make NullPtr
CLASSPATH=.:/opt/java/junit3.8.1/junit.jar:/home/robert/programme/aspectj1.1b4/lib/aspectjrt.jar:/home/robert/programme/aspectj1.1b4/lib/aspectjtools.jar
/home/robert/programme/aspectj1.1b4/bin/ajc -Xlint -XnoInline
-warn:constructorName,packageDefaultMethod,deprecation,maskedCatchBlocks,unusedImports,syntheticAccess
 NullPtr.java
java.lang.NullPointerException
        at
org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld.fromBinding(EclipseWorld.java:142)
        at
org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld.makeResolvedMember(EclipseWorld.java:166)
        at
org.aspectj.ajdt.internal.compiler.lookup.PrivilegedHandler.getPrivilegedAccessMethod(PrivilegedHandler.java:44)
        at
org.aspectj.ajdt.internal.compiler.ast.AccessForInlineVisitor.endVisit(AccessForInlineVisitor.java:70)
        at
org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:319)
        at
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:98)
        at
org.aspectj.ajdt.internal.compiler.ast.AdviceDeclaration.resolveStatements(AdviceDeclaration.java:153)
        at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:325)
        at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:922)
        at
org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.resolve(AspectDeclaration.java:63)
        at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:954)
        at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:235)
        at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:536)
        at org.aspectj.ajdt.internal.compiler.AjCompiler.process(AjCompiler.java:63)
        at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:340)
        at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:232)
        at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:171)
        at
org.aspectj.ajdt.internal.core.builder.AjBuildManager$BatchBuilder.run(AjBuildManager.java:612)
        at
org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:54)
        at org.aspectj.tools.ajc.Main.run(Main.java:199)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:138)
        at org.aspectj.tools.ajc.Main.main(Main.java:58)
/home/robert/daten/text/publications/aspecttesting/code/NullPtr.java:0: Internal
compiler error
java.lang.NullPointerException
        at
org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld.fromBinding(EclipseWorld.java:142)
        at
org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld.makeResolvedMember(EclipseWorld.java:166)
        at
org.aspectj.ajdt.internal.compiler.lookup.PrivilegedHandler.getPrivilegedAccessMethod(PrivilegedHandler.java:44)
        at
org.aspectj.ajdt.internal.compiler.ast.AccessForInlineVisitor.endVisit(AccessForInlineVisitor.java:70)
        at
org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:319)
        at
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:98)
        at
org.aspectj.ajdt.internal.compiler.ast.AdviceDeclaration.resolveStatements(AdviceDeclaration.java:153)
        at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:325)
        at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:922)
        at
org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.resolve(AspectDeclaration.java:63)
        at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:954)
        at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:235)
        at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:536)
        at org.aspectj.ajdt.internal.compiler.AjCompiler.process(AjCompiler.java:63)
        at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:340)
        at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:232)
        at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:171)
        at
org.aspectj.ajdt.internal.core.builder.AjBuildManager$BatchBuilder.run(AjBuildManager.java:612)
        at
org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:54)
        at org.aspectj.tools.ajc.Main.run(Main.java:199)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:138)
        at org.aspectj.tools.ajc.Main.main(Main.java:58)


!! no source information available !!
/home/robert/daten/text/publications/aspecttesting/code/NullPtr.java:16: The
method finalize() from the type java.lang.Object is not visible
o.finalize();               // error
  ^^^^^^^^
Exception thrown from AspectJ 1.1beta4

This might be logged as a bug already -- see the bug database at
  http://dev.eclipse.org (product: AspectJ, component: compiler)

Bugs for exceptions thrown have titles File:line from the top stack,
e.g., "SomeFile.java:243"

If you don't find the exception below in a bug, please add a new bug
To make the bug a priority, please include a test program
that can reproduce this exception.
null
java.lang.NullPointerException
        at
org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld.fromBinding(EclipseWorld.java:142)
        at
org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld.makeResolvedMember(EclipseWorld.java:166)
        at
org.aspectj.ajdt.internal.compiler.lookup.PrivilegedHandler.getPrivilegedAccessMethod(PrivilegedHandler.java:44)
        at
org.aspectj.ajdt.internal.compiler.ast.AccessForInlineVisitor.endVisit(AccessForInlineVisitor.java:70)
        at
org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:319)
        at
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:98)
        at
org.aspectj.ajdt.internal.compiler.ast.AdviceDeclaration.resolveStatements(AdviceDeclaration.java:153)
        at
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:325)
        at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:922)
        at
org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration.resolve(AspectDeclaration.java:63)
        at
org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:954)
        at
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:235)
        at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:536)
        at org.aspectj.ajdt.internal.compiler.AjCompiler.process(AjCompiler.java:63)
        at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:340)
        at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:232)
        at
org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:171)
        at
org.aspectj.ajdt.internal.core.builder.AjBuildManager$BatchBuilder.run(AjBuildManager.java:612)
        at
org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:102)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:54)
        at org.aspectj.tools.ajc.Main.run(Main.java:199)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:138)
        at org.aspectj.tools.ajc.Main.main(Main.java:58)


1 fail|abort, 2 errors
make: *** [NullPtr] Fehler 255
Comment 3 Jim Hugunin CLA 2003-03-06 14:30:08 EST
fixed in current cvs tree, test case in bugs/Finalizer.java

thanks for confirming that this bug was found in 1.1beta4.  it is now fixed in 
the current cvs tree.