You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Stefanos Chaliasos (Jira)" <ji...@apache.org> on 2022/06/29 09:18:00 UTC
[jira] [Created] (GROOVY-10674) STC crashes when combining use-site variance with bounded polymorphism
| ![](cid:jira-generated-image-avatar-1e4fe1d0-da0b-452d-9d9a-012874e8dc57) |
[Stefanos
Chaliasos](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=schaliasos)
**created** an issue
---|---
|
---
| [Groovy](https://issues.apache.org/jira/browse/GROOVY) / [![Bug](cid:jira-
generated-image-
avatar-5889b924-c787-4fc3-a9bf-242c19137f62)](https://issues.apache.org/jira/browse/GROOVY-10674)
[GROOVY-10674](https://issues.apache.org/jira/browse/GROOVY-10674)
---
[STC crashes when combining use-site variance with bounded
polymorphism](https://issues.apache.org/jira/browse/GROOVY-10674)
| Issue Type: | ![Bug](cid:jira-generated-image-
avatar-5889b924-c787-4fc3-a9bf-242c19137f62) Bug
---|---
Assignee: | Unassigned
Components: | Static compilation, Static Type Checker
Created: | 29/Jun/22 09:17
Priority: | ![Major](cid:jira-generated-image-static-
major-d26125a3-3381-4ed8-a290-bbaeeda9f162) Major
Reporter: | [Stefanos
Chaliasos](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=schaliasos)
|
I have the following Groovy program.
class Main {
static Foo<Bar<Byte, Byte>, ? super Bar<Byte, Byte>> foo = new Foo<>(new Bar<>())
}
class Bar<T extends Number, S extends T> {}
class Foo<M extends Bar<Byte, ? extends Byte>, D extends M> {
D x
public Foo(D x) {
this.x = x
}
}
## Actual Behavior
The program crashes the compiler and produces the following stack trace
>>> a serious error occurred: BUG! exception in phase 'instruction selection' in source unit 'Main.groovy' Expected earlier checking to detect generics parameter arity mismatch
Expected: Bar<T extends java.lang.Number,S extends T>
Supplied: Bar<M extends Bar<java.lang.Byte, ? extends java.lang.Byte>>
>>> stacktrace:
BUG! exception in phase 'instruction selection' in source unit 'Main.groovy' Expected earlier checking to detect generics parameter arity mismatch
Expected: Bar<T extends java.lang.Number,S extends T>
Supplied: Bar<M extends Bar<java.lang.Byte, ? extends java.lang.Byte>>
at org.codehaus.groovy.ast.tools.GenericsUtils.extractPlaceholders(GenericsUtils.java:189)
at org.codehaus.groovy.ast.tools.GenericsUtils.extractPlaceholders(GenericsUtils.java:153)
at org.codehaus.groovy.ast.GenericsType.compareGenericsWithBound(GenericsType.java:334)
at org.codehaus.groovy.ast.GenericsType.checkGenerics(GenericsType.java:259)
at org.codehaus.groovy.ast.GenericsType.isCompatibleWith(GenericsType.java:238)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.typeCheckMethodArgumentWithGenerics(StaticTypeCheckingSupport.java:1400)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.inferenceCheck(StaticTypeCheckingSupport.java:1551)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.typeCheckMethodsWithGenerics(StaticTypeCheckingSupport.java:1483)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.typeCheckMethodsWithGenerics(StaticTypeCheckingSupport.java:1431)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.typeCheckMethodsWithGenericsOrFail(StaticTypeCheckingVisitor.java:5753)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitConstructorCallExpression(StaticTypeCheckingVisitor.java:2303)
at org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitConstructorCallExpression(StaticCompilationVisitor.java:435)
at org.codehaus.groovy.ast.expr.ConstructorCallExpression.visit(ConstructorCallExpression.java:45)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitInitialExpression(StaticTypeCheckingVisitor.java:1945)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitField(StaticTypeCheckingVisitor.java:1931)
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1117)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:52)
at org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitClass(StaticTypeCheckingVisitor.java:437)
at org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitClass(StaticCompilationVisitor.java:196)
at org.codehaus.groovy.transform.sc.StaticCompileTransformation.visit(StaticCompileTransformation.java:68)
at org.codehaus.groovy.control.customizers.ASTTransformationCustomizer.call(ASTTransformationCustomizer.groovy:303)
at org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:937)
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:311)
at org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:240)
at org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompile(FileSystemCompiler.java:165)
at org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompileWithErrorHandling(FileSystemCompiler.java:205)
at org.codehaus.groovy.tools.FileSystemCompiler.main(FileSystemCompiler.java:189)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:109)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:132)
## Expected Behavior
Compile successfully.
## Notes
Tested against master (commit: 2e82c9f5bd6201ed4724b26714275f4cef9df6e8)
Note that there are some old fixed bugs with similar stacktraces:
[https://issues.apache.org/jira/browse/GROOVY-10230?filter=-2&jql=text%20~%20%22org.codehaus.groovy.ast.tools.GenericsUtils.extractPlaceholders%22](https://issues.apache.org/jira/browse/GROOVY-10230?filter=-2&jql=text%20~%20%22org.codehaus.groovy.ast.tools.GenericsUtils.extractPlaceholders%22)
---
| | [ ![Add Comment](cid:jira-generated-image-static-comment-
icon-7c490485-1f0f-4a88-b62d-aeb0674e573f)
](https://issues.apache.org/jira/browse/GROOVY-10674#add-comment "Add
Comment") | [Add
Comment](https://issues.apache.org/jira/browse/GROOVY-10674#add-comment "Add
Comment")
---|---
| This message was sent by Atlassian Jira (v8.20.10#820010-sha1:ace47f9) | |
![Atlassian logo](https://issues.apache.org/jira/images/mail/atlassian-email-
logo.png)
---