You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/07/12 07:32:48 UTC

[groovy] branch GROOVY_3_0_X updated: Trivial tweak: reduce method calls of `charAt` further

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new 610e871  Trivial tweak: reduce method calls of `charAt` further
610e871 is described below

commit 610e8712b25e59e3824c3244ed7c7f92d5428f88
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 12 15:28:20 2020 +0800

    Trivial tweak: reduce method calls of `charAt` further
    
    (cherry picked from commit b80fcbb8107b45467bd404df55f189009860f698)
---
 .../apache/groovy/ast/tools/MethodNodeUtils.java   | 43 ++++++++++++----------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/src/main/java/org/apache/groovy/ast/tools/MethodNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/MethodNodeUtils.java
index 787009f..79a9134 100644
--- a/src/main/java/org/apache/groovy/ast/tools/MethodNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/MethodNodeUtils.java
@@ -81,27 +81,32 @@ public class MethodNodeUtils {
      * @return the property name without the get/set/is prefix if a property or null
      */
     public static String getPropertyName(final MethodNode mNode) {
-        final String name = mNode.getName();
-        final int nameLength = name.length();
-        if (nameLength > 2) {
-            switch (name.charAt(0)) {
-                case 'g':
-                    if (nameLength > 3 && mNode.getParameters().length == 0  && name.charAt(1) == 'e' && name.charAt(2) == 't' && !mNode.getReturnType().equals(ClassHelper.VOID_TYPE)) {
-                        return decapitalize(name.substring(3));
-                    }
-                    break;
-                case 's':
-                    if (nameLength > 3 && mNode.getParameters().length == 1 && name.charAt(1) == 'e' && name.charAt(2) == 't'  /*&& mNode.getReturnType().equals(ClassHelper.VOID_TYPE)*/) {
-                        return decapitalize(name.substring(3));
-                    }
-                    break;
-                case 'i':
-                    if (mNode.getParameters().length == 0 && name.charAt(1) == 's' && (mNode.getReturnType().equals(ClassHelper.boolean_TYPE) /*|| mNode.getReturnType().equals(ClassHelper.Boolean_TYPE)*/)) {
-                        return decapitalize(name.substring(2));
-                    }
-                    break;
+        final int parameterCnt = mNode.getParameters().length;
+
+        if (0 == parameterCnt || 1 == parameterCnt) {
+            final String name = mNode.getName();
+            final int nameLength = name.length();
+            if (nameLength > 2) {
+                switch (name.charAt(0)) {
+                    case 'g':
+                        if (nameLength > 3 && parameterCnt == 0  && name.charAt(1) == 'e' && name.charAt(2) == 't' && !mNode.getReturnType().equals(ClassHelper.VOID_TYPE)) {
+                            return decapitalize(name.substring(3));
+                        }
+                        break;
+                    case 's':
+                        if (nameLength > 3 && parameterCnt == 1 && name.charAt(1) == 'e' && name.charAt(2) == 't'  /*&& mNode.getReturnType().equals(ClassHelper.VOID_TYPE)*/) {
+                            return decapitalize(name.substring(3));
+                        }
+                        break;
+                    case 'i':
+                        if (parameterCnt == 0 && name.charAt(1) == 's' && (mNode.getReturnType().equals(ClassHelper.boolean_TYPE) /*|| mNode.getReturnType().equals(ClassHelper.Boolean_TYPE)*/)) {
+                            return decapitalize(name.substring(2));
+                        }
+                        break;
+                }
             }
         }
+
         return null;
     }