[ https://issues.apache.org/jira/browse/GROOVY-11487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Milles updated GROOVY-11487: --------------------------------- Language: groovy > RuntimeParserException when encountering a lambda and a function type with > wildcard > ----------------------------------------------------------------------------------- > > Key: GROOVY-11487 > URL: https://issues.apache.org/jira/browse/GROOVY-11487 > Project: Groovy > Issue Type: Bug > Components: Static Type Checker > Reporter: Thodoris Sotiropoulos > Priority: Minor > > I have the following program > > {code:java} > import java.util.function.Function; > interface A<T> {} > interface B<T> extends A<String> {} > class Test { > final Function<? super B<String>, String> test() { > return (A<String> x) -> "" > } > } {code} > h3. > Actual behavior > The compiler crashes with > {code:java} > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > failed: > General error during instruction selection: The inferred type[B<T>] is not > compatible with the parameter type[A<T>] > . At [9:13] test.groovyorg.codehaus.groovy.syntax.RuntimeParserException: The > inferred type[B<T>] is not compatible with the parameter type[A<T>] > . At [9:13] test.groovy > at > org.codehaus.groovy.classgen.asm.sc.AbstractFunctionalInterfaceWriter.convertParameterType(AbstractFunctionalInterfaceWriter.java:134) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesLambdaWriter.createParametersWithExactType(StaticTypesLambdaWriter.java:297) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesLambdaWriter.addSyntheticLambdaMethodNode(StaticTypesLambdaWriter.java:274) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesLambdaWriter.createLambdaClass(StaticTypesLambdaWriter.java:251) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesLambdaWriter.lambda$getOrAddLambdaClass$2(StaticTypesLambdaWriter.java:216) > at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesLambdaWriter.getOrAddLambdaClass(StaticTypesLambdaWriter.java:215) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesLambdaWriter.writeLambda(StaticTypesLambdaWriter.java:118) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitLambdaExpression(AsmClassGenerator.java:873) > at > org.codehaus.groovy.ast.expr.LambdaExpression.visit(LambdaExpression.java:46) > at > org.codehaus.groovy.classgen.asm.StatementWriter.writeReturn(StatementWriter.java:591) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitReturnStatement(AsmClassGenerator.java:822) > at > org.codehaus.groovy.ast.stmt.ReturnStatement.visit(ReturnStatement.java:73) > at > org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:95) > at > org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:77) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:752) > at > org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:72) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:611) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:546) > at > org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:110) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:695) > at org.codehaus.groovy.ast.ClassNode.visitMethods(ClassNode.java:1132) > at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1125) > at > org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:52) > at > org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:365) > at > org.codehaus.groovy.control.CompilationUnit$3.call(CompilationUnit.java:797) > at > org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:938) > at > org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:692) > at > org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:666) > at > org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:647) > at > org.codehaus.groovy.tools.FileSystemCompiler.compile(FileSystemCompiler.java:312) > at > org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:241) > at > org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompile(FileSystemCompiler.java:166) > at > org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompileWithErrorHandling(FileSystemCompiler.java:206) > at > org.codehaus.groovy.tools.FileSystemCompiler.main(FileSystemCompiler.java:190) > at > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) > at java.base/java.lang.reflect.Method.invoke(Method.java:580) > at > org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:115) > at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:37)1 > error > {code} > h3. > Notes > Tested against master (commit: aa298337dadd8a10053897e397cd83377127ca27) -- This message was sent by Atlassian Jira (v8.20.10#820010)