Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-7840

Verifier#makeDescriptorWithoutReturnType uses ClassNode#toString with generics

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.5.0-beta-1
    • Component/s: None
    • Labels:

      Description

      As noted in GROOVY-7826, commit 74089c1 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

        Issue Links

          Activity

          Hide
          paulk Paul King added a comment -

          Jochen, just to clarify. For this method:

          def bar(List<String> someList, Date someDate) { ... }
          

          We might expect the following output:

          java.lang.Object bar(List, Date) // getTypeDescriptor
          bar:List <String>,Date, // current output of GeneralUtils.makeDescriptorWithoutReturnType
          bar:List,Date, // desired output
          

          Note: exact output varies depending on which phase of compilation you are at when displaying above, e.g. whether you get fully qualified names or not.

          Show
          paulk Paul King added a comment - Jochen, just to clarify. For this method: def bar(List< String > someList, Date someDate) { ... } We might expect the following output: java.lang.Object bar(List, Date) // getTypeDescriptor bar:List <String>,Date, // current output of GeneralUtils.makeDescriptorWithoutReturnType bar:List,Date, // desired output Note: exact output varies depending on which phase of compilation you are at when displaying above, e.g. whether you get fully qualified names or not.
          Hide
          githubbot ASF GitHub Bot added a comment -

          GitHub user paulk-asert opened a pull request:

          https://github.com/apache/groovy/pull/533

          GROOVY-7840: Verifier#makeDescriptorWithoutReturnType uses ClassNode#…

          …toString with generics

          You can merge this pull request into a Git repository by running:

          $ git pull https://github.com/paulk-asert/groovy groovy7840

          Alternatively you can review and apply these changes as the patch at:

          https://github.com/apache/groovy/pull/533.patch

          To close this pull request, make a commit to your master/trunk branch
          with (at least) the following in the commit message:

          This closes #533


          commit 8fc3816afaa475fa5ef3ad57a391dc08ef587274
          Author: paulk <paulk@asert.com.au>
          Date: 2017-05-03T09:12:31Z

          GROOVY-7840: Verifier#makeDescriptorWithoutReturnType uses ClassNode#toString with generics


          Show
          githubbot ASF GitHub Bot added a comment - GitHub user paulk-asert opened a pull request: https://github.com/apache/groovy/pull/533 GROOVY-7840 : Verifier#makeDescriptorWithoutReturnType uses ClassNode#… …toString with generics You can merge this pull request into a Git repository by running: $ git pull https://github.com/paulk-asert/groovy groovy7840 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/groovy/pull/533.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #533 commit 8fc3816afaa475fa5ef3ad57a391dc08ef587274 Author: paulk <paulk@asert.com.au> Date: 2017-05-03T09:12:31Z GROOVY-7840 : Verifier#makeDescriptorWithoutReturnType uses ClassNode#toString with generics
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jwagenleitner commented on a diff in the pull request:

          https://github.com/apache/groovy/pull/533#discussion_r116363829

          — 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) {
          + StringBuilder sb = new StringBuilder();
          + mNode.getTypeDescriptor();
          + sb.append(mNode.getName()).append(':');
          + for (Parameter p : mNode.getParameters())

          { + sb.append(ClassNodeUtils.formatTypeName(p.getType())).append(','); + }

          + return sb.toString();
          + }
          +
          + /**
          + * Return the method node's descriptor which includes its return type,
          + * name and parameter types without generics.
          + *
          + * @param mNode the method node
          + * @return the method node's descriptor
          + */
          + public static String methodDescriptor(MethodNode mNode) {
          — End diff –

          This could be the body of `MethodNode#getTypeDescriptor` instance method.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jwagenleitner commented on a diff in the pull request: https://github.com/apache/groovy/pull/533#discussion_r116363829 — 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) { + StringBuilder sb = new StringBuilder(); + mNode.getTypeDescriptor(); + sb.append(mNode.getName()).append(':'); + for (Parameter p : mNode.getParameters()) { + sb.append(ClassNodeUtils.formatTypeName(p.getType())).append(','); + } + return sb.toString(); + } + + /** + * Return the method node's descriptor which includes its return type, + * name and parameter types without generics. + * + * @param mNode the method node + * @return the method node's descriptor + */ + public static String methodDescriptor(MethodNode mNode) { — End diff – This could be the body of `MethodNode#getTypeDescriptor` instance method.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jwagenleitner commented on a diff in the pull request:

          https://github.com/apache/groovy/pull/533#discussion_r116363767

          — Diff: src/main/org/apache/groovy/ast/tools/ClassNodeUtils.java —
          @@ -0,0 +1,48 @@
          +/*
          + * 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.ClassNode;
          +
          +public class ClassNodeUtils {
          + /**
          + * Formats a type name into a human readable version. For arrays, appends "[]" to the formatted
          + * type name of the component. For unit class nodes, uses the class node name.
          + *
          + * @param cNode the type to format
          + * @return a human readable version of the type name (java.lang.String[] for example)
          + */
          + public static String formatTypeName(ClassNode cNode) {
          — End diff –

          This seems like a candidate to be a package-private instance method on `ClassNode`. Package-private part assumes the moving of the `MethodNodeUtils` methods into `MethodNode`.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jwagenleitner commented on a diff in the pull request: https://github.com/apache/groovy/pull/533#discussion_r116363767 — Diff: src/main/org/apache/groovy/ast/tools/ClassNodeUtils.java — @@ -0,0 +1,48 @@ +/* + * 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.ClassNode; + +public class ClassNodeUtils { + /** + * Formats a type name into a human readable version. For arrays, appends "[]" to the formatted + * type name of the component. For unit class nodes, uses the class node name. + * + * @param cNode the type to format + * @return a human readable version of the type name (java.lang.String[] for example) + */ + public static String formatTypeName(ClassNode cNode) { — End diff – This seems like a candidate to be a package-private instance method on `ClassNode`. Package-private part assumes the moving of the `MethodNodeUtils` methods into `MethodNode`.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jwagenleitner commented on a diff in the pull request:

          https://github.com/apache/groovy/pull/533#discussion_r116363909

          — 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 –

          This seems like it could be an instance method such as `MethodNode#getSignature()` ([JLS 8.4.2](http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.2)) or `MethodNode#getTypeDescriptorWithoutReturnType()`.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jwagenleitner commented on a diff in the pull request: https://github.com/apache/groovy/pull/533#discussion_r116363909 — 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 – This seems like it could be an instance method such as `MethodNode#getSignature()` ( [JLS 8.4.2] ( http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.2 )) or `MethodNode#getTypeDescriptorWithoutReturnType()`.
          Hide
          githubbot ASF GitHub Bot added a comment -

          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.

          Show
          githubbot ASF GitHub Bot added a comment - 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.
          Hide
          githubbot ASF GitHub Bot added a comment -

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

          https://github.com/apache/groovy/pull/533#discussion_r116460996

          — 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) {
          + StringBuilder sb = new StringBuilder();
          + mNode.getTypeDescriptor();
          + sb.append(mNode.getName()).append(':');
          + for (Parameter p : mNode.getParameters())

          { + sb.append(ClassNodeUtils.formatTypeName(p.getType())).append(','); + }

          + return sb.toString();
          + }
          +
          + /**
          + * Return the method node's descriptor which includes its return type,
          + * name and parameter types without generics.
          + *
          + * @param mNode the method node
          + * @return the method node's descriptor
          + */
          + public static String methodDescriptor(MethodNode mNode) {
          — End diff –

          See above.

          Show
          githubbot ASF GitHub Bot added a comment - Github user paulk-asert commented on a diff in the pull request: https://github.com/apache/groovy/pull/533#discussion_r116460996 — 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) { + StringBuilder sb = new StringBuilder(); + mNode.getTypeDescriptor(); + sb.append(mNode.getName()).append(':'); + for (Parameter p : mNode.getParameters()) { + sb.append(ClassNodeUtils.formatTypeName(p.getType())).append(','); + } + return sb.toString(); + } + + /** + * Return the method node's descriptor which includes its return type, + * name and parameter types without generics. + * + * @param mNode the method node + * @return the method node's descriptor + */ + public static String methodDescriptor(MethodNode mNode) { — End diff – See above.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user jwagenleitner commented on a diff in the pull request:

          https://github.com/apache/groovy/pull/533#discussion_r116533820

          — 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 –

          That is what is sort of confusing, the method descriptor for bytecode vs the method signature used to detect duplicate signatures. Agree that the formatting is particular to it's use in the `Verifier` and having in a separate utils class is probably the best approach.

          Show
          githubbot ASF GitHub Bot added a comment - Github user jwagenleitner commented on a diff in the pull request: https://github.com/apache/groovy/pull/533#discussion_r116533820 — 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 – That is what is sort of confusing, the method descriptor for bytecode vs the method signature used to detect duplicate signatures. Agree that the formatting is particular to it's use in the `Verifier` and having in a separate utils class is probably the best approach.
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user asfgit closed the pull request at:

          https://github.com/apache/groovy/pull/533

          Show
          githubbot ASF GitHub Bot added a comment - Github user asfgit closed the pull request at: https://github.com/apache/groovy/pull/533
          Hide
          paulk Paul King added a comment -

          Proposed PR merged

          Show
          paulk Paul King added a comment - Proposed PR merged

            People

            • Assignee:
              paulk Paul King
              Reporter:
              blackdrag Jochen Theodorou
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development