However, there is an underlying bug (either in the compiler API or JShell). It should be tracked down. That is this bug.
To reproduce (now) the tool should be in debug mode --
jshell> /debug
| Debugging on
jshell> for (int:<TAB>
Where <TAB> is the tab character.
Currently this produces --
jshell> /debug
| Debugging on
jshell> for (int:Fatal error: Exception thrown in SourceCodeAnalysisImpl.completionSuggestions: null
java.lang.NullPointerException
at jdk.compiler/com.sun.tools.javac.tree.TreeInfo.getStartPos(TreeInfo.java:450)
at jdk.compiler/com.sun.tools.javac.api.JavacTrees$1.getStartPosition(JavacTrees.java:242)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:576)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.visitEnhancedForLoop(TreeScanner.java:304)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCEnhancedForLoop.accept(JCTree.java:1172)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1032)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:206)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:144)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.pathFor(SourceCodeAnalysisImpl.java:593)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.lambda$computeSuggestions$13(SourceCodeAnalysisImpl.java:305)
at jdk.jshell/jdk.jshell.TaskFactory.lambda$runTask$4(TaskFactory.java:202)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskPool.getTask(JavacTaskPool.java:180)
at jdk.jshell/jdk.jshell.TaskFactory.runTask(TaskFactory.java:196)
at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:166)
at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:152)
at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:141)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.computeSuggestions(SourceCodeAnalysisImpl.java:301)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.completionSuggestionsImpl(SourceCodeAnalysisImpl.java:294)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.completionSuggestions(SourceCodeAnalysisImpl.java:256)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.complete(ConsoleIOContext.java:225)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.access$100(ConsoleIOContext.java:72)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext$1.complete(ConsoleIOContext.java:103)
at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2685)
at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2280)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.readLine(ConsoleIOContext.java:142)
at jdk.jshell/jdk.internal.jshell.tool.JShellTool.run(JShellTool.java:1127)
at jdk.jshell/jdk.internal.jshell.tool.JShellTool.start(JShellTool.java:919)
at jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder.run(JShellToolBuilder.java:239)
at jdk.jshell/jdk.internal.jshell.tool.JShellToolProvider.main(JShellToolProvider.java:119)
Fatal error: Exception thrown in SourceCodeAnalysisImpl.documentation: null
java.lang.NullPointerException
at jdk.compiler/com.sun.tools.javac.tree.TreeInfo.getStartPos(TreeInfo.java:450)
at jdk.compiler/com.sun.tools.javac.api.JavacTrees$1.getStartPosition(JavacTrees.java:242)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:576)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.visitEnhancedForLoop(TreeScanner.java:304)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCEnhancedForLoop.accept(JCTree.java:1172)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:248)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1032)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:206)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:898)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:90)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:187)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:808)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:570)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:105)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:113)
at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:144)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl$2.scan(SourceCodeAnalysisImpl.java:584)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.pathFor(SourceCodeAnalysisImpl.java:593)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.lambda$documentationImpl$51(SourceCodeAnalysisImpl.java:1180)
at jdk.jshell/jdk.jshell.TaskFactory.lambda$runTask$4(TaskFactory.java:202)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskPool.getTask(JavacTaskPool.java:180)
at jdk.jshell/jdk.jshell.TaskFactory.runTask(TaskFactory.java:196)
at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:166)
at jdk.jshell/jdk.jshell.TaskFactory.analyze(TaskFactory.java:147)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.documentationImpl(SourceCodeAnalysisImpl.java:1177)
at jdk.jshell/jdk.jshell.SourceCodeAnalysisImpl.documentation(SourceCodeAnalysisImpl.java:1152)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.complete(ConsoleIOContext.java:227)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.access$100(ConsoleIOContext.java:72)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext$1.complete(ConsoleIOContext.java:103)
at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2685)
at jdk.internal.le/jdk.internal.jline.console.ConsoleReader.readLine(ConsoleReader.java:2280)
at jdk.jshell/jdk.internal.jshell.tool.ConsoleIOContext.readLine(ConsoleIOContext.java:142)
at jdk.jshell/jdk.internal.jshell.tool.JShellTool.run(JShellTool.java:1127)
at jdk.jshell/jdk.internal.jshell.tool.JShellTool.start(JShellTool.java:919)
at jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder.run(JShellToolBuilder.java:239)
at jdk.jshell/jdk.internal.jshell.tool.JShellToolProvider.main(JShellToolProvider.java:119)
jshell> for (int:
- relates to
-
JDK-8188072 JShell: NPE in SourceCodeAnalysis.completionSuggestions()
-
- Resolved
-