You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ge...@apache.org on 2021/04/16 10:07:45 UTC

[netbeans] branch master updated: Removing IndexedClassDecl.

This is an automated email from the ASF dual-hosted git repository.

geertjan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new b00621c  Removing IndexedClassDecl.
     new 473f2f4  Merge pull request #2727 from jlahoda/drop-indexed-classdecl
b00621c is described below

commit b00621c33ae4814731881e3ef5127ca9e5c6b62c
Author: Jan Lahoda <jl...@netbeans.org>
AuthorDate: Wed Feb 3 06:57:34 2021 +0100

    Removing IndexedClassDecl.
---
 .../netbeans/api/java/source/TreeUtilities.java    |  76 ++++--------
 .../java/source/parsing/FindAnonymousVisitor.java  |   1 -
 .../api/java/source/TreeUtilitiesTest.java         |  35 +++++-
 .../nbjavac/parsing/FindAnonymousVisitor.java      |   7 --
 .../nbjavac/parsing/PartialReparserImpl.java       |   6 +-
 .../nbjavac/parsing/PartialReparserService.java    |   3 +-
 .../org/netbeans/lib/nbjavac/services/NBEnter.java |   6 -
 .../lib/nbjavac/services/NBJavacTrees.java         |  32 ------
 .../lib/nbjavac/services/NBParserFactory.java      | 127 ---------------------
 .../netbeans/lib/nbjavac/services/NBTreeMaker.java |  26 -----
 10 files changed, 60 insertions(+), 259 deletions(-)

diff --git a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java
index 52fc10b..5a20ee5 100644
--- a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java
+++ b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java
@@ -85,12 +85,14 @@ import com.sun.tools.javac.parser.ParserFactory;
 import com.sun.tools.javac.parser.ScannerFactory;
 import com.sun.tools.javac.tree.JCTree.JCBlock;
 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
+import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
 import com.sun.tools.javac.tree.JCTree.JCExpression;
 import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
 import com.sun.tools.javac.util.JCDiagnostic;
 import com.sun.tools.javac.util.Log;
 import com.sun.tools.javac.util.Names;
 import com.sun.tools.javac.util.Warner;
+import java.lang.reflect.Method;
 import org.netbeans.api.annotations.common.CheckForNull;
 import org.netbeans.api.annotations.common.NonNull;
 import org.netbeans.api.annotations.common.NullAllowed;
@@ -102,7 +104,6 @@ import org.netbeans.lib.nbjavac.services.CancelService;
 import org.netbeans.lib.nbjavac.services.NBAttr;
 import org.netbeans.lib.nbjavac.services.NBParserFactory;
 import org.netbeans.lib.nbjavac.services.NBResolve;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
 import org.netbeans.modules.java.source.TreeShims;
 import org.netbeans.modules.java.source.TreeUtilitiesAccessor;
 import org.netbeans.modules.java.source.builder.CommentHandlerService;
@@ -836,11 +837,12 @@ public final class TreeUtilities {
     /**Attribute the given tree in the given context.
      */
     public TypeMirror attributeTree(Tree tree, Scope scope) {
+        Env<AttrContext> env = getEnv(scope);
         if (scope instanceof NBScope && ((NBScope)scope).areAccessibilityChecksDisabled()) {
             NBResolve.instance(info.impl.getJavacTask().getContext()).disableAccessibilityChecks();
         }
         try {
-            return attributeTree(info.impl.getJavacTask(), (JCTree) tree, scope, new ArrayList<>());
+            return attributeTree(info.impl.getJavacTask(), env.toplevel, (JCTree) tree, scope, new ArrayList<>());
         } finally {
             NBResolve.instance(info.impl.getJavacTask().getContext()).restoreAccessbilityChecks();
         }
@@ -850,11 +852,12 @@ public final class TreeUtilities {
      * Returns scope valid at point when <code>to</code> is reached.
      */
     public Scope attributeTreeTo(Tree tree, Scope scope, Tree to) {
+        Env<AttrContext> env = getEnv(scope);
         if (scope instanceof NBScope && ((NBScope)scope).areAccessibilityChecksDisabled()) {
             NBResolve.instance(info.impl.getJavacTask().getContext()).disableAccessibilityChecks();
         }
         try {
-            return attributeTreeTo(info.impl.getJavacTask(), (JCTree)tree, scope, (JCTree)to, new ArrayList<>());
+            return attributeTreeTo(info.impl.getJavacTask(), env.toplevel, (JCTree)tree, scope, (JCTree)to, new ArrayList<>());
         } finally {
             NBResolve.instance(info.impl.getJavacTask().getContext()).restoreAccessbilityChecks();
         }
@@ -862,12 +865,11 @@ public final class TreeUtilities {
     
     public TypeMirror reattributeTree(Tree tree, Scope scope) {
         Env<AttrContext> env = getEnv(scope);
-        copyInnerClassIndexes(env.tree, tree);
         if (scope instanceof NBScope && ((NBScope)scope).areAccessibilityChecksDisabled()) {
             NBResolve.instance(info.impl.getJavacTask().getContext()).disableAccessibilityChecks();
         }
         try {
-            return attributeTree(info.impl.getJavacTask(), (JCTree)tree, scope, new ArrayList<>());
+            return attributeTree(info.impl.getJavacTask(), env.toplevel, (JCTree)tree, scope, new ArrayList<>());
         } finally {
             NBResolve.instance(info.impl.getJavacTask().getContext()).restoreAccessbilityChecks();
         }
@@ -875,19 +877,18 @@ public final class TreeUtilities {
     
     public Scope reattributeTreeTo(Tree tree, Scope scope, Tree to) {
         Env<AttrContext> env = getEnv(scope);
-        copyInnerClassIndexes(env.tree, tree);
         if (scope instanceof NBScope && ((NBScope)scope).areAccessibilityChecksDisabled()) {
             NBResolve.instance(info.impl.getJavacTask().getContext()).disableAccessibilityChecks();
         }
         try {
-            return attributeTreeTo(info.impl.getJavacTask(), (JCTree)tree, scope, (JCTree)to, new ArrayList<>());
+            return attributeTreeTo(info.impl.getJavacTask(), env.toplevel, (JCTree)tree, scope, (JCTree)to, new ArrayList<>());
         } finally {
             NBResolve.instance(info.impl.getJavacTask().getContext()).restoreAccessbilityChecks();
         }
     }
     
     //from org/netbeans/modules/java/hints/spiimpl/Utilities.java:
-    private static TypeMirror attributeTree(JavacTaskImpl jti, Tree tree, Scope scope, final List<Diagnostic<? extends JavaFileObject>> errors) {
+    private static TypeMirror attributeTree(JavacTaskImpl jti, CompilationUnitTree cut, Tree tree, Scope scope, final List<Diagnostic<? extends JavaFileObject>> errors) {
         Log log = Log.instance(jti.getContext());
         JavaFileObject prev = log.useSource(new DummyJFO());
         Log.DiagnosticHandler discardHandler = new Log.DiscardDiagnosticHandler(log) {
@@ -912,6 +913,7 @@ public final class TreeUtilities {
             }
             return attr.attribStat((JCTree) tree,env);
         } finally {
+            unenter(jti.getContext(), (JCCompilationUnit) cut, (JCTree) tree);
 //            cacheContext.leave();
             log.useSource(prev);
             log.popDiagnosticHandler(discardHandler);
@@ -920,6 +922,15 @@ public final class TreeUtilities {
         }
     }
 
+    private static void unenter(Context ctx, JCCompilationUnit cut, JCTree tree) {
+        try {
+            Method m = Enter.class.getDeclaredMethod("unenter", JCCompilationUnit.class, JCTree.class);
+            m.invoke(Enter.instance(ctx), cut, tree);
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
     private static boolean VARIABLE_CAN_OWN_VARIABLES;
     static {
         boolean result;
@@ -932,7 +943,7 @@ public final class TreeUtilities {
         VARIABLE_CAN_OWN_VARIABLES = result;
     }
 
-    private static Scope attributeTreeTo(JavacTaskImpl jti, Tree tree, Scope scope, Tree to, final List<Diagnostic<? extends JavaFileObject>> errors) {
+    private static Scope attributeTreeTo(JavacTaskImpl jti, CompilationUnitTree cut, Tree tree, Scope scope, Tree to, final List<Diagnostic<? extends JavaFileObject>> errors) {
         Log log = Log.instance(jti.getContext());
         JavaFileObject prev = log.useSource(new DummyJFO());
         Log.DiagnosticHandler discardHandler = new Log.DiscardDiagnosticHandler(log) {
@@ -959,6 +970,7 @@ public final class TreeUtilities {
                 throw new IllegalStateException(ex);
             }
         } finally {
+            unenter(jti.getContext(), (JCCompilationUnit) cut, (JCTree) tree);
 //            cacheContext.leave();
             log.useSource(prev);
             log.popDiagnosticHandler(discardHandler);
@@ -1745,52 +1757,6 @@ public final class TreeUtilities {
 
     }
     
-    private void copyInnerClassIndexes(Tree from, Tree to) {
-        final int[] fromIdx = {-3};
-        ErrorAwareTreeScanner<Void, Void> scanner = new ErrorAwareTreeScanner<Void, Void>() {
-            @Override
-            public Void scan(Tree node, Void p) {
-                return fromIdx[0] < -1 ? super.scan(node, p) : null;
-            }            
-            @Override
-            public Void visitClass(ClassTree node, Void p) {
-                if (fromIdx[0] < -2)
-                    return super.visitClass(node, p);
-                if (node instanceof IndexedClassDecl)
-                    fromIdx[0] = ((IndexedClassDecl)node).index;
-                return null;
-            }
-            @Override
-            public Void visitMethod(MethodTree node, Void p) {
-                return fromIdx[0] < -2 ? super.visitMethod(node, p) : null;
-            }
-
-            @Override
-            public Void visitBlock(BlockTree node, Void p) {
-                int old = fromIdx[0];
-                fromIdx[0] = -2;
-                try {
-                    return super.visitBlock(node, p);
-                } finally {
-                    if (fromIdx[0] < -1)
-                        fromIdx[0] = old;
-                }
-            }            
-        };
-        scanner.scan(from, null);
-        if (fromIdx[0] < -1)
-            return;
-        scanner = new ErrorAwareTreeScanner<Void, Void>() {
-            @Override
-            public Void visitClass(ClassTree node, Void p) {
-                if (node instanceof IndexedClassDecl)
-                    ((IndexedClassDecl)node).index = fromIdx[0]++;
-                return null;
-            }
-        };
-        scanner.scan(to, null);
-    }
-
     private static class UncaughtExceptionsVisitor extends ErrorAwareTreePathScanner<Void, Set<TypeMirror>> {
         
         private final CompilationInfo info;
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/FindAnonymousVisitor.java b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/FindAnonymousVisitor.java
index bb38fca..30cb662 100644
--- a/java/java.source.base/src/org/netbeans/modules/java/source/parsing/FindAnonymousVisitor.java
+++ b/java/java.source.base/src/org/netbeans/modules/java/source/parsing/FindAnonymousVisitor.java
@@ -27,7 +27,6 @@ import org.netbeans.api.java.source.support.ErrorAwareTreeScanner;
 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
 import java.util.HashSet;
 import java.util.Set;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
 
 /**
  * Partial reparse helper visitor.
diff --git a/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreeUtilitiesTest.java b/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreeUtilitiesTest.java
index 6269918..c415776 100644
--- a/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreeUtilitiesTest.java
+++ b/java/java.source.base/test/unit/src/org/netbeans/api/java/source/TreeUtilitiesTest.java
@@ -48,6 +48,7 @@ import java.util.Set;
 import java.util.regex.Pattern;
 import javax.lang.model.SourceVersion;
 import javax.lang.model.element.Element;
+import javax.lang.model.element.TypeElement;
 import javax.lang.model.type.TypeMirror;
 import org.netbeans.api.java.classpath.ClassPath;
 import org.netbeans.api.java.source.Comment.Style;
@@ -77,6 +78,10 @@ public class TreeUtilitiesTest extends NbTestCase {
     private CompilationInfo info;
     
     private void prepareTest(String filename, String code) throws Exception {
+        prepareTest(filename, code, Phase.RESOLVED);
+    }
+
+    private void prepareTest(String filename, String code, Phase resolutionPhase) throws Exception {
         File work = getWorkDir();
         FileObject workFO = FileUtil.toFileObject(work);
         
@@ -99,7 +104,7 @@ public class TreeUtilitiesTest extends NbTestCase {
         
         assertNotNull(js);
         
-        info = SourceUtilsTestUtil.getCompilationInfo(js, JavaSource.Phase.RESOLVED);
+        info = SourceUtilsTestUtil.getCompilationInfo(js, resolutionPhase);
         
         assertNotNull(info);
     }
@@ -735,4 +740,32 @@ public class TreeUtilitiesTest extends NbTestCase {
         assertEquals(Kind.METHOD_INVOCATION, tp4.getLeaf().getKind());
         assertEquals("subList", ((MemberSelectTree) ((MethodInvocationTree) tp4.getLeaf()).getMethodSelect()).getIdentifier().toString());
     }
+
+    public void testAttributeTreesInnerClasses() throws Exception {
+        String code = "package test; public class Test { public void test1() { new Object() {}; new Object() {}; } public void test2() { new Object() {}; new Object() {}; } }";
+        prepareTest("Test", code, Phase.ELEMENTS_RESOLVED);
+
+        List<String> expectedNames = Arrays.asList("test.Test",
+                                                   "test.Test$1",
+                                                   "test.Test$2",
+                                                   "test.Test$3",
+                                                   "test.Test$4");
+
+        for (int i = 0; i < 2; i++) {
+            TreePath tp = info.getTreeUtilities().pathFor(code.indexOf("{}"));
+            Scope scope = info.getTrees().getScope(tp);
+            StatementTree parsed = info.getTreeUtilities().parseStatement("{ new Object() {}; new Object() {}; }", new SourcePositions[1]);
+            info.getTreeUtilities().attributeTree(parsed, scope);
+            info.impl.toPhase(Phase.RESOLVED);
+            List<String> actualNames = new ArrayList<>();
+            new TreePathScanner<Void, Void>() {
+                @Override
+                public Void visitClass(ClassTree node, Void p) {
+                    actualNames.add(info.getElements().getBinaryName((TypeElement) info.getTrees().getElement(getCurrentPath())).toString());
+                    return super.visitClass(node, p);
+                }
+            }.scan(info.getCompilationUnit(), null);
+            assertEquals(expectedNames, actualNames);
+        }
+    }
 }
diff --git a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/FindAnonymousVisitor.java b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/FindAnonymousVisitor.java
index 78c2f65..74fc4ca 100644
--- a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/FindAnonymousVisitor.java
+++ b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/FindAnonymousVisitor.java
@@ -24,10 +24,8 @@ import com.sun.source.tree.MethodTree;
 import com.sun.source.tree.Tree;
 import com.sun.source.tree.VariableTree;
 import org.netbeans.api.java.source.support.ErrorAwareTreeScanner;
-import com.sun.tools.javac.tree.JCTree.JCClassDecl;
 import java.util.HashSet;
 import java.util.Set;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
 
 /**
  * Partial reparse helper visitor.
@@ -38,14 +36,12 @@ class FindAnonymousVisitor extends ErrorAwareTreeScanner<Void,Void> {
 
     private static enum Mode {COLLECT, CHECK};
 
-    int firstInner = -1;
     int noInner;
     boolean hasLocalClass;
     final Set<Tree> docOwners = new HashSet<Tree>();
     private Mode mode = Mode.COLLECT;            
     
     public final void reset () {
-        this.firstInner = -1;
         this.noInner = 0;
         this.hasLocalClass = false;
         this.mode = Mode.CHECK;
@@ -53,9 +49,6 @@ class FindAnonymousVisitor extends ErrorAwareTreeScanner<Void,Void> {
 
     @Override
     public Void visitClass(ClassTree node, Void p) {
-        if (firstInner == -1) {
-            firstInner = ((IndexedClassDecl)node).index;
-        }
         if (node.getSimpleName().length() != 0) {
             hasLocalClass = true;
         }
diff --git a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserImpl.java b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserImpl.java
index 37c3474..1b2eebc 100644
--- a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserImpl.java
+++ b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserImpl.java
@@ -25,9 +25,11 @@ import com.sun.source.tree.Tree;
 import com.sun.source.util.TreePath;
 import com.sun.tools.javac.api.JavacTaskImpl;
 import com.sun.tools.javac.api.JavacTrees;
+import com.sun.tools.javac.comp.Enter;
 import com.sun.tools.javac.parser.LazyDocCommentTable;
 import com.sun.tools.javac.tree.EndPosTable;
 import com.sun.tools.javac.tree.JCTree;
+import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.CouplingAbort;
 import com.sun.tools.javac.util.Log;
@@ -108,7 +110,6 @@ public class PartialReparserImpl implements PartialReparser {
                 }
                 return false;
             }
-            final int firstInner = fav.firstInner;
             final int noInner = fav.noInner;
             final Context ctx = task.getContext();
             final TreeLoader treeLoader = TreeLoader.instance(ctx);
@@ -126,7 +127,8 @@ public class PartialReparserImpl implements PartialReparser {
                     ((CompilationInfoImpl.DiagnosticListenerImpl)dl).startPartialReparse(origStartPos, origEndPos);
                     long start = System.currentTimeMillis();
                     Map<JCTree,LazyDocCommentTable.Entry> docComments = new HashMap<>();
-                    block = pr.reparseMethodBody(cu, orig, newBody + " ", firstInner, docComments);
+                    Enter.instance(ctx).unenter((JCCompilationUnit) cu, ((JCTree.JCMethodDecl)orig).body);
+                    block = pr.reparseMethodBody(cu, orig, newBody + " ", docComments);
                     LOGGER.log(Level.FINER, "Reparsed method in: {0}", fo);     //NOI18N
                     if (block == null) {
                         LOGGER.log(
diff --git a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserService.java b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserService.java
index e9e48aa..d5c860c 100644
--- a/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserService.java
+++ b/java/java.source.nbjavac/src/org/netbeans/modules/java/source/nbjavac/parsing/PartialReparserService.java
@@ -80,12 +80,11 @@ public class PartialReparserService {
         this.context = context;
     }
 
-    public JCBlock reparseMethodBody(CompilationUnitTree topLevel, MethodTree methodToReparse, String newBodyText, int annonIndex,
+    public JCBlock reparseMethodBody(CompilationUnitTree topLevel, MethodTree methodToReparse, String newBodyText,
             final Map<? super JCTree,? super LazyDocCommentTable.Entry> docComments) {
         CharBuffer buf = CharBuffer.wrap((newBodyText+"\u0000").toCharArray(), 0, newBodyText.length());
         JavacParser parser = newParser(context, buf, ((JCBlock)methodToReparse.getBody()).pos, ((JCCompilationUnit)topLevel).endPositions);
         final JCStatement statement = parser.parseStatement();
-        NBParserFactory.assignAnonymousClassIndices(Names.instance(context), statement, Names.instance(context).empty, annonIndex);
         if (statement.getKind() == Tree.Kind.BLOCK) {
             if (docComments != null) {
                 docComments.putAll(((LazyDocCommentTable) parser.getDocComments()).table);
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBEnter.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBEnter.java
index 2ef77f3..f55ee77 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBEnter.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBEnter.java
@@ -29,7 +29,6 @@ import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
 import com.sun.tools.javac.tree.TreeInfo;
 import com.sun.tools.javac.util.Context;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
 
 /**
  *
@@ -72,11 +71,6 @@ public class NBEnter extends Enter {
         super.visitTopLevel(tree);
     }
 
-    //no @Override to ensure compatibility with ordinary javac:
-    protected int getIndex(JCClassDecl clazz) {
-        return clazz instanceof IndexedClassDecl ? ((IndexedClassDecl) clazz).index : -1;
-    }
-
     @Override
     public Env<AttrContext> getEnv(TypeSymbol sym) {
         Env<AttrContext> env = super.getEnv(sym);
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavacTrees.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavacTrees.java
index bdd05b5..6a4770f 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavacTrees.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBJavacTrees.java
@@ -18,24 +18,15 @@
  */
 package org.netbeans.lib.nbjavac.services;
 
-import com.sun.source.doctree.DocCommentTree;
-import com.sun.source.tree.ClassTree;
 import com.sun.source.util.TreePath;
 import com.sun.tools.javac.api.JavacTrees;
 import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.TreeInfo;
-import com.sun.tools.javac.tree.TreeMaker;
 import com.sun.tools.javac.util.Context;
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import javax.lang.model.element.Element;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
 
 /**
  *
@@ -55,29 +46,6 @@ public class NBJavacTrees extends JavacTrees {
     protected NBJavacTrees(Context context) {
         super(context);
     }
-
-    @Override
-    protected Copier createCopier(TreeMaker make) {
-        return new Copier(make) {
-            @Override public JCTree visitClass(ClassTree node, JCTree p) {
-                JCTree result;
-                try {
-                    MethodHandle superVisitClass = MethodHandles.lookup().findSpecial(Copier.class, "visitClass", MethodType.methodType(JCTree.class, new Class[]{ClassTree.class, JCTree.class}), getClass());
-                    result = (JCTree) superVisitClass.invokeExact(this, node, p);
-                } catch (Throwable ex) {
-                    Logger.getLogger(NBJavacTrees.class.getName()).log(Level.FINE, null, ex);
-                    result = super.visitClass(node, p);
-                }
-
-                if (node instanceof IndexedClassDecl && result instanceof IndexedClassDecl) {
-                    ((IndexedClassDecl) result).index = ((IndexedClassDecl) node).index;
-                }
-
-                return result;
-            }
-        };
-    }
-
     @Override
     public TreePath getPath(Element e) {
         TreePath path = super.getPath(e);
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java
index 6071a11..e9d5a0a 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBParserFactory.java
@@ -24,26 +24,18 @@ import com.sun.tools.javac.parser.ParserFactory;
 import com.sun.tools.javac.parser.ScannerFactory;
 import com.sun.tools.javac.parser.Tokens.Comment;
 import com.sun.tools.javac.tree.JCTree;
-import com.sun.tools.javac.tree.JCTree.JCBlock;
 import com.sun.tools.javac.tree.JCTree.JCClassDecl;
-import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
 import com.sun.tools.javac.tree.JCTree.JCEnhancedForLoop;
 import com.sun.tools.javac.tree.JCTree.JCExpression;
-import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
 import com.sun.tools.javac.tree.JCTree.JCModifiers;
 import com.sun.tools.javac.tree.JCTree.JCStatement;
 import com.sun.tools.javac.tree.JCTree.JCTypeParameter;
 import com.sun.tools.javac.tree.TreeInfo;
-import com.sun.tools.javac.tree.TreeScanner;
 import com.sun.tools.javac.util.Context;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.util.Name;
 import com.sun.tools.javac.util.Names;
 import com.sun.tools.javac.util.Position;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Stack;
-import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl;
 
 /**
  *
@@ -132,13 +124,6 @@ public class NBParserFactory extends ParserFactory {
         }
 
         @Override
-        public JCCompilationUnit parseCompilationUnit() {
-            JCCompilationUnit toplevel = super.parseCompilationUnit();
-            assignAnonymousClassIndices(names, toplevel, null, -1);
-            return toplevel;
-        }
-
-        @Override
         public int getEndPos(JCTree jctree) {
             return TreeInfo.getEndPos(jctree, endPosTable);
         }
@@ -210,116 +195,4 @@ public class NBParserFactory extends ParserFactory {
         }
     }
 
-    public static void assignAnonymousClassIndices(Names names, JCTree tree, Name name, int startNumber) {
-        AssignAnonymousIndices aai = new AssignAnonymousIndices(names);
-
-        if (name != null) {
-            aai.newAnonScope(name, startNumber);
-        }
-
-        aai.scan(tree);
-    }
-
-    private static final class AssignAnonymousIndices extends TreeScanner {
-        private final Names names;
-
-        public AssignAnonymousIndices(Names names) {
-            this.names = names;
-        }
-
-        /**
-         *Represents a scope for anon class number assignment
-         */
-        private static class AnonScope {
-            public boolean localClass;
-            private final Name parentDecl;
-            private int currentNumber;
-            private Map<Name,Integer> localClasses;
-
-            private AnonScope (final Name name, final int startNumber) {
-                assert name != null;
-                this.parentDecl = name;
-                this.currentNumber = startNumber;
-            }
-
-            public int assignNumber () {
-                int ret = this.currentNumber;
-                if (this.currentNumber != -1) {
-                    this.currentNumber++;
-                }
-                return ret;
-            }
-
-            public int assignLocalNumber (final Name name) {
-                if (localClasses == null) {
-                    localClasses = new HashMap<Name,Integer> ();
-                }
-                Integer num = localClasses.get(name);
-                if (num == null) {
-                    num = 1;
-                }
-                else {
-                    num += 1;
-                }
-                localClasses.put(name, num);
-                return num.intValue();
-            }
-
-            @Override
-            public String toString () {
-                return String.format("%s : %d",this.parentDecl.toString(), this.currentNumber);
-            }
-        }
-
-        private final Map<Name, AnonScope> anonScopeMap = new HashMap<Name, AnonScope>();
-        private final Stack<AnonScope> anonScopes = new Stack<AnonScope> ();
-
-        void newAnonScope(final Name name) {
-            newAnonScope(name, 1);
-        }
-
-        public void newAnonScope(final Name name, final int startNumber) {
-            AnonScope parent = anonScopes.isEmpty() ? null : anonScopes.peek();
-            Name fqn = parent != null && parent.parentDecl != names.empty ? parent.parentDecl.append('.', name) : name;
-            AnonScope scope = anonScopeMap.get(fqn);
-            if (scope == null) {
-                scope = new AnonScope(name, startNumber);
-                anonScopeMap.put(fqn, scope);
-            }
-            anonScopes.push(scope);
-        }
-
-        @Override
-        public void visitClassDef(JCClassDecl tree) {
-            if (tree.name == names.empty && tree instanceof IndexedClassDecl) {
-                ((IndexedClassDecl) tree).index = this.anonScopes.peek().assignNumber();
-            }
-            newAnonScope(tree.name);
-            try {
-                super.visitClassDef(tree);
-            } finally {
-                this.anonScopes.pop();
-            }
-            if (!this.anonScopes.isEmpty() && this.anonScopes.peek().localClass && tree.name != names.empty && tree instanceof IndexedClassDecl) {
-                ((IndexedClassDecl) tree).index = this.anonScopes.peek().assignLocalNumber(tree.name);
-            }
-        }
-        @Override
-        public void visitBlock(JCBlock tree) {
-            final AnonScope as = this.anonScopes.peek();
-            boolean old = as.localClass;
-            as.localClass = true;
-            try {
-                super.visitBlock(tree);
-            } finally {
-                as.localClass = old;
-            }
-        }
-        @Override
-        public void visitApply(JCMethodInvocation tree) {
-            scan(tree.args);
-            scan(tree.meth);
-        }
-    }
-
 }
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBTreeMaker.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBTreeMaker.java
index 3e716bf..c019409 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBTreeMaker.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBTreeMaker.java
@@ -70,30 +70,4 @@ public class NBTreeMaker extends TreeMaker {
         return new NBTreeMaker(toplevel, names, types, syms);
     }
 
-    @Override
-    public JCClassDecl ClassDef(JCModifiers mods, Name name, List<JCTypeParameter> typarams, JCExpression extending, List<JCExpression> implementing, List<JCTree> defs) {
-        try {
-            IndexedClassDecl result = new IndexedClassDecl(mods, name, typarams, extending, implementing, defs, null);
-
-            result.pos = pos;
-
-            return result;
-        } catch (NoSuchMethodError err) {
-            return super.ClassDef(mods, name, typarams, extending, implementing, defs);
-        }
-    }
-
-    public static class IndexedClassDecl extends JCClassDecl {
-        public int index;
-        protected IndexedClassDecl(JCModifiers mods,
-                                   Name name,
-                                   List<JCTypeParameter> typarams,
-                                   JCExpression extending,
-                                   List<JCExpression> implementing,
-                                   List<JCTree> defs,
-                                   ClassSymbol sym) {
-            super(mods, name, typarams, extending, implementing, defs, sym);
-            this.index = -1;
-        }
-    }
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists