[jira] [Updated] (GROOVY-4744) Fail to extend Java class with public final String getProperty(String s)

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (GROOVY-4744) Fail to extend Java class with public final String getProperty(String s)

JIRA jira@apache.org

     [ https://issues.apache.org/jira/browse/GROOVY-4744?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul King updated GROOVY-4744:
------------------------------
    Description:
Issue GROOVY-2837 reported a problem where Groovy compiler failed if you tried to extend a Java class with:

    {code}public final Object getProperty(String s){code}

It looks like that has been fixed but the following case still fails:

    {code}public final String getProperty(String s){code}

Unfortunately the Java class is within a third-party library so I can't change it.

h4. Code to Reproduce the problem
{code}
$ head *.java
==> Java1.java <==
public class Java1 {
  public final Object getProperty(String s) { return null; }
}

==> Java2.java <==
public class Java2 {
  public final String getProperty(String s) { return null; }
}
{code}
{code}
$ head *.groovy
==> Groovy1.groovy <==
class Groovy1 extends Java1 { }

==> Groovy2.groovy <==
class Groovy2 extends Java2 { }
{code}
{code}

$ javac *.java
$ groovyc *.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Groovy2.groovy: -1: You are not allowed to override the final method getProperty(java.lang.String) from class 'Java2'.
 @ line -1, column -1.
1 error
{code}

  was:
Issue [http://jira.codehaus.org/browse/GROOVY-2837] reported a problem where Groovy compiler failed if you tried to extend a Java class with:

    {code}public final Object getProperty(String s){code}

It looks like that has been fixed but the following case still fails:

    {code}public final String getProperty(String s){code}

Unfortunately the Java class is within a third-party library so I can't change it.

h4. Code to Reproduce the problem
{code}
$ head *.java
==> Java1.java <==
public class Java1 {
  public final Object getProperty(String s) { return null; }
}

==> Java2.java <==
public class Java2 {
  public final String getProperty(String s) { return null; }
}
{code}
{code}
$ head *.groovy
==> Groovy1.groovy <==
class Groovy1 extends Java1 { }

==> Groovy2.groovy <==
class Groovy2 extends Java2 { }
{code}
{code}

$ javac *.java
$ groovyc *.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Groovy2.groovy: -1: You are not allowed to override the final method getProperty(java.lang.String) from class 'Java2'.
 @ line -1, column -1.
1 error
{code}


> Fail to extend Java class with public final String getProperty(String s)
> ------------------------------------------------------------------------
>
>                 Key: GROOVY-4744
>                 URL: https://issues.apache.org/jira/browse/GROOVY-4744
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 1.7.6
>            Reporter: Paul Cager
>            Priority: Major
>
> Issue GROOVY-2837 reported a problem where Groovy compiler failed if you tried to extend a Java class with:
>     {code}public final Object getProperty(String s){code}
> It looks like that has been fixed but the following case still fails:
>     {code}public final String getProperty(String s){code}
> Unfortunately the Java class is within a third-party library so I can't change it.
> h4. Code to Reproduce the problem
> {code}
> $ head *.java
> ==> Java1.java <==
> public class Java1 {
>   public final Object getProperty(String s) { return null; }
> }
> ==> Java2.java <==
> public class Java2 {
>   public final String getProperty(String s) { return null; }
> }
> {code}
> {code}
> $ head *.groovy
> ==> Groovy1.groovy <==
> class Groovy1 extends Java1 { }
> ==> Groovy2.groovy <==
> class Groovy2 extends Java2 { }
> {code}
> {code}
> $ javac *.java
> $ groovyc *.groovy
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
> Groovy2.groovy: -1: You are not allowed to override the final method getProperty(java.lang.String) from class 'Java2'.
>  @ line -1, column -1.
> 1 error
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)