[ https://issues.apache.org/jira/browse/GROOVY-8188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16015339#comment-16015339 ]
Paul King edited comment on GROOVY-8188 at 5/18/17 7:35 AM: ------------------------------------------------------------ Ah, okay, I didn't see it before. It's a bridge method added for a covariant return type. The ClassCompletionVerifier doesn't seem to look at return type which seems wrong to me. Here is a smaller example which exhibits the problem: {code} interface Foo { Foo foo() } abstract class FooImpl implements Foo { final FooImpl foo() { null } } class Main extends FooImpl implements Foo { } assert !new Main().foo() {code} Note that the {{implements Foo}} is redundant but required to produce the error. was (Author: paulk): Ah, okay, I didn't see it before. It's a bridge method added for a covariant return type. The ClassCompletionVerifier doesn't seem to look at return type which seems wrong to me. > Unpredictable behavior - Compiler error: groovyc: You are not allowed to > override the final method > -------------------------------------------------------------------------------------------------- > > Key: GROOVY-8188 > URL: https://issues.apache.org/jira/browse/GROOVY-8188 > Project: Groovy > Issue Type: Bug > Components: Compiler > Affects Versions: 2.4.11 > Environment: Windows > Reporter: Abbas Gadhia > Attachments: groovyc.7z > > > I'm trying to extend from an abstract class and override one of its abstract > methods. Another "final" concrete method of the same name exists in the > abstract class. > When I compile, it complains that i cannot override the method marked as > final, however i've only overriden the abstract method, and not the "final" > one. > This issue is sporadic. The error pops up and goes after several retries > I've attached a simple project that reproduces this issue. The error may or > may not happen the first time. Tweaking the code here and there, gets the > issue to pop up > Here's a sample of the error message > bq. Error:Groovyc: You are not allowed to override the final method > copy(org.apache.calcite.plan.RelTraitSet -> > org.apache.calcite.plan.RelTraitSet,java.util.List -> java.util.List <E > extends java.lang.Object>) from class 'org.apache.calcite.rel.core.Join'. -- This message was sent by Atlassian JIRA (v6.3.15#6346)