diff -r 69c49ad2a2e7 java.source.base/src/org/netbeans/api/java/source/SourceUtils.java --- a/java.source.base/src/org/netbeans/api/java/source/SourceUtils.java Fri Sep 02 08:46:48 2016 +0200 +++ b/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. diff -r 69c49ad2a2e7 jshell.support/nbproject/project.xml --- a/jshell.support/nbproject/project.xml Fri Sep 02 08:46:48 2016 +0200 +++ b/jshell.support/nbproject/project.xml Fri Sep 02 08:49:15 2016 +0200 @@ -308,6 +308,7 @@ + 2.16 diff -r 69c49ad2a2e7 jshell.support/src/org/netbeans/modules/jshell/support/SemicolonMissingRule.java --- a/jshell.support/src/org/netbeans/modules/jshell/support/SemicolonMissingRule.java Fri Sep 02 08:46:48 2016 +0200 +++ b/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();