You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2019/02/12 14:55:11 UTC
[incubator-netbeans] branch master updated: Fixing vanilla javac
indexing for enum constants which have erroneous constructor parameters,
fixing the VanillaCompileWorkerTest when running with nb-javac
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 712db86 Fixing vanilla javac indexing for enum constants which have erroneous constructor parameters, fixing the VanillaCompileWorkerTest when running with nb-javac
712db86 is described below
commit 712db86d9fe8fc1cc5192a369119d6f79a94713a
Author: Jan Lahoda <jl...@netbeans.org>
AuthorDate: Sun Jan 6 20:22:35 2019 +0100
Fixing vanilla javac indexing for enum constants which have erroneous constructor parameters, fixing the VanillaCompileWorkerTest when running with nb-javac
---
.../java/source/indexing/VanillaCompileWorker.java | 17 +++++++++++
.../source/indexing/VanillaCompileWorkerTest.java | 33 ++++++++++++++++++++--
2 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java b/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java
index 00ddbd5..fcf16a2 100644
--- a/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java
+++ b/java/java.source.base/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorker.java
@@ -32,7 +32,9 @@ import com.sun.tools.javac.api.JavacTaskImpl;
import com.sun.tools.javac.code.Attribute;
import com.sun.tools.javac.code.Flags;
import com.sun.tools.javac.code.Symbol;
+import com.sun.tools.javac.code.Symbol.MethodSymbol;
import com.sun.tools.javac.code.Symbol.TypeSymbol;
+import com.sun.tools.javac.code.Symbol.VarSymbol;
import com.sun.tools.javac.code.SymbolMetadata;
import com.sun.tools.javac.code.Symtab;
import com.sun.tools.javac.code.Type;
@@ -40,6 +42,7 @@ import com.sun.tools.javac.code.Type.ClassType;
import com.sun.tools.javac.code.Type.ForAll;
import com.sun.tools.javac.code.Type.TypeVar;
import com.sun.tools.javac.code.TypeTag;
+import com.sun.tools.javac.code.Types;
import com.sun.tools.javac.comp.AttrContext;
import com.sun.tools.javac.comp.CompileStates.CompileState;
import com.sun.tools.javac.comp.Enter;
@@ -48,7 +51,9 @@ import com.sun.tools.javac.comp.Modules;
import com.sun.tools.javac.main.JavaCompiler;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCClassDecl;
+import com.sun.tools.javac.tree.JCTree.JCExpression;
import com.sun.tools.javac.tree.JCTree.JCModuleDecl;
+import com.sun.tools.javac.tree.JCTree.JCNewClass;
import com.sun.tools.javac.tree.JCTree.JCPackageDecl;
import com.sun.tools.javac.tree.TreeMaker;
import org.netbeans.lib.nbjavac.services.CancelAbort;
@@ -462,6 +467,7 @@ final class VanillaCompileWorker extends CompileWorker {
private void dropMethodsAndErrors(com.sun.tools.javac.util.Context ctx, CompilationUnitTree cut) {
Symtab syms = Symtab.instance(ctx);
Names names = Names.instance(ctx);
+ Types types = Types.instance(ctx);
TreeMaker make = TreeMaker.instance(ctx);
//TODO: should preserve error types!!!
new TreePathScanner<Void, Void>() {
@@ -470,6 +476,17 @@ final class VanillaCompileWorker extends CompileWorker {
JCTree.JCVariableDecl decl = (JCTree.JCVariableDecl) node;
if ((decl.mods.flags & Flags.ENUM) == 0) {
decl.init = null;
+ } else {
+ MethodSymbol constructor = (MethodSymbol) decl.type.tsym.members().findFirst(names.init);
+ ListBuffer<JCExpression> args = new ListBuffer<>();
+ for (VarSymbol param : constructor.params) {
+ args.add(make.TypeCast(param.type, make.Literal(TypeTag.BOT, null).setType(syms.botType)));
+ }
+ JCNewClass nct = (JCNewClass) decl.init;
+ nct.args = args.toList();
+ nct.constructor = constructor;
+ nct.constructorType = constructor.type;
+ nct.def = null;
}
decl.sym.type = decl.type = error2Object(decl.type);
clearAnnotations(decl.sym.getMetadata());
diff --git a/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorkerTest.java b/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorkerTest.java
index 7532477..46947f5 100644
--- a/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorkerTest.java
+++ b/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/indexing/VanillaCompileWorkerTest.java
@@ -24,8 +24,11 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+import junit.framework.Test;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertTrue;
+import org.netbeans.junit.NbTestSuite;
+import org.netbeans.modules.java.source.NoJavacHelper;
import org.netbeans.modules.java.source.indexing.CompileWorker.ParsingOutput;
import org.netbeans.modules.java.source.indexing.JavaCustomIndexer.CompileTuple;
import org.netbeans.modules.parsing.spi.indexing.Context;
@@ -149,8 +152,25 @@ public class VanillaCompileWorkerTest extends CompileWorkerTestBase {
createdFiles.add(getWorkDir().toURI().relativize(created.toURI()).getPath());
}
- assertEquals(new HashSet<String>(Arrays.asList("cache/s1/java/15/classes/test/Test4.sig",
- "cache/s1/java/15/classes/test/Test4$1.sig")),
+ assertEquals(new HashSet<String>(Arrays.asList("cache/s1/java/15/classes/test/Test4.sig")),
+ createdFiles);
+ //TODO: check file content!!!
+ }
+
+ public void testRepairEnum2() throws Exception {
+ ParsingOutput result = runIndexing(Arrays.asList(compileTuple("test/Test4.java", "package test; public enum Test4 { B(Unknown.unknownO(), Unknown.unknownB(), Unknown.unknownI()) {}; private Test4(String str, boolean b, int i) {} }")),
+ Arrays.asList());
+
+ assertFalse(result.lowMemory);
+ assertTrue(result.success);
+
+ Set<String> createdFiles = new HashSet<String>();
+
+ for (File created : result.createdFiles) {
+ createdFiles.add(getWorkDir().toURI().relativize(created.toURI()).getPath());
+ }
+
+ assertEquals(new HashSet<String>(Arrays.asList("cache/s1/java/15/classes/test/Test4.sig")),
createdFiles);
//TODO: check file content!!!
}
@@ -250,4 +270,13 @@ public class VanillaCompileWorkerTest extends CompileWorkerTestBase {
//TODO: check file content!!!
}
+ public static void noop() {}
+
+ public static Test suite() {
+ if (NoJavacHelper.hasNbJavac()) {
+ return new VanillaCompileWorkerTest("noop");
+ } else {
+ return new NbTestSuite(VanillaCompileWorkerTest.class);
+ }
+ }
}
---------------------------------------------------------------------
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