Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8190510

JShell: Underlying cause of NPE in SourceCodeAnalysis.completionSuggestions()

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • 9
    • tools
    • None

      JDK-8188072 describes an NPE. The immediate fix to that bug is to prevent any exception of that class from crashing JShell or the jshell tool -- by catching the error.

      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:

            jlahoda Jan Lahoda
            rfield Robert Field (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: