Failing Tests: apt/Declaration/Package, apt/regression/6341534
PackageElement.getEnclosedElements() results in NullPointerException from compiler (see output below code). As documented, it should return a List of elements or an empty list.
Compile and run peAP.java as annotation processor.
- - - - - peAP.java- - - - - - - - - - - - --
import javax.annotation.processing.*;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
import static javax.lang.model.util.ElementFilter.*;
import java.util.*;
import java.util.Set;
@SupportedAnnotationTypes({"*"})
public class peAP extends AbstractProcessor {
static Elements E = null;
public void init(ProcessingEnvironment penv) {
processingEnv = penv;
E = penv.getElementUtils();
}
//Create directory 'dir1' and a test class in dir1
public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv) {
if(renv.errorRaised()) return false;
processingEnv.getMessager().printNotice( E.getPackageElement("dir1").getQualifiedName().toString() );
try {List<? extends Element> LEE = E.getPackageElement("dir1").getEnclosedElements();}
catch(NullPointerException npe)
{processingEnv.getMessager().printError("Should return possibly empty List."); npe.printStackTrace();return false;}
return true;
}
}
- - - - - - -- - - -- - -- - -- - - - -
% javac -proc:only -processor peAP dir1/package-info.java
Note: dir1
error: Should return possibly empty List.
java.lang.NullPointerException
at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:429)
at com.sun.tools.javac.main.JavaCompiler.complete(JavaCompiler.java:572)
at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1534)
at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1471)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:370)
at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:740)
at com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:672)
at com.sun.tools.javac.model.FilteredMemberList.unwanted(FilteredMemberList.java:100)
at com.sun.tools.javac.model.FilteredMemberList.size(FilteredMemberList.java:44)
at java.util.ArrayList.<init>(ArrayList.java:133)
at com.sun.tools.javac.code.Symbol$TypeSymbol.getEnclosedElements(Symbol.java:513)
at peAP.process(peAP.java:19)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:497)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discovery(JavacProcessingEnvironment.java:421)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:569)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:843)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:629)
at com.sun.tools.javac.main.Main.compile(Main.java:756)
at com.sun.tools.javac.main.Main.compile(Main.java:681)
at com.sun.tools.javac.main.Main.compile(Main.java:670)
at com.sun.tools.javac.Main.compile(Main.java:70)
at com.sun.tools.javac.Main.main(Main.java:55)
PackageElement.getEnclosedElements() results in NullPointerException from compiler (see output below code). As documented, it should return a List of elements or an empty list.
Compile and run peAP.java as annotation processor.
- - - - - peAP.java- - - - - - - - - - - - --
import javax.annotation.processing.*;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
import static javax.lang.model.util.ElementFilter.*;
import java.util.*;
import java.util.Set;
@SupportedAnnotationTypes({"*"})
public class peAP extends AbstractProcessor {
static Elements E = null;
public void init(ProcessingEnvironment penv) {
processingEnv = penv;
E = penv.getElementUtils();
}
//Create directory 'dir1' and a test class in dir1
public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv) {
if(renv.errorRaised()) return false;
processingEnv.getMessager().printNotice( E.getPackageElement("dir1").getQualifiedName().toString() );
try {List<? extends Element> LEE = E.getPackageElement("dir1").getEnclosedElements();}
catch(NullPointerException npe)
{processingEnv.getMessager().printError("Should return possibly empty List."); npe.printStackTrace();return false;}
return true;
}
}
- - - - - - -- - - -- - -- - -- - - - -
% javac -proc:only -processor peAP dir1/package-info.java
Note: dir1
error: Should return possibly empty List.
java.lang.NullPointerException
at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:429)
at com.sun.tools.javac.main.JavaCompiler.complete(JavaCompiler.java:572)
at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1534)
at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1471)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:370)
at com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:740)
at com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:672)
at com.sun.tools.javac.model.FilteredMemberList.unwanted(FilteredMemberList.java:100)
at com.sun.tools.javac.model.FilteredMemberList.size(FilteredMemberList.java:44)
at java.util.ArrayList.<init>(ArrayList.java:133)
at com.sun.tools.javac.code.Symbol$TypeSymbol.getEnclosedElements(Symbol.java:513)
at peAP.process(peAP.java:19)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:497)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discovery(JavacProcessingEnvironment.java:421)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:569)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:843)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:629)
at com.sun.tools.javac.main.Main.compile(Main.java:756)
at com.sun.tools.javac.main.Main.compile(Main.java:681)
at com.sun.tools.javac.main.Main.compile(Main.java:670)
at com.sun.tools.javac.Main.compile(Main.java:70)
at com.sun.tools.javac.Main.main(Main.java:55)
- relates to
-
JDK-6341072 printError does not result in nonzero return code for javac when processing
-
- Closed
-