Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6430209

spurious compiler error elicited by packageElement.getEnclosedElements()

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P4
    • Resolution: Duplicate
    • Affects Version/s: 6
    • Fix Version/s: None
    • Component/s: tools
    • Labels:
    • Subcomponent:
    • CPU:
      generic
    • OS:
      generic

      Description

      When processing a source file not declared to be in any package with a PackageElement obtained from Elements.getPackageElement(), getEnclosedElements() elicits a duplcate class error and this error:
      "an annotation processor threw an uncaught exception.
      Consult the following stack trace for details.
      com.sun.tools.javac.jvm.ClassReader$BadClassFile: bad class file: ./dir1/test0.java
      file does not contain class dir1.test0
      Please remove or make sure it appears in the correct subdirectory of the classpath.
              at com.sun.tools.javac.main.JavaCompiler.complete(JavaCompiler.java:599)
              at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1777)
              at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1700)
      ...."

      %javac -proc:none b6341534.java
      %javac -proc:only -processor b6341534 -cp . ./src/*.java
      ---source files and processor souce below-------
      % cat src/test0.java
      //package dir1;
      public class test0 { }

      % cat src/test1.java
      package dir1;
      public class test1 { }
      - - - - - - - - - - - - - - - - - - - -- - - -- -
       % cat b6341534.java
      import javax.annotation.processing.*;
      import javax.lang.model.element.*;
      import javax.lang.model.util.*;
      import static javax.lang.model.util.ElementFilter.*;
      import static javax.tools.Diagnostic.Kind.*;
      import java.util.*;
      import java.util.Set;

      @SupportedAnnotationTypes({"*"})
      @SupportedSourceVersion(javax.lang.model.SourceVersion.RELEASE_6)
      public class b6341534 extends AbstractProcessor {
         static int r = 0;
              static Elements E = null;
              static Messager msgr = null;
              public void init(ProcessingEnvironment penv) {
                      processingEnv = penv;
                      msgr = penv.getMessager();
                      E = penv.getElementUtils();
              }
              //Create directory 'dir1' and a test class in dir1
              public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv)
              {
                 if(!renv.errorRaised() && !renv.processingOver()){
                        r++;
                        for( TypeElement t : renv.getSpecifiedTypeElements() )
                                System.out.println("Round"+r+ ": " + t.toString());

                              try {
                              PackageElement PE = E.getPackageElement("dir1");
                         List<? extends Element> LEE = PE.getEnclosedElements(); /* <=This line elicits the error message. */
                              for(Element e : LEE) System.out.println("found " + e.toString() + " in dir1.");
                              }
                      catch(NullPointerException npe) {
                               msgr.printMessage(ERROR,npe.toString());
                               //npe.printStackTrace();
                               return false;
                              }
                      }
                      if( renv.errorRaised() ) { msgr.printMessage(ERROR, "FAILED");}
                      return true;
              }
      }

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              jjg Jonathan Gibbons
              Reporter:
              ssides Steve Sides
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: