Hmmm - what about an @Java or  @JavaCompatible annotation as the switch that was already proposed. That way Java to Groovy could just annotate all their ported classes (or at least the ones that misbehave), and things would bve good.

The other way around would also work, of course: @Groovy / @Consistent / ... to enable the new behavior. That would make it easier for newcomers.

Bad for the code base, of course, since one would have both branches.

But I agree with OC that it is clear we cannot have both: A clear, consistent, least-surprise this/super logic, and full Java compatibility... (Alas it oftentimes seems, that as much as one would like to change Groovy in some regard, and as much discussion is going on, the current state is already pretty close to optimal, given Groovy's large scope of requirements)

Cheers,
mg


On 26/06/2020 18:09, Jochen Theodorou wrote:
On 26.06.20 17:52, OCsite wrote:
Jochen,

On 26 Jun 2020, at 17:33, Jochen <blackd...@gmx.org
<mailto:blackd...@gmx.org>> wrote:

On 26.06.20 17:21, Jochen Theodorou wrote:
[...]
public class X {
  private String foo;
  public String getFoo(){ return this.foo; }
  public void setFoo(String foo){ this.foo = foo; }
}

This works perfectly fine in Java

Correct me please if I am wrong, but the reason it work in the thing is
that in Java /this.foo/ is something completely different than in  Groovy.

the point was about migrating Java code to Groovy though - the reason
why we have many constructs in Groovy we do not really need.

[...]
What if there's a case when someone /would/ want a limited recursion?

def getX() { some_condition?this.x:1 }

That said, an error would be infinitely better than the current behaviour :)

then call a method that does this and do the recursion on that method.
If we call about migrated Java code, where Groovy idioms have been used,
then you will not see "getFoo(){ return this.foo; }" or "private String
foo;", you will see "String foo" and all problems are solved. My concern
is really solely about the migration story, of Java code executed in Groovy.

bye Jochen


Reply via email to