Uploaded image for project: 'NetBeans'
  1. NetBeans
  2. NETBEANS-1224

Code completion for lambda parameter throwing exception in jdk-11

    XMLWordPrintableJSON

Details

    Description

      If we have a functional interface as method argument and we want to implement it using lambda expression , then on trying to do code-completion for lambda param exception occurs.

      The issue is reproducible in Open JDK-11 with or without nb-javac(for jdk-11)

      The issue was reproduced using OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) 

      Please find below sample code for simulating the issue.

      public class JavaApplication1 {
      public static void main(String[] args)

      { JavaApplication1 obj = new JavaApplication1(); obj.test((var a,^ )); }

      private void test(FuncInterface f) {}
      interface FuncInterface{ public void test(String s, int p, long v); }

      }

       

      On doing ctl+space at  '^' throwing below exception.

      =====================

      java.lang.NullPointerException
      at jdk.compiler/com.sun.tools.javac.code.Types.subst(Types.java:3258)
      at jdk.compiler/com.sun.tools.javac.comp.InferenceContext.asUndetVar(InferenceContext.java:207)
      at jdk.compiler/com.sun.tools.javac.comp.InferenceContext.asUndetVars(InferenceContext.java:213)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.checkLambdaCompatible(Attr.java:2872)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.visitLambda(Attr.java:2610)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1807)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:655)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:497)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr.attribSpeculative(DeferredAttr.java:480)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$4.complete(DeferredAttr.java:368)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:334)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredType.check(DeferredAttr.java:320)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.recover(DeferredAttr.java:1033)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.typeOf(DeferredAttr.java:1022)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve$ResolveDeferredRecoveryMap.typeOf(Resolve.java:2554)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredTypeMap.visitType(DeferredAttr.java:989)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$RecoveryDeferredTypeMap.visitType(DeferredAttr.java:1012)
      at jdk.compiler/com.sun.tools.javac.comp.DeferredAttr$DeferredTypeMap.visitType(DeferredAttr.java:975)
      at jdk.compiler/com.sun.tools.javac.code.Type.accept(Type.java:214)
      at jdk.compiler/com.sun.tools.javac.code.Types$MapVisitor.visit(Types.java:4940)
      at jdk.compiler/com.sun.tools.javac.code.Types$TypeMapping.apply(Types.java:4951)
      at jdk.compiler/com.sun.tools.javac.code.Types$TypeMapping.apply(Types.java:4949)
      at jdk.compiler/com.sun.tools.javac.util.List.map(List.java:425)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve$8.getArgumentTypes(Resolve.java:2542)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessInternal(Resolve.java:2463)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve.accessMethod(Resolve.java:2483)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve$BasicLookupHelper.access(Resolve.java:3297)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve$10.access(Resolve.java:2651)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve.lookupMethod(Resolve.java:3538)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:2641)
      at jdk.compiler/com.sun.tools.javac.comp.Resolve.resolveQualifiedMethod(Resolve.java:2635)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3721)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3601)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2110)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:655)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.visitApply(Attr.java:2006)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1634)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:655)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:702)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.visitExec(Attr.java:1773)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1452)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:655)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:724)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:743)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1294)
      at org.netbeans.lib.nbjavac.services.NBAttr.visitBlock(NBAttr.java:69)
      at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1020)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:655)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:724)
      at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStatToTree(Attr.java:420)
      at jdk.compiler/com.sun.tools.javac.api.JavacTrees.attribStatToTree(JavacTrees.java:937)
      at jdk.compiler/com.sun.tools.javac.api.JavacTrees.getAttrContext(JavacTrees.java:911)
      at jdk.compiler/com.sun.tools.javac.api.JavacTrees.getScope(JavacTrees.java:785)
      at jdk.compiler/com.sun.tools.javac.api.JavacTrees.getScope(JavacTrees.java:165)
      at org.netbeans.modules.java.completion.BaseTask.getEnvImpl(BaseTask.java:319)
      at org.netbeans.modules.java.completion.BaseTask.getCompletionEnvironment(BaseTask.java:269)
      at org.netbeans.modules.java.completion.JavaCompletionTask.resolve(JavaCompletionTask.java:288)
      at org.netbeans.modules.java.completion.BaseTask.run(BaseTask.java:93)
      at org.netbeans.modules.java.completion.JavaCompletionTask.run(JavaCompletionTask.java:59)
      at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
      at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:130)
      at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:114)
      at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
      at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
      at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
      at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
      at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
      at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
      at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:178)
      Caused: org.netbeans.modules.parsing.spi.ParseException
      at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:186)
      at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:81)
      [catch] at org.netbeans.modules.editor.java.JavaCompletionProvider$JavaCompletionQuery.query(JavaCompletionProvider.java:193)
      at org.netbeans.spi.editor.completion.support.AsyncCompletionTask.run(AsyncCompletionTask.java:198)
      at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
      at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
      at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
      at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)

      Attachments

        1. TestClass.java
          0.3 kB
          ARUNAVA SINHA

        Issue Links

          Activity

            People

              Unassigned Unassigned
              arunava.sinha ARUNAVA SINHA
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m