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

Compiler crash when compiling record patterns with var

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 21
    • 21
    • tools
    • None
    • b24

      class Vars {
          record Point(int x, int y) {}
          enum Color {RED, GREEN, BLUE}
          record ColoredPoint (Point p, Color c) {}

          public static void main(String[] args) {
              var cp = new ColoredPoint(new Point(3,4), Color.RED);
              foo(cp);
          }

          public static void foo(Object o) {
              if (o instanceof ColoredPoint(var(var x, var y), var c)) {
                  System.out.println(y);
              }
          }
      }

      The offending expression is:

         o instanceof ColoredPoint(var(var x, var y), var c)

      where the first var is erroneously placed.

      Stacktrace:

      An exception has occurred in the compiler (21-internal). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
      java.lang.NullPointerException: Cannot invoke "com.sun.tools.javac.tree.JCTree.accept(com.sun.tools.javac.tree.JCTree$Visitor)" because "tree" is null
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribType(Attr.java:729)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribType(Attr.java:722)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitRecordPattern(Attr.java:4197)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCRecordPattern.accept(JCTree.java:2481)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:709)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitRecordPattern(Attr.java:4230)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCRecordPattern.accept(JCTree.java:2481)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:709)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitTypeTest(Attr.java:4106)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCInstanceOf.accept(JCTree.java:2237)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitParens(Attr.java:3944)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCParens.accept(JCTree.java:2034)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:709)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitIf(Attr.java:2212)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1573)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:737)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStats(Attr.java:756)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitBlock(Attr.java:1440)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1088)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:737)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.visitMethodDef(Attr.java:1230)
              at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:912)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:663)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribStat(Attr.java:737)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:5593)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5485)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attribClass(Attr.java:5309)
              at jdk.compiler/com.sun.tools.javac.comp.Attr.attrib(Attr.java:5248)
              at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.attribute(JavaCompiler.java:1335)
              at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:964)
              at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
              at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
              at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
              at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
              at jdk.compiler/com.sun.tools.javac.launcher.Main.compile(Main.java:399)
              at jdk.compiler/com.sun.tools.javac.launcher.Main.run(Main.java:202)
              at jdk.compiler/com.sun.tools.javac.launcher.Main.main(Main.java:132)
      error: compilation failed

            abimpoudis Angelos Bimpoudis
            abimpoudis Angelos Bimpoudis
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: