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

ASF GitHub Bot commented on GROOVY-7840:
----------------------------------------

Github user paulk-asert commented on a diff in the pull request:

    https://github.com/apache/groovy/pull/533#discussion_r116460943
  
    --- Diff: src/main/org/apache/groovy/ast/tools/MethodNodeUtils.java ---
    @@ -0,0 +1,66 @@
    +/*
    + *  Licensed to the Apache Software Foundation (ASF) under one
    + *  or more contributor license agreements.  See the NOTICE file
    + *  distributed with this work for additional information
    + *  regarding copyright ownership.  The ASF licenses this file
    + *  to you under the Apache License, Version 2.0 (the
    + *  "License"); you may not use this file except in compliance
    + *  with the License.  You may obtain a copy of the License at
    + *
    + *    http://www.apache.org/licenses/LICENSE-2.0
    + *
    + *  Unless required by applicable law or agreed to in writing,
    + *  software distributed under the License is distributed on an
    + *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + *  KIND, either express or implied.  See the License for the
    + *  specific language governing permissions and limitations
    + *  under the License.
    + */
    +package org.apache.groovy.ast.tools;
    +
    +import org.codehaus.groovy.ast.MethodNode;
    +import org.codehaus.groovy.ast.Parameter;
    +
    +public class MethodNodeUtils {
    +    /**
    +     * Return the method node's descriptor including its
    +     * name and parameter types without generics.
    +     *
    +     * @param mNode the method node
    +     * @return the method node's abbreviated descriptor excluding the 
return type
    +     */
    +    public static String methodDescriptorWithoutReturnType(MethodNode 
mNode) {
    --- End diff --
    
    I kept it distinct because I wasn't really sure that we should tie the 
particular formatting we have chosen to the more general method that some might 
expect to find in MethodNode. If you look at:
    org.objectweb.asm.Type#getMethodDescriptor(java.lang.reflect.Method)
    It would produce different output.
    
    For example, for this method:
    `int[] method(List arg1, String arg2)`
    ASM would produce the familiar:
    `(Ljava/util/List;Ljava/lang/String;)[I`
    whereas we produce:
    `[I method(java.util.List, java.lang.String)`
    What we produce is suitable for our purposes (and we need the name) but I 
wonder what people would expect in MethodNode.



> Verifier#makeDescriptorWithoutReturnType uses ClassNode#toString with generics
> ------------------------------------------------------------------------------
>
>                 Key: GROOVY-7840
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7840
>             Project: Groovy
>          Issue Type: Bug
>            Reporter: Jochen Theodorou
>              Labels: easyfix
>
> As noted in GROOVY-7826, commit 
> [74089c1|https://github.com/apache/groovy/commit/74089c1156d6c296d64e68e766575e86c4119c67]
>  contains the addition of Verifier#makeDescriptorWithoutReturnType. The 
> method is based on ClassNode#toString, which will include redirects and their 
> generics information. This should not be the case



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to