You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2024/09/05 17:33:00 UTC
[jira] [Commented] (GROOVY-11444) StackOverflowError when dealing with a generic type bounded by an array
[ https://issues.apache.org/jira/browse/GROOVY-11444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17879640#comment-17879640 ]
Eric Milles commented on GROOVY-11444:
--------------------------------------
Just a note, the antlr2 parser does not accept "class C<T extends Type[]> {}". The parrot parser allows the array bound and there is no checking for it.
> StackOverflowError when dealing with a generic type bounded by an array
> -----------------------------------------------------------------------
>
> Key: GROOVY-11444
> URL: https://issues.apache.org/jira/browse/GROOVY-11444
> Project: Groovy
> Issue Type: Bug
> Components: Static Type Checker
> Reporter: Thodoris Sotiropoulos
> Priority: Minor
> Labels: StackOverflowError
>
> I have the following program
> {code:java}
> class A<T extends X[], X extends T> {} {code}
> h3. Actual behavior
> This results in a StackOverflowError
> {code:java}
> >>> a serious error occurred: null
> >>> stacktrace:
> java.lang.StackOverflowError
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1390)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1392)
> at org.codehaus.groovy.ast.ClassNode.isResolved(ClassNode.java:1391) {code}
> h3. Expected behavior
> The code should have been rejected.
>
> Tested against master (commit: f8e2f9eb5d6278c8a02d43d289dabe244d33f913)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)