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

Eric Milles updated GROOVY-11367:
---------------------------------
    Description: 
The rules for property read and write for map-based types has several 
inconsistencies:

{code:groovy}
class M extends HashMap<String,Object> {
  public pub
  protected pro
  @PackageScope pack
  private priv
  def getAny() {}
  void setAny(value) {}
}
{code}

1) read and write do not share a consistent resolution order -- noted in 8555

{code:groovy}
void test1(M map) {
  map.pub  // obj field (fixed in 5001)
  map.pro  // map property
  map.pack // map property
  map.priv // map property
  map.any  // getter (all visibilities)
  map.pub  = null // obj field
  map.pro  = null // obj field (inconsistent)
  map.pack = null // map property
  map.priv = null // map property
  map.any  = null // setter (all visibilities)
}
{code}

2) "this" and "super" have different behavior

{code:groovy}
TODO
{code}

3) Dynamic and static compilation have different behavior

{code:groovy}
TODO
{code}

GROOVY-11223, GROOVY-11319, GROOVY-9127, GROOVY-8555, GROOVY-8065, GROOVY-6277, 
GROOVY-6144, GROOVY-5985, GROOVY-5491, GROOVY-5001, GROOVY-662

  was:
The rules for property read and write for map-based types has several 
inconsistencies:

{code:groovy}
class M extends HashMap<String,Object> {
  public pub
  protected pro
  @PackageScope pack
  private priv
  def getAny() {}
  void setAny(value) {}
}
{code}

1) read and write do not share a consistent resolution order -- noted in 8555

{code:groovy}
void test1(M map) {
  map.pub  // obj field (fixed in 5001)
  map.pro  // map property
  map.pack // map property
  map.priv // map property
  map.any  // getter (all visibilities)
  map.pub = null  // obj field
  map.pro = null  // obj field (inconsistent)
  map.pack = null // map property
  map.priv = null // map property
  map.any  = null // setter (all visibilities)
}
{code}

2) "this" and "super" have different behavior

{code:groovy}
TODO
{code}

3) Dynamic and static compilation have different behavior

{code:groovy}
TODO
{code}

GROOVY-11223, GROOVY-11319, GROOVY-9127, GROOVY-8555, GROOVY-8065, GROOVY-6277, 
GROOVY-6144, GROOVY-5985, GROOVY-5491, GROOVY-5001, GROOVY-662


> map-based types property semantics
> ----------------------------------
>
>                 Key: GROOVY-11367
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11367
>             Project: Groovy
>          Issue Type: Bug
>            Reporter: Eric Milles
>            Assignee: Eric Milles
>            Priority: Major
>
> The rules for property read and write for map-based types has several 
> inconsistencies:
> {code:groovy}
> class M extends HashMap<String,Object> {
>   public pub
>   protected pro
>   @PackageScope pack
>   private priv
>   def getAny() {}
>   void setAny(value) {}
> }
> {code}
> 1) read and write do not share a consistent resolution order -- noted in 8555
> {code:groovy}
> void test1(M map) {
>   map.pub  // obj field (fixed in 5001)
>   map.pro  // map property
>   map.pack // map property
>   map.priv // map property
>   map.any  // getter (all visibilities)
>   map.pub  = null // obj field
>   map.pro  = null // obj field (inconsistent)
>   map.pack = null // map property
>   map.priv = null // map property
>   map.any  = null // setter (all visibilities)
> }
> {code}
> 2) "this" and "super" have different behavior
> {code:groovy}
> TODO
> {code}
> 3) Dynamic and static compilation have different behavior
> {code:groovy}
> TODO
> {code}
> GROOVY-11223, GROOVY-11319, GROOVY-9127, GROOVY-8555, GROOVY-8065, 
> GROOVY-6277, GROOVY-6144, GROOVY-5985, GROOVY-5491, GROOVY-5001, GROOVY-662



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to