--- a/java.source.base/src/org/netbeans/api/java/source/SourceUtils.java Fri Sep 02 08:46:48 2016 +0200
+++ a/java.source.base/src/org/netbeans/api/java/source/SourceUtils.java Fri Sep 02 08:49:15 2016 +0200
@@ -87,6 +87,7 @@
import com.sun.tools.javac.util.Context;
import javax.swing.SwingUtilities;
+import javax.tools.Diagnostic;
import org.netbeans.api.annotations.common.CheckForNull;
import org.netbeans.api.annotations.common.NonNull;
@@ -103,7 +104,6 @@
import org.netbeans.api.java.source.matching.Pattern;
import org.netbeans.api.lexer.TokenHierarchy;
import org.netbeans.api.lexer.TokenSequence;
-import org.netbeans.api.project.FileOwnerQuery;
import org.netbeans.modules.java.preprocessorbridge.spi.ImportProcessor;
import org.netbeans.modules.java.source.ElementHandleAccessor;
import org.netbeans.modules.java.source.JavadocHelper;
@@ -111,6 +111,7 @@
import org.netbeans.modules.java.source.indexing.JavaCustomIndexer;
import org.netbeans.modules.java.source.parsing.ClasspathInfoProvider;
import org.netbeans.modules.java.source.parsing.FileObjects;
+import org.netbeans.modules.java.source.parsing.Hacks;
import org.netbeans.modules.java.source.parsing.JavacParser;
import org.netbeans.modules.java.source.save.DiffContext;
import org.netbeans.modules.java.source.usages.ClassIndexImpl;
@@ -1149,6 +1150,20 @@
return null;
}
}
+
+ /**
+ * Extracts diagnostic params from a diagnostic. Gets under hood of Javac
+ * Diagnostic objects and extracts parameters which are otherwise just used
+ * to produce a message. Keep in mind that the positions and types of parameters
+ * may change in each nbjavac update!
+ * @param d diagnostic
+ * @param index parameter index to extract
+ * @return parameter value, null if index is out of range
+ * @since 2.16
+ */
+ public static Object getDiagnosticParam(Diagnostic> d, int index) {
+ return Hacks.getDiagnosticParam(d, index);
+ }
/**
* Returns all elements of the given scope that are declared after given position in a source.
--- a/jshell.support/nbproject/project.xml Fri Sep 02 08:46:48 2016 +0200
+++ a/jshell.support/nbproject/project.xml Fri Sep 02 08:49:15 2016 +0200
@@ -308,6 +308,7 @@
+ 2.16
--- a/jshell.support/src/org/netbeans/modules/jshell/support/SemicolonMissingRule.java Fri Sep 02 08:46:48 2016 +0200
+++ a/jshell.support/src/org/netbeans/modules/jshell/support/SemicolonMissingRule.java Fri Sep 02 08:49:15 2016 +0200
@@ -42,6 +42,7 @@
package org.netbeans.modules.jshell.support;
import com.sun.source.util.TreePath;
+import com.sun.tools.javac.parser.Tokens;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -50,6 +51,7 @@
import javax.swing.text.Document;
import javax.tools.Diagnostic;
import org.netbeans.api.java.source.CompilationInfo;
+import org.netbeans.api.java.source.SourceUtils;
import org.netbeans.modules.java.hints.spi.OverrideErrorMessage;
//import org.netbeans.modules.java.source.parsing.Hacks;
@@ -64,10 +66,10 @@
@Override
public String createMessage(CompilationInfo info, Diagnostic d, int offset, TreePath treePath, Data data) {
-// Object dp = Hacks.getDiagnosticParam(d, 0);
-// if (dp != Tokens.TokenKind.SEMI) {
-// return null;
-// }
+ Object dp = SourceUtils.getDiagnosticParam(d, 0);
+ if (dp != Tokens.TokenKind.SEMI) {
+ return null;
+ }
int off = offset;
final CharSequence seq = info.getSnapshot().getText();