Skip to content

expression.unparsable in stream created from value set #6750

@MichalStehlikCz

Description

@MichalStehlikCz
public record Test(
      String type) {

  void test(List<Test> externals) {
    externals.stream()
        .collect(Collectors.groupingBy(Test::type))
        .entrySet()
        .stream()
        .forEach(values -> {
          throw new RegularException("KER_SERVERAPI_DUPLICATE_EID_TYPE",
              "Duplicate external ID type");
        });
  }

}

Compilation fails with

C:\Projects\pvyscomponents\java\libs\kernel\repository\api\src\main\java\com\provys\repository\Test.java:21:18
java: [expression.unparsable] Expression invalid in dependent type annotation: [error for expression: externals.stream().collect(java.util.stream.Collectors.groupingBy(Test::type)); error: Invalid 'Test::type' because class org.checkerframework.com.github.javaparser.ast.expr.MethodReferenceExpr is not a supported expression]
C:\Projects\pvyscomponents\java\libs\kernel\repository\api\src\main\java\com\provys\repository\Test.java:21:18
java: [lambda.param] incompatible parameter types for parameter 0 in lambda expression.
  function parameter type: Entry<capture#01 extends @KeyFor("externals.stream().collect(java.util.stream.Collectors.groupingBy(Test::type))") Object super @KeyFor("externals.stream().collect(java.util.stream.Collectors.groupingBy(Test::type))") String, List<Test>>
  lambda parameter type  : Entry<capture#01 extends @KeyFor("[error for expression: externals.stream().collect(java.util.stream.Collectors.groupingBy(Test::type)); error: Invalid 'Test::type' because class org.checkerframework.com.github.javaparser.ast.expr.MethodReferenceExpr is not a supported expression]") Object super @KeyFor("[error for expression: externals.stream().collect(java.util.stream.Collectors.groupingBy(Test::type)); error: Invalid 'Test::type' because class org.checkerframework.com.github.javaparser.ast.expr.MethodReferenceExpr is not a supported expression]") String, List<Test>>

expression.unparsable seems like caught internal error.

Unlike other recently reported problems, it is probably something older as expression.unparsable has been suppressed in our code even before 3.42.0 and I only noticed it after upgarde to 3.46.0 because lambda.param appeared

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions