You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Pascal Schumacher (JIRA)" <ji...@apache.org> on 2015/10/15 09:19:05 UTC

[jira] [Resolved] (GROOVY-3341) MissingMethodException in Builder is misleading

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

Pascal Schumacher resolved GROOVY-3341.
---------------------------------------
       Resolution: Fixed
         Assignee: Pascal Schumacher
    Fix Version/s: 2.4.6

Applied. Thanks for the patch!

> MissingMethodException in Builder is misleading
> -----------------------------------------------
>
>                 Key: GROOVY-3341
>                 URL: https://issues.apache.org/jira/browse/GROOVY-3341
>             Project: Groovy
>          Issue Type: Bug
>          Components: groovy-jdk
>    Affects Versions: 1.6-beta-1
>            Reporter: Noah Sloan
>            Assignee: Pascal Schumacher
>            Priority: Minor
>              Labels: patch-available
>             Fix For: 2.4.6
>
>         Attachments: 0001-GROOVY-3341-If-an-exception-is-thrown-from-a-builder.patch
>
>
> Test Case:
> {code}
> class Foo extends BuilderSupport {
>     public void setParent(Object parent, Object child){
>         parent.setFoo(child)
>     }
>     public Object createNode(Object name){
>         return createNode(name,(Object)null)
>     }
>     
>     public Object createNode(Object name, Object value){
>         return createNode(name,[:],value)
>     }
>     
>     public Object createNode(Object name, Map attributes){
>         return createNode(name,attributes,null)
>     }
>     
>     public Object createNode(Object name, Map attributes, Object value){
>       return "${name}"      
>     }
> }
> try {
>   def f = new Foo()
>   f.foo {
>     bar()
>   }
> } catch(MissingMethodException e) {
>   assert e.method == "setFoo",  "was ${e.method}"
> }
> {code}
> It's actually the method setFoo that is missing, but it is reported as bar that is missing. Any MissingMethodException thrown while inside a Builder will be misreported in this way.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)