langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
changeset 41160 61082a97bbf0
parent 41033 49af2ecba616
child 41255 72fcbd6294cb
equal deleted inserted replaced
41159:06ac98da3f82 41160:61082a97bbf0
  1501                 } finally {
  1501                 } finally {
  1502                     topLevel = null;
  1502                     topLevel = null;
  1503                 }
  1503                 }
  1504             }
  1504             }
  1505             public void visitClassDef(JCClassDecl node) {
  1505             public void visitClassDef(JCClassDecl node) {
       
  1506                 super.visitClassDef(node);
       
  1507                 // remove generated constructor that may have been added during attribution:
       
  1508                 List<JCTree> beforeConstructor = List.nil();
       
  1509                 List<JCTree> defs = node.defs;
       
  1510                 while (defs.nonEmpty() && !defs.head.hasTag(Tag.METHODDEF)) {
       
  1511                     beforeConstructor = beforeConstructor.prepend(defs.head);
       
  1512                     defs = defs.tail;
       
  1513                 }
       
  1514                 if (defs.nonEmpty() &&
       
  1515                     (((JCMethodDecl) defs.head).mods.flags & Flags.GENERATEDCONSTR) != 0) {
       
  1516                     defs = defs.tail;
       
  1517                     while (beforeConstructor.nonEmpty()) {
       
  1518                         defs = defs.prepend(beforeConstructor.head);
       
  1519                         beforeConstructor = beforeConstructor.tail;
       
  1520                     }
       
  1521                     node.defs = defs;
       
  1522                 }
  1506                 if (node.sym != null) {
  1523                 if (node.sym != null) {
  1507                     node.sym.completer = new ImplicitCompleter(topLevel);
  1524                     node.sym.completer = new ImplicitCompleter(topLevel);
  1508                 }
  1525                 }
  1509                 node.sym = null;
  1526                 node.sym = null;
  1510                 super.visitClassDef(node);
       
  1511             }
  1527             }
  1512             public void visitMethodDef(JCMethodDecl node) {
  1528             public void visitMethodDef(JCMethodDecl node) {
       
  1529                 // remove super constructor call that may have been added during attribution:
       
  1530                 if (TreeInfo.isConstructor(node) && node.sym != null && node.sym.owner.isEnum() &&
       
  1531                     node.body.stats.nonEmpty() && TreeInfo.isSuperCall(node.body.stats.head) &&
       
  1532                     node.body.stats.head.pos == node.body.pos) {
       
  1533                     node.body.stats = node.body.stats.tail;
       
  1534                 }
  1513                 node.sym = null;
  1535                 node.sym = null;
  1514                 super.visitMethodDef(node);
  1536                 super.visitMethodDef(node);
  1515             }
  1537             }
  1516             public void visitVarDef(JCVariableDecl node) {
  1538             public void visitVarDef(JCVariableDecl node) {
  1517                 node.sym = null;
  1539                 node.sym = null;