Hi Jochen,

Thanks for looking, and for the findings - interesting!

Actually I think my reproducer was not a good representation of the real issue 
I saw in production.
I added the getName() call in my first repro as a random thing to do with the 
argument, but that introduced unintended behaviour.

My real case is closer to this (literally implementations of List, in my case):

```
def foo(List<String> x) {  }
def bar(List<String> x) { foo(x) }
List<String> l1 = new ArrayList();
List<String> l2 = new LinkedList();
while (true) {
    bar(l1)
    127.times { bar(l2) }
}
```

The call site causing the difficulty here is (I think) foo(x) within bar, where 
a 'sameClasses' guard is inserted and 
invalidates the previous method handle whenever the argument class changes 
(LinkedList != ArrayList) -
I confirmed this by adding logging to the guard.

Oli

P.S. I now have a JIRA account for Groovy, should I create a ticket?



Amazon Development Centre (London) Ltd. Registered in England and Wales with 
registration number 04543232 with its registered office at 1 Principal Place, 
Worship Street, London EC2A 2FA, United Kingdom.



Reply via email to