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