This is an automated email from the ASF dual-hosted git repository. jlahoda pushed a commit to branch jdk-javac in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/jdk-javac by this push: new eafb250 Fixing several bugs reported by Matthias: disabling binary indexer while on JDK 8; fixing logic for multi source without nb-javac. eafb250 is described below commit eafb250e0f8a861321359f58dfb92d826c63312c Author: Jan Lahoda <jlah...@netbeans.org> AuthorDate: Mon Dec 18 07:42:35 2017 +0100 Fixing several bugs reported by Matthias: disabling binary indexer while on JDK 8; fixing logic for multi source without nb-javac. --- .../netbeans/modules/java/source/base/layer.xml | 3 -- .../java/source/indexing/JavaBinaryIndexer.java | 7 ++++ .../modules/java/source/parsing/JavacParser.java | 4 +- .../java/source/parsing/JavacParserTest.java | 48 +++++++++++++++++++++- 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/java.source.base/src/org/netbeans/modules/java/source/base/layer.xml b/java.source.base/src/org/netbeans/modules/java/source/base/layer.xml index 1dad21e..dd4d338 100644 --- a/java.source.base/src/org/netbeans/modules/java/source/base/layer.xml +++ b/java.source.base/src/org/netbeans/modules/java/source/base/layer.xml @@ -23,9 +23,6 @@ <filesystem> <folder name="Editors"> - <file name="JavaBinaryIndexer.instance"> - <attr name="instanceClass" stringvalue="org.netbeans.modules.java.source.indexing.JavaBinaryIndexer$Factory"/> - </file> <file name="COSSynchronizingIndexer.instance"> <attr name="instanceClass" stringvalue="org.netbeans.modules.java.source.indexing.COSSynchronizingIndexer$Factory"/> </file> diff --git a/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaBinaryIndexer.java b/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaBinaryIndexer.java index f0c3418..7875bda 100644 --- a/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaBinaryIndexer.java +++ b/java.source.base/src/org/netbeans/modules/java/source/indexing/JavaBinaryIndexer.java @@ -44,11 +44,13 @@ import javax.tools.DiagnosticListener; import javax.tools.JavaFileObject; import org.netbeans.api.annotations.common.NonNull; +import org.netbeans.api.editor.mimelookup.MimeRegistration; import org.netbeans.api.java.classpath.ClassPath; import org.netbeans.api.java.platform.JavaPlatform; import org.netbeans.api.java.source.ClasspathInfo; import org.netbeans.api.java.source.ElementHandle; import org.netbeans.modules.java.source.ElementUtils; +import org.netbeans.modules.java.source.NoJavacHelper; import org.netbeans.modules.java.source.base.Module; import org.netbeans.modules.java.source.parsing.FileManagerTransaction; import org.netbeans.modules.java.source.parsing.FileObjects; @@ -289,5 +291,10 @@ public class JavaBinaryIndexer extends BinaryIndexer { Exceptions.printStackTrace(ex); } } + + @MimeRegistration(mimeType="", service=BinaryIndexerFactory.class) + public static Factory register() { + return NoJavacHelper.hasWorkingJavac() ? new Factory() : null; + } } } diff --git a/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java b/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java index c878ef1..dbacaa3 100644 --- a/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java +++ b/java.source.base/src/org/netbeans/modules/java/source/parsing/JavacParser.java @@ -406,8 +406,8 @@ public class JavacParser extends Parser { default: init (snapshot, task, false); ciImpl = createCurrentInfo(this, file, root, snapshot, - sequentialParsing != null && ciImpl == null ? null : ciImpl.getJavacTask(), - sequentialParsing != null && ciImpl == null ? null : ciImpl.getDiagnosticListener()); + sequentialParsing == null || ciImpl == null ? null : ciImpl.getJavacTask(), + sequentialParsing == null || ciImpl == null ? null : ciImpl.getDiagnosticListener()); } success = true; } finally { diff --git a/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/JavacParserTest.java b/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/JavacParserTest.java index 8b24495..0a3fd93 100644 --- a/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/JavacParserTest.java +++ b/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/JavacParserTest.java @@ -31,6 +31,7 @@ import java.io.InputStream; import java.net.URL; import java.util.Arrays; import java.util.HashSet; +import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import javax.lang.model.element.TypeElement; @@ -51,11 +52,14 @@ import org.netbeans.api.lexer.TokenHierarchy; import org.netbeans.api.lexer.TokenSequence; import org.netbeans.junit.NbTestCase; import org.netbeans.modules.java.source.tasklist.CompilerSettings; +import org.netbeans.modules.openide.util.GlobalLookup; import org.netbeans.spi.java.classpath.support.ClassPathSupport; import org.openide.cookies.EditorCookie; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.loaders.DataObject; +import org.openide.util.Lookup; +import org.openide.util.lookup.Lookups; /** * @@ -75,7 +79,7 @@ public class JavacParserTest extends NbTestCase { prepareTest(); } - public void Dtest1() throws Exception { + public void testMultiSource() throws Exception { FileObject f1 = createFile("test/Test1.java", "package test; class Test1"); FileObject f2 = createFile("test/Test2.java", "package test; class Test2{}"); FileObject f3 = createFile("test/Test3.java", "package test; class Test3{}"); @@ -86,7 +90,7 @@ public class JavacParserTest extends NbTestCase { SourceUtilsTestUtil.compileRecursively(sourceRoot); js.runUserActionTask(new Task<CompilationController>() { - + TypeElement storedJLObject; public void run(CompilationController parameter) throws Exception { if ("Test3".equals(parameter.getFileObject().getName())) { TypeElement te = parameter.getElements().getTypeElement("test.Test1"); @@ -95,10 +99,50 @@ public class JavacParserTest extends NbTestCase { } assertEquals(Phase.PARSED, parameter.toPhase(Phase.PARSED)); assertNotNull(parameter.getCompilationUnit()); + TypeElement jlObject = parameter.getElements().getTypeElement("java.lang.Object"); + + if (storedJLObject == null) { + storedJLObject = jlObject; + } else { + assertEquals(storedJLObject, jlObject); + } } }, true); } + public void testMultiSourceVanilla() throws Exception { + Lookup noSP = Lookups.exclude(Lookup.getDefault(), JavacParser.SequentialParsing.class); + GlobalLookup.execute(noSP, () -> { + try { + FileObject f1 = createFile("test/Test1.java", "package test; class Test1"); + FileObject f2 = createFile("test/Test2.java", "package test; class Test2{}"); + FileObject f3 = createFile("test/Test3.java", "package test; class Test3{}"); + + ClasspathInfo cpInfo = ClasspathInfo.create(f2); + JavaSource js = JavaSource.create(cpInfo, f2, f3); + + SourceUtilsTestUtil.compileRecursively(sourceRoot); + + js.runUserActionTask(new Task<CompilationController>() { + TypeElement storedJLObject; + public void run(CompilationController parameter) throws Exception { + assertEquals(Phase.PARSED, parameter.toPhase(Phase.PARSED)); + assertNotNull(parameter.getCompilationUnit()); + TypeElement jlObject = parameter.getElements().getTypeElement("java.lang.Object"); + + if (storedJLObject == null) { + storedJLObject = jlObject; + } else { + assertFalse(Objects.equals(storedJLObject, jlObject)); + } + } + }, true); + } catch (Exception ex) { + throw new AssertionError(ex); + } + }); + } + public void test199332() throws Exception { settings.commandLine = "-Xlint:serial"; -- To stop receiving notification emails like this one, please contact ['"comm...@netbeans.apache.org" <comm...@netbeans.apache.org>'].