[ 
https://issues.apache.org/jira/browse/GROOVY-11627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17951687#comment-17951687
 ] 

Jochen Theodorou commented on GROOVY-11627:
-------------------------------------------

[~emilles] 
"""
 When I change this method to private, b.m("string") still works the same, 
however b.dispatch("string") changes behaviour. 
"""
yes, that is exactly what I am talking about. Dispatching methods from A must 
not see private methods in B, but everything else will. If you now have an 
overload in B of public m(String) and private m(Integer),  then dispatch in A 
sees only the non-private one and a call dispatch(1) should trigger the object 
case. In Java none of the two would be available  in A of course. If you add 
the overload with the public and private method you should also get the 
warning.  

If you simply lift the check I do not know if the private method in B can be 
called from A or not. We may do "the right thing" here and it is not possible. 
Just didn't want to open that can of worms back then.

> Compile Error when private and public functions use same name in compile 
> static mode
> ------------------------------------------------------------------------------------
>
>                 Key: GROOVY-11627
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11627
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler, Static compilation
>    Affects Versions: 5.0.0-alpha-12
>            Reporter: Saravanan
>            Assignee: Eric Milles
>            Priority: Minor
>
> When I define a class in Groovy with 2 methods with the same name, one 
> private and one public, I get this error during static compilation
> {quote}Mixing private and public/protected methods of the same name causes 
> multimethods to be disabled and is forbidden to avoid surprising behaviour. 
> Renaming the private methods will solve the problem.
> {quote}
> I understand the need for multi methods and dispatching with runtime types, 
> but how can I disable this behaviour? I am using @CompileStatic and it still 
> hits this error
> Per Jochen
> {quote}CompileStatic does not support multi methods, so I totally agree that
> this message should not appear for static compiled classes.
> {quote}



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

Reply via email to