This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new ee285e5e95 Trivial refactor: simplify code with switch expression
ee285e5e95 is described below
commit ee285e5e955f18052cb62fe6c09f0c977f4e30be
Author: Daniel Sun <[email protected]>
AuthorDate: Sun Feb 1 12:08:26 2026 +0900
Trivial refactor: simplify code with switch expression
---
src/main/java/groovy/lang/ExpandoMetaClass.java | 14 +-
src/main/java/groovy/lang/GroovyClassLoader.java | 13 +-
src/main/java/groovy/util/ObservableList.java | 26 +--
src/main/java/groovy/util/ObservableMap.java | 23 +--
.../apache/groovy/ast/tools/ExpressionUtils.java | 50 ++---
.../org/codehaus/groovy/ast/AnnotationNode.java | 40 ++--
.../codehaus/groovy/ast/tools/ClosureUtils.java | 18 +-
.../groovy/classgen/FinalVariableAnalyzer.java | 10 +-
.../groovy/runtime/ArrayGroovyMethods.java | 24 ++-
.../org/codehaus/groovy/runtime/MethodClosure.java | 13 +-
.../java/org/codehaus/groovy/syntax/TokenUtil.java | 56 +++---
.../java/org/codehaus/groovy/syntax/Types.java | 77 +++-----
.../transform/OperatorRenameASTTransformation.java | 71 ++-----
.../transform/stc/SignatureCodecVersion1.java | 23 +--
.../transform/stc/StaticTypeCheckingSupport.java | 206 ++++++---------------
.../transform/stc/StaticTypeCheckingVisitor.java | 10 +-
.../vmplugin/v8/PluginDefaultGroovyMethods.java | 11 +-
.../org/codehaus/groovy/vmplugin/v8/Selector.java | 29 ++-
.../datetime/extensions/DateTimeExtensions.java | 16 +-
.../groovy/groovysh/jline/GroovyPosixCommands.java | 52 ++----
.../src/main/java/groovy/json/JsonSlurper.java | 24 +--
.../src/main/java/groovy/json/JsonTokenType.java | 42 ++---
.../groovy/json/internal/BaseJsonParser.java | 13 +-
.../apache/groovy/json/internal/ByteScanner.java | 29 +--
.../apache/groovy/json/internal/CharScanner.java | 13 +-
.../groovy/json/internal/JsonFastParser.java | 52 ++----
.../groovy/json/internal/JsonParserCharArray.java | 57 ++----
.../internal/JsonParserUsingCharacterSource.java | 58 ++----
.../src/main/java/groovy/sql/SqlWhereVisitor.java | 16 +-
.../src/main/java/groovy/xml/XmlUtil.java | 21 +--
.../markupsupport/StandardXmlAttributeFilter.java | 17 +-
.../xml/markupsupport/StandardXmlFilter.java | 17 +-
32 files changed, 354 insertions(+), 787 deletions(-)
diff --git a/src/main/java/groovy/lang/ExpandoMetaClass.java
b/src/main/java/groovy/lang/ExpandoMetaClass.java
index d60b5d12d7..4ceee629b7 100644
--- a/src/main/java/groovy/lang/ExpandoMetaClass.java
+++ b/src/main/java/groovy/lang/ExpandoMetaClass.java
@@ -720,16 +720,10 @@ public class ExpandoMetaClass extends MetaClassImpl
implements GroovyObject {
}
public static boolean isValidExpandoProperty(String property) {
- switch (property) {
- case META_CLASS_PROPERTY:
- case CLASS_PROPERTY:
- case META_METHODS:
- case METHODS:
- case PROPERTIES:
- return false;
- default:
- return true;
- }
+ return switch (property) {
+ case META_CLASS_PROPERTY, CLASS_PROPERTY, META_METHODS, METHODS,
PROPERTIES -> false;
+ default -> true;
+ };
}
/* (non-Javadoc)
diff --git a/src/main/java/groovy/lang/GroovyClassLoader.java
b/src/main/java/groovy/lang/GroovyClassLoader.java
index 219c0a476d..45a9417e36 100644
--- a/src/main/java/groovy/lang/GroovyClassLoader.java
+++ b/src/main/java/groovy/lang/GroovyClassLoader.java
@@ -1240,14 +1240,11 @@ public class GroovyClassLoader extends URLClassLoader {
*/
public String genEncodingString(CharSequence chars) {
try {
- switch(HASH_ALGORITHM) {
- case "md5":
- return EncodingGroovyMethods.md5(chars);
- case "sha256":
- return EncodingGroovyMethods.sha256(chars);
- default:
- throw new IllegalStateException("Unknown hash algorithm");
- }
+ return switch (HASH_ALGORITHM) {
+ case "md5" -> EncodingGroovyMethods.md5(chars);
+ case "sha256" -> EncodingGroovyMethods.sha256(chars);
+ default -> throw new IllegalStateException("Unknown hash
algorithm");
+ };
} catch (NoSuchAlgorithmException e) {
throw new GroovyRuntimeException(e);
}
diff --git a/src/main/java/groovy/util/ObservableList.java
b/src/main/java/groovy/util/ObservableList.java
index e710c65333..f93773e75e 100644
--- a/src/main/java/groovy/util/ObservableList.java
+++ b/src/main/java/groovy/util/ObservableList.java
@@ -488,23 +488,15 @@ public class ObservableList implements List {
public static final Object newValue = new Object[0];
public static ChangeType resolve(int ordinal) {
- switch (ordinal) {
- case 0:
- return ADDED;
- case 2:
- return REMOVED;
- case 3:
- return CLEARED;
- case 4:
- return MULTI_ADD;
- case 5:
- return MULTI_REMOVE;
- case 6:
- return NONE;
- case 1:
- default:
- return UPDATED;
- }
+ return switch (ordinal) {
+ case 0 -> ADDED;
+ case 2 -> REMOVED;
+ case 3 -> CLEARED;
+ case 4 -> MULTI_ADD;
+ case 5 -> MULTI_REMOVE;
+ case 6 -> NONE;
+ default -> UPDATED;
+ };
}
}
diff --git a/src/main/java/groovy/util/ObservableMap.java
b/src/main/java/groovy/util/ObservableMap.java
index 2d5780a198..bdfc0653de 100644
--- a/src/main/java/groovy/util/ObservableMap.java
+++ b/src/main/java/groovy/util/ObservableMap.java
@@ -325,21 +325,14 @@ public class ObservableMap implements Map {
public static final Object newValue = new Object[0];
public static ChangeType resolve(int ordinal) {
- switch (ordinal) {
- case 0:
- return ADDED;
- case 2:
- return REMOVED;
- case 3:
- return CLEARED;
- case 4:
- return MULTI;
- case 5:
- return NONE;
- case 1:
- default:
- return UPDATED;
- }
+ return switch (ordinal) {
+ case 0 -> ADDED;
+ case 2 -> REMOVED;
+ case 3 -> CLEARED;
+ case 4 -> MULTI;
+ case 5 -> NONE;
+ default -> UPDATED;
+ };
}
}
diff --git a/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
b/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
index b6f29a893b..b4e894847d 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
@@ -138,42 +138,20 @@ public final class ExpressionUtils {
Number left = safeNumber((ConstantExpression) leftX);
Number right = safeNumber((ConstantExpression) rightX);
if (left == null || right == null) return null;
- Number result = null;
- switch (opType) {
- case PLUS:
- result = NumberMath.add(left, right);
- break;
- case MINUS:
- result = NumberMath.subtract(left, right);
- break;
- case MULTIPLY:
- result = NumberMath.multiply(left, right);
- break;
- case DIVIDE:
- result = NumberMath.divide(left, right);
- break;
- case LEFT_SHIFT:
- result = NumberMath.leftShift(left, right);
- break;
- case RIGHT_SHIFT:
- result = NumberMath.rightShift(left, right);
- break;
- case RIGHT_SHIFT_UNSIGNED:
- result = NumberMath.rightShiftUnsigned(left, right);
- break;
- case BITWISE_AND:
- result = NumberMath.and(left, right);
- break;
- case BITWISE_OR:
- result = NumberMath.or(left, right);
- break;
- case BITWISE_XOR:
- result = NumberMath.xor(left, right);
- break;
- case POWER:
- result = DefaultGroovyMethods.power(left, right);
- break;
- }
+ Number result = switch (opType) {
+ case PLUS -> NumberMath.add(left, right);
+ case MINUS -> NumberMath.subtract(left, right);
+ case MULTIPLY -> NumberMath.multiply(left, right);
+ case DIVIDE -> NumberMath.divide(left, right);
+ case LEFT_SHIFT -> NumberMath.leftShift(left, right);
+ case RIGHT_SHIFT -> NumberMath.rightShift(left, right);
+ case RIGHT_SHIFT_UNSIGNED ->
NumberMath.rightShiftUnsigned(left, right);
+ case BITWISE_AND -> NumberMath.and(left, right);
+ case BITWISE_OR -> NumberMath.or(left, right);
+ case BITWISE_XOR -> NumberMath.xor(left, right);
+ case POWER -> DefaultGroovyMethods.power(left, right);
+ default -> null;
+ };
if (result != null) {
ConstantExpression constantExpression =
transformNumberConstantExpression(be, wrapperType, result);
if (constantExpression != null) return
constantExpression;
diff --git a/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java
b/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java
index f91724e94c..cadb2e9a6c 100644
--- a/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/AnnotationNode.java
@@ -173,32 +173,20 @@ public class AnnotationNode extends ASTNode {
}
public static String targetToName(int target) {
- switch(target) {
- case TYPE_TARGET:
- return "TYPE";
- case CONSTRUCTOR_TARGET:
- return "CONSTRUCTOR";
- case METHOD_TARGET:
- return "METHOD";
- case FIELD_TARGET:
- return "FIELD";
- case PARAMETER_TARGET:
- return "PARAMETER";
- case LOCAL_VARIABLE_TARGET:
- return "LOCAL_VARIABLE";
- case ANNOTATION_TARGET:
- return "ANNOTATION";
- case PACKAGE_TARGET:
- return "PACKAGE";
- case TYPE_PARAMETER_TARGET:
- return "TYPE_PARAMETER";
- case TYPE_USE_TARGET:
- return "TYPE_USE";
- case RECORD_COMPONENT_TARGET:
- return "RECORD_COMPONENT";
- default:
- return "unknown target";
- }
+ return switch (target) {
+ case TYPE_TARGET -> "TYPE";
+ case CONSTRUCTOR_TARGET -> "CONSTRUCTOR";
+ case METHOD_TARGET -> "METHOD";
+ case FIELD_TARGET -> "FIELD";
+ case PARAMETER_TARGET -> "PARAMETER";
+ case LOCAL_VARIABLE_TARGET -> "LOCAL_VARIABLE";
+ case ANNOTATION_TARGET -> "ANNOTATION";
+ case PACKAGE_TARGET -> "PACKAGE";
+ case TYPE_PARAMETER_TARGET -> "TYPE_PARAMETER";
+ case TYPE_USE_TARGET -> "TYPE_USE";
+ case RECORD_COMPONENT_TARGET -> "RECORD_COMPONENT";
+ default -> "unknown target";
+ };
}
@Override
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/ClosureUtils.java
b/src/main/java/org/codehaus/groovy/ast/tools/ClosureUtils.java
index d0788f6fa4..d1fe25837c 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/ClosureUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/ClosureUtils.java
@@ -89,16 +89,12 @@ public class ClosureUtils {
* @since 3.0.5
*/
public static String getResolveStrategyName(final int resolveStrategy) {
- switch (resolveStrategy) {
- case Closure.DELEGATE_FIRST:
- return "DELEGATE_FIRST";
- case Closure.DELEGATE_ONLY:
- return "DELEGATE_ONLY";
- case Closure.OWNER_ONLY:
- return "OWNER_ONLY";
- case Closure.TO_SELF:
- return "TO_SELF";
- }
- return "OWNER_FIRST";
+ return switch (resolveStrategy) {
+ case Closure.DELEGATE_FIRST -> "DELEGATE_FIRST";
+ case Closure.DELEGATE_ONLY -> "DELEGATE_ONLY";
+ case Closure.OWNER_ONLY -> "OWNER_ONLY";
+ case Closure.TO_SELF -> "TO_SELF";
+ default -> "OWNER_FIRST";
+ };
}
}
diff --git
a/src/main/java/org/codehaus/groovy/classgen/FinalVariableAnalyzer.java
b/src/main/java/org/codehaus/groovy/classgen/FinalVariableAnalyzer.java
index 5276c23a00..abbe60156d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/FinalVariableAnalyzer.java
+++ b/src/main/java/org/codehaus/groovy/classgen/FinalVariableAnalyzer.java
@@ -80,12 +80,10 @@ public class FinalVariableAnalyzer extends
ClassCodeVisitorSupport {
}
public VariableState getNext() {
- switch (this) {
- case is_uninitialized:
- return is_final;
- default:
- return is_var;
- }
+ return switch (this) {
+ case is_uninitialized -> is_final;
+ default -> is_var;
+ };
}
public boolean isFinal() {
diff --git a/src/main/java/org/codehaus/groovy/runtime/ArrayGroovyMethods.java
b/src/main/java/org/codehaus/groovy/runtime/ArrayGroovyMethods.java
index 5fb9754270..e2cecd6e6c 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ArrayGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ArrayGroovyMethods.java
@@ -68,7 +68,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -82,16 +81,16 @@ import java.util.SortedSet;
import java.util.TreeSet;
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
+import java.util.function.DoublePredicate;
import java.util.function.DoubleUnaryOperator;
import java.util.function.Function;
import java.util.function.IntConsumer;
+import java.util.function.IntPredicate;
import java.util.function.IntUnaryOperator;
import java.util.function.LongConsumer;
+import java.util.function.LongPredicate;
import java.util.function.LongUnaryOperator;
import java.util.function.Predicate;
-import java.util.function.IntPredicate;
-import java.util.function.LongPredicate;
-import java.util.function.DoublePredicate;
/**
* Defines new groovy methods which appear on arrays inside the Groovy
environment.
@@ -6612,15 +6611,14 @@ public class ArrayGroovyMethods extends
DefaultGroovyMethodsSupport {
* @since 1.5.5
*/
public static <T> T[] minus(T[] self, Object[] removeMe) {
- switch (removeMe.length) {
- case 0:
- return self.clone();
- case 1:
- return ArrayGroovyMethods.minus(self, removeMe[0]);
- default:
- Collection<T> temp = DefaultGroovyMethods.minus((Collection<T>)
toList(self), Arrays.asList(removeMe));
- return temp.toArray(createSimilarArray(self, temp.size()));
- }
+ return switch (removeMe.length) {
+ case 0 -> self.clone();
+ case 1 -> ArrayGroovyMethods.minus(self, removeMe[0]);
+ default -> {
+ Collection<T> temp =
DefaultGroovyMethods.minus((Collection<T>) toList(self),
Arrays.asList(removeMe));
+ yield temp.toArray(createSimilarArray(self, temp.size()));
+ }
+ };
}
/**
diff --git a/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
b/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
index 5f0efb60ff..98e2d3b929 100644
--- a/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
@@ -133,14 +133,11 @@ public class MethodClosure extends Closure {
@Override
public Object getProperty(final String property) {
- switch (property) {
- case "method":
- return getMethod();
- case ANY_INSTANCE_METHOD_EXISTS:
- return anyInstanceMethodExists;
- default:
- return super.getProperty(property);
- }
+ return switch (property) {
+ case "method" -> getMethod();
+ case ANY_INSTANCE_METHOD_EXISTS -> anyInstanceMethodExists;
+ default -> super.getProperty(property);
+ };
}
// TODO: This method seems to be never called..., because
MetaClassImpl.invokeMethod will intercept calls and return the result.
diff --git a/src/main/java/org/codehaus/groovy/syntax/TokenUtil.java
b/src/main/java/org/codehaus/groovy/syntax/TokenUtil.java
index de75acbd42..49491bd9cd 100644
--- a/src/main/java/org/codehaus/groovy/syntax/TokenUtil.java
+++ b/src/main/java/org/codehaus/groovy/syntax/TokenUtil.java
@@ -29,17 +29,13 @@ public class TokenUtil {
}
public static Optional<Token> asAssignment(int op) {
- switch (op) {
- case Types.PLUS_PLUS:
- case Types.PREFIX_PLUS_PLUS:
- case Types.POSTFIX_PLUS_PLUS:
- return Optional.of(Token.newSymbol(Types.PLUS_EQUAL, -1, -1));
- case Types.MINUS_MINUS:
- case Types.PREFIX_MINUS_MINUS:
- case Types.POSTFIX_MINUS_MINUS:
- return Optional.of(Token.newSymbol(Types.MINUS_EQUAL, -1, -1));
- }
- return Optional.empty();
+ return switch (op) {
+ case Types.PLUS_PLUS, Types.PREFIX_PLUS_PLUS,
Types.POSTFIX_PLUS_PLUS ->
+ Optional.of(Token.newSymbol(Types.PLUS_EQUAL, -1, -1));
+ case Types.MINUS_MINUS, Types.PREFIX_MINUS_MINUS,
Types.POSTFIX_MINUS_MINUS ->
+ Optional.of(Token.newSymbol(Types.MINUS_EQUAL, -1, -1));
+ default -> Optional.empty();
+ };
}
/**
@@ -51,24 +47,24 @@ public class TokenUtil {
* if it was not an assignment operator
*/
public static int removeAssignment(int op) {
- switch (op) {
- case Types.PLUS_EQUAL: return Types.PLUS;
- case Types.MINUS_EQUAL: return Types.MINUS;
- case Types.MULTIPLY_EQUAL: return Types.MULTIPLY;
- case Types.LEFT_SHIFT_EQUAL: return Types.LEFT_SHIFT;
- case Types.RIGHT_SHIFT_EQUAL: return Types.RIGHT_SHIFT;
- case Types.RIGHT_SHIFT_UNSIGNED_EQUAL: return
Types.RIGHT_SHIFT_UNSIGNED;
- case Types.LOGICAL_OR_EQUAL: return Types.LOGICAL_OR;
- case Types.LOGICAL_AND_EQUAL: return Types.LOGICAL_AND;
- case Types.MOD_EQUAL: return Types.MOD;
- case Types.DIVIDE_EQUAL: return Types.DIVIDE;
- case Types.INTDIV_EQUAL: return Types.INTDIV;
- case Types.POWER_EQUAL: return Types.POWER;
- case Types.BITWISE_OR_EQUAL: return Types.BITWISE_OR;
- case Types.BITWISE_AND_EQUAL: return Types.BITWISE_AND;
- case Types.BITWISE_XOR_EQUAL: return Types.BITWISE_XOR;
- case Types.REMAINDER_EQUAL: return Types.REMAINDER;
- default: return op;
- }
+ return switch (op) {
+ case Types.PLUS_EQUAL -> Types.PLUS;
+ case Types.MINUS_EQUAL -> Types.MINUS;
+ case Types.MULTIPLY_EQUAL -> Types.MULTIPLY;
+ case Types.LEFT_SHIFT_EQUAL -> Types.LEFT_SHIFT;
+ case Types.RIGHT_SHIFT_EQUAL -> Types.RIGHT_SHIFT;
+ case Types.RIGHT_SHIFT_UNSIGNED_EQUAL ->
Types.RIGHT_SHIFT_UNSIGNED;
+ case Types.LOGICAL_OR_EQUAL -> Types.LOGICAL_OR;
+ case Types.LOGICAL_AND_EQUAL -> Types.LOGICAL_AND;
+ case Types.MOD_EQUAL -> Types.MOD;
+ case Types.DIVIDE_EQUAL -> Types.DIVIDE;
+ case Types.INTDIV_EQUAL -> Types.INTDIV;
+ case Types.POWER_EQUAL -> Types.POWER;
+ case Types.BITWISE_OR_EQUAL -> Types.BITWISE_OR;
+ case Types.BITWISE_AND_EQUAL -> Types.BITWISE_AND;
+ case Types.BITWISE_XOR_EQUAL -> Types.BITWISE_XOR;
+ case Types.REMAINDER_EQUAL -> Types.REMAINDER;
+ default -> op;
+ };
}
}
diff --git a/src/main/java/org/codehaus/groovy/syntax/Types.java
b/src/main/java/org/codehaus/groovy/syntax/Types.java
index a24a6aa6ee..12597e37b4 100644
--- a/src/main/java/org/codehaus/groovy/syntax/Types.java
+++ b/src/main/java/org/codehaus/groovy/syntax/Types.java
@@ -476,27 +476,14 @@ public class Types {
break;
case INFIX_OPERATOR:
- switch (specific) {
- case DOT:
- case NAVIGATE:
- case LOGICAL_OR:
- case LOGICAL_AND:
- case BITWISE_OR:
- case BITWISE_AND:
- case BITWISE_XOR:
- case LEFT_SHIFT:
- case RIGHT_SHIFT:
- case RIGHT_SHIFT_UNSIGNED:
- case FIND_REGEX:
- case MATCH_REGEX:
- case DOT_DOT:
- case DOT_DOT_DOT:
- case KEYWORD_INSTANCEOF:
- return true;
- }
-
- return (specific >= COMPARE_NOT_EQUAL && specific <=
COMPARE_TO) || (specific >= PLUS && specific <= MOD_EQUAL) || specific == EQUAL
|| (specific >= PLUS_EQUAL && specific <= ELVIS_EQUAL) || (specific >=
LOGICAL_OR_EQUAL && specific <= LOGICAL_AND_EQUAL)
- || (specific >= LEFT_SHIFT_EQUAL && specific <=
RIGHT_SHIFT_UNSIGNED_EQUAL) || (specific >= BITWISE_OR_EQUAL && specific <=
BITWISE_XOR_EQUAL);
+ return switch (specific) {
+ case DOT, NAVIGATE, LOGICAL_OR, LOGICAL_AND, BITWISE_OR,
BITWISE_AND, BITWISE_XOR, LEFT_SHIFT,
+ RIGHT_SHIFT, RIGHT_SHIFT_UNSIGNED, FIND_REGEX,
MATCH_REGEX, DOT_DOT, DOT_DOT_DOT,
+ KEYWORD_INSTANCEOF -> true;
+ default ->
+ (specific >= COMPARE_NOT_EQUAL && specific <=
COMPARE_TO) || (specific >= PLUS && specific <= MOD_EQUAL) || specific == EQUAL
|| (specific >= PLUS_EQUAL && specific <= ELVIS_EQUAL) || (specific >=
LOGICAL_OR_EQUAL && specific <= LOGICAL_AND_EQUAL)
+ || (specific >= LEFT_SHIFT_EQUAL && specific <=
RIGHT_SHIFT_UNSIGNED_EQUAL) || (specific >= BITWISE_OR_EQUAL && specific <=
BITWISE_XOR_EQUAL);
+ };
case PREFIX_OR_INFIX_OPERATOR:
switch (specific) {
@@ -670,45 +657,25 @@ public class Types {
case UNSAFE_OVER_NEWLINES:
if (ofType(specific, SYMBOL)) {
- switch (specific) {
- case LEFT_CURLY_BRACE:
- case LEFT_PARENTHESIS:
- case LEFT_SQUARE_BRACKET:
- case PLUS:
- case PLUS_PLUS:
- case MINUS:
- case MINUS_MINUS:
- case REGEX_PATTERN:
- case NOT:
- return true;
- }
-
- return false;
- }
+ return switch (specific) {
+ case LEFT_CURLY_BRACE, LEFT_PARENTHESIS,
LEFT_SQUARE_BRACKET, PLUS, PLUS_PLUS, MINUS,
+ MINUS_MINUS, REGEX_PATTERN, NOT -> true;
+ default -> false;
+ };
- switch (specific) {
- case KEYWORD_INSTANCEOF:
- case GSTRING_EXPRESSION_START:
- case GSTRING_EXPRESSION_END:
- case GSTRING_END:
- return false;
}
- return true;
+ return switch (specific) {
+ case KEYWORD_INSTANCEOF, GSTRING_EXPRESSION_START,
GSTRING_EXPRESSION_END, GSTRING_END -> false;
+ default -> true;
+ };
case PRECLUDES_CAST_OPERATOR:
- switch (specific) {
- case PLUS:
- case MINUS:
- case PREFIX_MINUS:
- case PREFIX_MINUS_MINUS:
- case PREFIX_PLUS:
- case PREFIX_PLUS_PLUS:
- case LEFT_PARENTHESIS:
- return false;
- }
-
- return !ofType(specific, COMPLEX_EXPRESSION);
+ return switch (specific) {
+ case PLUS, MINUS, PREFIX_MINUS, PREFIX_MINUS_MINUS,
PREFIX_PLUS, PREFIX_PLUS_PLUS,
+ LEFT_PARENTHESIS -> false;
+ default -> !ofType(specific, COMPLEX_EXPRESSION);
+ };
case OPERATOR_EXPRESSION:
diff --git
a/src/main/java/org/codehaus/groovy/transform/OperatorRenameASTTransformation.java
b/src/main/java/org/codehaus/groovy/transform/OperatorRenameASTTransformation.java
index 16d58d93b7..03ade2e2b5 100644
---
a/src/main/java/org/codehaus/groovy/transform/OperatorRenameASTTransformation.java
+++
b/src/main/java/org/codehaus/groovy/transform/OperatorRenameASTTransformation.java
@@ -146,61 +146,22 @@ public class OperatorRenameASTTransformation extends
ClassCodeExpressionTransfor
}
static String getOperationName(final int op) {
- switch (op) {
- case COMPARE_TO:
- return "compareTo";
-
- case BITWISE_AND:
- case BITWISE_AND_EQUAL:
- return "and";
-
- case BITWISE_OR:
- case BITWISE_OR_EQUAL:
- return "or";
-
- case BITWISE_XOR:
- case BITWISE_XOR_EQUAL:
- return "xor";
-
- case PLUS:
- case PLUS_EQUAL:
- return "plus";
-
- case MINUS:
- case MINUS_EQUAL:
- return "minus";
-
- case MULTIPLY:
- case MULTIPLY_EQUAL:
- return "multiply";
-
- case DIVIDE:
- case DIVIDE_EQUAL:
- return "div";
-
- case REMAINDER:
- case REMAINDER_EQUAL:
- return "remainder";
-
- case POWER:
- case POWER_EQUAL:
- return "power";
-
- case LEFT_SHIFT:
- case LEFT_SHIFT_EQUAL:
- return "leftShift";
-
- case RIGHT_SHIFT:
- case RIGHT_SHIFT_EQUAL:
- return "rightShift";
-
- case RIGHT_SHIFT_UNSIGNED:
- case RIGHT_SHIFT_UNSIGNED_EQUAL:
- return "rightShiftUnsigned";
-
- default:
- return null;
- }
+ return switch (op) {
+ case COMPARE_TO -> "compareTo";
+ case BITWISE_AND, BITWISE_AND_EQUAL -> "and";
+ case BITWISE_OR, BITWISE_OR_EQUAL -> "or";
+ case BITWISE_XOR, BITWISE_XOR_EQUAL -> "xor";
+ case PLUS, PLUS_EQUAL -> "plus";
+ case MINUS, MINUS_EQUAL -> "minus";
+ case MULTIPLY, MULTIPLY_EQUAL -> "multiply";
+ case DIVIDE, DIVIDE_EQUAL -> "div";
+ case REMAINDER, REMAINDER_EQUAL -> "remainder";
+ case POWER, POWER_EQUAL -> "power";
+ case LEFT_SHIFT, LEFT_SHIFT_EQUAL -> "leftShift";
+ case RIGHT_SHIFT, RIGHT_SHIFT_EQUAL -> "rightShift";
+ case RIGHT_SHIFT_UNSIGNED, RIGHT_SHIFT_UNSIGNED_EQUAL ->
"rightShiftUnsigned";
+ default -> null;
+ };
}
}
diff --git
a/src/main/java/org/codehaus/groovy/transform/stc/SignatureCodecVersion1.java
b/src/main/java/org/codehaus/groovy/transform/stc/SignatureCodecVersion1.java
index c9f5236fab..e2753997cb 100644
---
a/src/main/java/org/codehaus/groovy/transform/stc/SignatureCodecVersion1.java
+++
b/src/main/java/org/codehaus/groovy/transform/stc/SignatureCodecVersion1.java
@@ -201,17 +201,18 @@ public class SignatureCodecVersion1 implements
SignatureCodec {
}
} else {
// primitive type
- switch (typeCode) {
- case 'I': result = int_TYPE; break;
- case 'Z': result = boolean_TYPE; break;
- case 'B': result = byte_TYPE; break;
- case 'C': result = char_TYPE; break;
- case 'S': result = short_TYPE; break;
- case 'D': result = double_TYPE; break;
- case 'F': result = float_TYPE; break;
- case 'J': result = long_TYPE; break;
- case 'V': result = VOID_TYPE; break;
- }
+ result = switch (typeCode) {
+ case 'I' -> int_TYPE;
+ case 'Z' -> boolean_TYPE;
+ case 'B' -> byte_TYPE;
+ case 'C' -> char_TYPE;
+ case 'S' -> short_TYPE;
+ case 'D' -> double_TYPE;
+ case 'F' -> float_TYPE;
+ case 'J' -> long_TYPE;
+ case 'V' -> VOID_TYPE;
+ default -> result;
+ };
}
return result;
}
diff --git
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index bfa955c405..cb84c11b1c 100644
---
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -484,19 +484,11 @@ public abstract class StaticTypeCheckingSupport {
}
static boolean isBoolIntrinsicOp(final int op) {
- switch (op) {
- case LOGICAL_AND:
- case LOGICAL_OR:
- case COMPARE_NOT_IDENTICAL:
- case COMPARE_IDENTICAL:
- case MATCH_REGEX:
- case KEYWORD_INSTANCEOF:
- case COMPARE_NOT_INSTANCEOF:
- case IMPLIES:
- return true;
- default:
- return false;
- }
+ return switch (op) {
+ case LOGICAL_AND, LOGICAL_OR, COMPARE_NOT_IDENTICAL,
COMPARE_IDENTICAL, MATCH_REGEX, KEYWORD_INSTANCEOF,
+ COMPARE_NOT_INSTANCEOF, IMPLIES -> true;
+ default -> false;
+ };
}
static boolean isPowerOperator(final int op) {
@@ -504,86 +496,32 @@ public abstract class StaticTypeCheckingSupport {
}
static String getOperationName(final int op) {
- switch (op) {
- case COMPARE_EQUAL:
- case COMPARE_NOT_EQUAL:
+ return switch (op) {
+ case COMPARE_EQUAL, COMPARE_NOT_EQUAL ->
// this is only correct in this specific context; normally
// we would have to compile against compareTo if available
// but since we don't compile here, this one is enough
- return "equals";
-
- case COMPARE_TO:
- case COMPARE_LESS_THAN:
- case COMPARE_LESS_THAN_EQUAL:
- case COMPARE_GREATER_THAN:
- case COMPARE_GREATER_THAN_EQUAL:
- return "compareTo";
-
- case BITWISE_AND:
- case BITWISE_AND_EQUAL:
- return "and";
-
- case BITWISE_OR:
- case BITWISE_OR_EQUAL:
- return "or";
-
- case BITWISE_XOR:
- case BITWISE_XOR_EQUAL:
- return "xor";
-
- case PLUS:
- case PLUS_EQUAL:
- return "plus";
-
- case MINUS:
- case MINUS_EQUAL:
- return "minus";
-
- case MULTIPLY:
- case MULTIPLY_EQUAL:
- return "multiply";
-
- case DIVIDE:
- case DIVIDE_EQUAL:
- return "div";
-
- case INTDIV:
- case INTDIV_EQUAL:
- return "intdiv";
-
- case MOD:
- case MOD_EQUAL:
- return "mod";
-
- case REMAINDER:
- case REMAINDER_EQUAL:
- return "remainder";
-
- case POWER:
- case POWER_EQUAL:
- return "power";
-
- case LEFT_SHIFT:
- case LEFT_SHIFT_EQUAL:
- return "leftShift";
-
- case RIGHT_SHIFT:
- case RIGHT_SHIFT_EQUAL:
- return "rightShift";
-
- case RIGHT_SHIFT_UNSIGNED:
- case RIGHT_SHIFT_UNSIGNED_EQUAL:
- return "rightShiftUnsigned";
-
- case KEYWORD_IN:
- return "isCase";
-
- case COMPARE_NOT_IN:
- return "isNotCase";
-
- default:
- return null;
- }
+ "equals";
+ case COMPARE_TO, COMPARE_LESS_THAN, COMPARE_LESS_THAN_EQUAL,
COMPARE_GREATER_THAN,
+ COMPARE_GREATER_THAN_EQUAL -> "compareTo";
+ case BITWISE_AND, BITWISE_AND_EQUAL -> "and";
+ case BITWISE_OR, BITWISE_OR_EQUAL -> "or";
+ case BITWISE_XOR, BITWISE_XOR_EQUAL -> "xor";
+ case PLUS, PLUS_EQUAL -> "plus";
+ case MINUS, MINUS_EQUAL -> "minus";
+ case MULTIPLY, MULTIPLY_EQUAL -> "multiply";
+ case DIVIDE, DIVIDE_EQUAL -> "div";
+ case INTDIV, INTDIV_EQUAL -> "intdiv";
+ case MOD, MOD_EQUAL -> "mod";
+ case REMAINDER, REMAINDER_EQUAL -> "remainder";
+ case POWER, POWER_EQUAL -> "power";
+ case LEFT_SHIFT, LEFT_SHIFT_EQUAL -> "leftShift";
+ case RIGHT_SHIFT, RIGHT_SHIFT_EQUAL -> "rightShift";
+ case RIGHT_SHIFT_UNSIGNED, RIGHT_SHIFT_UNSIGNED_EQUAL ->
"rightShiftUnsigned";
+ case KEYWORD_IN -> "isCase";
+ case COMPARE_NOT_IN -> "isNotCase";
+ default -> null;
+ };
}
static boolean isShiftOperation(final String name) {
@@ -596,31 +534,17 @@ public abstract class StaticTypeCheckingSupport {
* their variants with equals.
*/
static boolean isOperationInGroup(final int op) {
- switch (op) {
- case PLUS:
- case PLUS_EQUAL:
- case MINUS:
- case MINUS_EQUAL:
- case MULTIPLY:
- case MULTIPLY_EQUAL:
- return true;
- default:
- return false;
- }
+ return switch (op) {
+ case PLUS, PLUS_EQUAL, MINUS, MINUS_EQUAL, MULTIPLY,
MULTIPLY_EQUAL -> true;
+ default -> false;
+ };
}
static boolean isBitOperator(final int op) {
- switch (op) {
- case BITWISE_OR_EQUAL:
- case BITWISE_OR:
- case BITWISE_AND_EQUAL:
- case BITWISE_AND:
- case BITWISE_XOR_EQUAL:
- case BITWISE_XOR:
- return true;
- default:
- return false;
- }
+ return switch (op) {
+ case BITWISE_OR_EQUAL, BITWISE_OR, BITWISE_AND_EQUAL, BITWISE_AND,
BITWISE_XOR_EQUAL, BITWISE_XOR -> true;
+ default -> false;
+ };
}
public static boolean isAssignment(final int op) {
@@ -788,45 +712,31 @@ public abstract class StaticTypeCheckingSupport {
if (!(value instanceof Number number)) return true; // null or ...
switch (leftIndex) {
case 0: // byte
- switch (rightIndex) {
- case 1:
- return Short .compare(number.byteValue(), number.
shortValue()) != 0;
- case 2:
- return Integer.compare(number.byteValue(), number.
intValue()) != 0;
- case 3:
- return Long .compare(number.byteValue(), number.
longValue()) != 0;
- case 4:
- return Float .compare(number.byteValue(), number.
floatValue()) != 0;
- default:
- return Double .compare(number.byteValue(),
number.doubleValue()) != 0;
- }
+ return switch (rightIndex) {
+ case 1 -> Short.compare(number.byteValue(),
number.shortValue()) != 0;
+ case 2 -> Integer.compare(number.byteValue(),
number.intValue()) != 0;
+ case 3 -> Long.compare(number.byteValue(),
number.longValue()) != 0;
+ case 4 -> Float.compare(number.byteValue(),
number.floatValue()) != 0;
+ default -> Double.compare(number.byteValue(),
number.doubleValue()) != 0;
+ };
case 1: // short
- switch (rightIndex) {
- case 2:
- return Integer.compare(number.shortValue(), number.
intValue()) != 0;
- case 3:
- return Long .compare(number.shortValue(), number.
longValue()) != 0;
- case 4:
- return Float .compare(number.shortValue(), number.
floatValue()) != 0;
- default:
- return Double .compare(number.shortValue(),
number.doubleValue()) != 0;
- }
+ return switch (rightIndex) {
+ case 2 -> Integer.compare(number.shortValue(),
number.intValue()) != 0;
+ case 3 -> Long.compare(number.shortValue(),
number.longValue()) != 0;
+ case 4 -> Float.compare(number.shortValue(),
number.floatValue()) != 0;
+ default -> Double.compare(number.shortValue(),
number.doubleValue()) != 0;
+ };
case 2: // int
- switch (rightIndex) {
- case 3:
- return Long .compare(number.intValue(), number.
longValue()) != 0;
- case 4:
- return Float .compare(number.intValue(), number.
floatValue()) != 0;
- default:
- return Double.compare(number.intValue(),
number.doubleValue()) != 0;
- }
+ return switch (rightIndex) {
+ case 3 -> Long.compare(number.intValue(),
number.longValue()) != 0;
+ case 4 -> Float.compare(number.intValue(),
number.floatValue()) != 0;
+ default -> Double.compare(number.intValue(),
number.doubleValue()) != 0;
+ };
case 3: // long
- switch (rightIndex) {
- case 4:
- return Float .compare(number.longValue(), number.
floatValue()) != 0;
- default:
- return Double.compare(number.longValue(),
number.doubleValue()) != 0;
- }
+ return switch (rightIndex) {
+ case 4 -> Float.compare(number.longValue(),
number.floatValue()) != 0;
+ default -> Double.compare(number.longValue(),
number.doubleValue()) != 0;
+ };
case 4: // float
return Double.compare(number.floatValue(),
number.doubleValue()) != 0;
default: // double
diff --git
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 5ec9f6b4a2..7e48c881e5 100644
---
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -6331,12 +6331,10 @@ out: for (ClassNode type : todo) {
public static class SignatureCodecFactory {
public static SignatureCodec getCodec(final int version, final
ClassLoader classLoader) {
- switch (version) {
- case 1:
- return new SignatureCodecVersion1(classLoader);
- default:
- return null;
- }
+ return switch (version) {
+ case 1 -> new SignatureCodecVersion1(classLoader);
+ default -> null;
+ };
}
}
diff --git
a/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java
b/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java
index 987684c1cd..e9bf8ddcb1 100644
---
a/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java
+++
b/src/main/java/org/codehaus/groovy/vmplugin/v8/PluginDefaultGroovyMethods.java
@@ -274,13 +274,10 @@ public class PluginDefaultGroovyMethods extends
DefaultGroovyMethodsSupport {
* @since 5.0.0
*/
public static <T> T getAt(final Optional<T> self, final int index) {
- switch (index) {
- case 0:
- case -1:
- return self.orElse(null);
- default:
- throw new IndexOutOfBoundsException("" + index);
- }
+ return switch (index) {
+ case 0, -1 -> self.orElse(null);
+ default -> throw new IndexOutOfBoundsException("" + index);
+ };
}
/**
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
index 350b66d87a..5c24c16487 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
@@ -128,22 +128,19 @@ public abstract class Selector {
*/
public static Selector getSelector(CacheableCallSite callSite, Class<?>
sender, String methodName, int callID, boolean safeNavigation, boolean
thisCall, boolean spreadCall, Object[] arguments) {
CallType callType = CALL_TYPE_VALUES[callID];
- switch (callType) {
- case INIT:
- return new InitSelector(callSite, sender, methodName,
callType, safeNavigation, thisCall, spreadCall, arguments);
- case METHOD:
- return new MethodSelector(callSite, sender, methodName,
callType, safeNavigation, thisCall, spreadCall, arguments);
- case GET:
- return new PropertySelector(callSite, sender, methodName,
callType, safeNavigation, thisCall, spreadCall, arguments);
- case SET:
- throw new GroovyBugError("your call tried to do a property
set, which is not supported.");
- case CAST:
- return new CastSelector(callSite, arguments);
- case INTERFACE:
- return new InterfaceSelector(callSite, sender, methodName,
callType, safeNavigation, thisCall, spreadCall, arguments);
- default:
- throw new GroovyBugError("unexpected call type");
- }
+ return switch (callType) {
+ case INIT ->
+ new InitSelector(callSite, sender, methodName, callType,
safeNavigation, thisCall, spreadCall, arguments);
+ case METHOD ->
+ new MethodSelector(callSite, sender, methodName, callType,
safeNavigation, thisCall, spreadCall, arguments);
+ case GET ->
+ new PropertySelector(callSite, sender, methodName, callType,
safeNavigation, thisCall, spreadCall, arguments);
+ case SET -> throw new GroovyBugError("your call tried to do a
property set, which is not supported.");
+ case CAST -> new CastSelector(callSite, arguments);
+ case INTERFACE ->
+ new InterfaceSelector(callSite, sender, methodName, callType,
safeNavigation, thisCall, spreadCall, arguments);
+ default -> throw new GroovyBugError("unexpected call type");
+ };
}
/**
diff --git
a/subprojects/groovy-datetime/src/main/java/org/apache/groovy/datetime/extensions/DateTimeExtensions.java
b/subprojects/groovy-datetime/src/main/java/org/apache/groovy/datetime/extensions/DateTimeExtensions.java
index deb96529dd..038db93bd1 100644
---
a/subprojects/groovy-datetime/src/main/java/org/apache/groovy/datetime/extensions/DateTimeExtensions.java
+++
b/subprojects/groovy-datetime/src/main/java/org/apache/groovy/datetime/extensions/DateTimeExtensions.java
@@ -268,16 +268,12 @@ public final class DateTimeExtensions {
if (!self.getClass().equals(other.getClass())) {
throw new GroovyRuntimeException("Temporal arguments must be of
the same type.");
}
- switch ((ChronoUnit) defaultUnitFor(self)) {
- case YEARS:
- return DateTimeStaticExtensions.between(null, (Year) self,
(Year) other);
- case MONTHS:
- return DateTimeStaticExtensions.between(null, (YearMonth)
self, (YearMonth) other);
- case DAYS:
- return ChronoPeriod.between((ChronoLocalDate) self,
(ChronoLocalDate) other);
- default:
- return Duration.between(self, other);
- }
+ return switch ((ChronoUnit) defaultUnitFor(self)) {
+ case YEARS -> DateTimeStaticExtensions.between(null, (Year) self,
(Year) other);
+ case MONTHS -> DateTimeStaticExtensions.between(null, (YearMonth)
self, (YearMonth) other);
+ case DAYS -> ChronoPeriod.between((ChronoLocalDate) self,
(ChronoLocalDate) other);
+ default -> Duration.between(self, other);
+ };
}
/* ******** java.time.temporal.TemporalAccessor extension methods ********
*/
diff --git
a/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyPosixCommands.java
b/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyPosixCommands.java
index 7f6c3bc59e..c1ae385778 100644
---
a/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyPosixCommands.java
+++
b/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyPosixCommands.java
@@ -399,26 +399,12 @@ public class GroovyPosixCommands extends PosixCommands {
Map<String, String> colorMap = getLsColorMap(context);
String color = opt.isSet("color") ? opt.get("color") : "auto";
- boolean colored;
- switch (color) {
- case "always":
- case "yes":
- case "force":
- colored = true;
- break;
- case "never":
- case "no":
- case "none":
- colored = false;
- break;
- case "auto":
- case "tty":
- case "if-tty":
- colored = context.isTty();
- break;
- default:
- throw new IllegalArgumentException("invalid argument '" +
color + "' for '--color'");
- }
+ boolean colored = switch (color) {
+ case "always", "yes", "force" -> true;
+ case "never", "no", "none" -> false;
+ case "auto", "tty", "if-tty" -> context.isTty();
+ default -> throw new IllegalArgumentException("invalid argument '"
+ color + "' for '--color'");
+ };
Map<String, String> colors =
colored ? (colorMap != null ? colorMap :
getLsColorMap(DEFAULT_LS_COLORS)) : Collections.emptyMap();
@@ -772,26 +758,12 @@ public class GroovyPosixCommands extends PosixCommands {
boolean invert = opt.isSet("invert-match");
boolean lineNumber = opt.isSet("line-number");
String color = opt.isSet("color") ? opt.get("color") : "auto";
- boolean colored;
- switch (color) {
- case "always":
- case "yes":
- case "force":
- colored = true;
- break;
- case "never":
- case "no":
- case "none":
- colored = false;
- break;
- case "auto":
- case "tty":
- case "if-tty":
- colored = context.isTty();
- break;
- default:
- throw new IllegalArgumentException("invalid argument '" +
color + "' for '--color'");
- }
+ boolean colored = switch (color) {
+ case "always", "yes", "force" -> true;
+ case "never", "no", "none" -> false;
+ case "auto", "tty", "if-tty" -> context.isTty();
+ default -> throw new IllegalArgumentException("invalid argument '"
+ color + "' for '--color'");
+ };
Map<String, String> colors =
colored ? (colorMap != null ? colorMap :
getColorMap(DEFAULT_GREP_COLORS)) : Collections.emptyMap();
diff --git a/subprojects/groovy-json/src/main/java/groovy/json/JsonSlurper.java
b/subprojects/groovy-json/src/main/java/groovy/json/JsonSlurper.java
index c325c8e9e2..58a62d1ec8 100644
--- a/subprojects/groovy-json/src/main/java/groovy/json/JsonSlurper.java
+++ b/subprojects/groovy-json/src/main/java/groovy/json/JsonSlurper.java
@@ -318,23 +318,13 @@ public class JsonSlurper {
}
private JsonParser createParser() {
- switch (type) {
- case LAX:
- return new JsonParserLax(false, chop, lazyChop, checkDates);
-
- case CHAR_BUFFER:
- return new JsonParserCharArray();
-
- case CHARACTER_SOURCE:
- return new JsonParserUsingCharacterSource();
-
-
- case INDEX_OVERLAY:
- return new JsonFastParser(false, chop, lazyChop, checkDates);
-
- default:
- return new JsonParserCharArray();
- }
+ return switch (type) {
+ case LAX -> new JsonParserLax(false, chop, lazyChop, checkDates);
+ case CHAR_BUFFER -> new JsonParserCharArray();
+ case CHARACTER_SOURCE -> new JsonParserUsingCharacterSource();
+ case INDEX_OVERLAY -> new JsonFastParser(false, chop, lazyChop,
checkDates);
+ default -> new JsonParserCharArray();
+ };
}
/**
diff --git
a/subprojects/groovy-json/src/main/java/groovy/json/JsonTokenType.java
b/subprojects/groovy-json/src/main/java/groovy/json/JsonTokenType.java
index f1734ba1a1..9e33b7f8d5 100644
--- a/subprojects/groovy-json/src/main/java/groovy/json/JsonTokenType.java
+++ b/subprojects/groovy-json/src/main/java/groovy/json/JsonTokenType.java
@@ -108,34 +108,20 @@ public enum JsonTokenType {
* @return the possible token type found
*/
public static JsonTokenType startingWith(char c) {
- switch (c) {
- case '{': return OPEN_CURLY;
- case '}': return CLOSE_CURLY;
- case '[': return OPEN_BRACKET;
- case ']': return CLOSE_BRACKET;
- case ',': return COMMA;
- case ':': return COLON;
-
- case 't': return TRUE;
- case 'f': return FALSE;
- case 'n': return NULL;
-
- case '"': return STRING;
-
- case '-':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- return NUMBER;
- }
- return null;
+ return switch (c) {
+ case '{' -> OPEN_CURLY;
+ case '}' -> CLOSE_CURLY;
+ case '[' -> OPEN_BRACKET;
+ case ']' -> CLOSE_BRACKET;
+ case ',' -> COMMA;
+ case ':' -> COLON;
+ case 't' -> TRUE;
+ case 'f' -> FALSE;
+ case 'n' -> NULL;
+ case '"' -> STRING;
+ case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ->
NUMBER;
+ default -> null;
+ };
}
public String getLabel() {
diff --git
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/BaseJsonParser.java
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/BaseJsonParser.java
index 5744225308..6ecb486d2c 100644
---
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/BaseJsonParser.java
+++
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/BaseJsonParser.java
@@ -173,15 +173,10 @@ public abstract class BaseJsonParser implements
JsonParser {
}
protected static boolean isDecimalChar(int currentChar) {
- switch (currentChar) {
- case MINUS:
- case PLUS:
- case LETTER_E:
- case LETTER_BIG_E:
- case DECIMAL_POINT:
- return true;
- }
- return false;
+ return switch (currentChar) {
+ case MINUS, PLUS, LETTER_E, LETTER_BIG_E, DECIMAL_POINT -> true;
+ default -> false;
+ };
}
protected static boolean isDelimiter(int c) {
diff --git
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/ByteScanner.java
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/ByteScanner.java
index e6186d9daa..d72d053aed 100644
---
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/ByteScanner.java
+++
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/ByteScanner.java
@@ -29,29 +29,14 @@ public class ByteScanner {
* @return the encoded nibble (1/2 byte).
*/
protected static int encodeNibbleToHexAsciiCharByte(final int nibble) {
- switch (nibble) {
- case 0x00:
- case 0x01:
- case 0x02:
- case 0x03:
- case 0x04:
- case 0x05:
- case 0x06:
- case 0x07:
- case 0x08:
- case 0x09:
- return nibble + 0x30; // 0x30('0') - 0x39('9')
- case 0x0A:
- case 0x0B:
- case 0x0C:
- case 0x0D:
- case 0x0E:
- case 0x0F:
- return nibble + 0x57; // 0x41('a') - 0x46('f')
- default:
+ return switch (nibble) {
+ case 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 ->
nibble + 0x30; // 0x30('0') - 0x39('9')
+ case 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F -> nibble + 0x57; //
0x41('a') - 0x46('f')
+ default -> {
die("illegal nibble: " + nibble);
- return -1;
- }
+ yield -1;
+ }
+ };
}
/**
diff --git
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/CharScanner.java
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/CharScanner.java
index d11ba7b45d..a784612369 100644
---
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/CharScanner.java
+++
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/CharScanner.java
@@ -72,15 +72,10 @@ public class CharScanner {
}
public static boolean isDecimalChar(int currentChar) {
- switch (currentChar) {
- case MINUS:
- case PLUS:
- case LETTER_E:
- case LETTER_BIG_E:
- case DECIMAL_POINT:
- return true;
- }
- return false;
+ return switch (currentChar) {
+ case MINUS, PLUS, LETTER_E, LETTER_BIG_E, DECIMAL_POINT -> true;
+ default -> false;
+ };
}
public static boolean hasDecimalChar(char[] chars, boolean negative) {
diff --git
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonFastParser.java
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonFastParser.java
index ee81767454..82cc91bd8a 100644
---
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonFastParser.java
+++
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonFastParser.java
@@ -113,45 +113,21 @@ public class JsonFastParser extends JsonParserCharArray {
private Value decodeValueOverlay() {
skipWhiteSpace();
- switch (__currentChar) {
- case '"':
- return decodeStringOverlay();
-
- case '{':
- return decodeJsonObjectLazyFinalParse();
-
- case 't':
- return decodeTrue() ? ValueContainer.TRUE :
ValueContainer.FALSE;
-
- case 'f':
- return !decodeFalse() ? ValueContainer.FALSE :
ValueContainer.TRUE;
-
- case 'n':
- return decodeNull() == null ? ValueContainer.NULL :
ValueContainer.NULL;
-
- case '[':
- return decodeJsonArrayOverlay();
-
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case '0':
- return decodeNumberOverlay(false);
-
- case '-':
- return decodeNumberOverlay(true);
-
- default:
+ return switch (__currentChar) {
+ case '"' -> decodeStringOverlay();
+ case '{' -> decodeJsonObjectLazyFinalParse();
+ case 't' -> decodeTrue() ? ValueContainer.TRUE :
ValueContainer.FALSE;
+ case 'f' -> !decodeFalse() ? ValueContainer.FALSE :
ValueContainer.TRUE;
+ case 'n' -> decodeNull() == null ? ValueContainer.NULL :
ValueContainer.NULL;
+ case '[' -> decodeJsonArrayOverlay();
+ case '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ->
decodeNumberOverlay(false);
+ case '-' -> decodeNumberOverlay(true);
+ default -> {
complain("Unable to determine the " +
- "current character, it is not a string, number, array,
or object");
- return null;
- }
+ "current character, it is not a string, number, array, or
object");
+ yield null;
+ }
+ };
}
private Value decodeNumberOverlay(final boolean minus) {
diff --git
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserCharArray.java
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserCharArray.java
index d8dc31c9cb..d053eed545 100644
---
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserCharArray.java
+++
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserCharArray.java
@@ -169,51 +169,18 @@ public class JsonParserCharArray extends BaseJsonParser {
Object value = null;
skipWhiteSpace();
- switch (__currentChar) {
- case '"':
- value = decodeString();
- break;
-
- case 't':
- value = decodeTrue();
- break;
-
- case 'f':
- value = decodeFalse();
- break;
-
- case 'n':
- value = decodeNull();
- break;
-
- case '[':
- value = decodeJsonArray();
- break;
-
- case '{':
- value = decodeJsonObject();
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- value = decodeNumber();
- break;
- case '-':
- value = decodeNumber();
- break;
-
- default:
- throw new JsonException(exceptionDetails("Unable to determine
the " +
- "current character, it is not a string, number, array,
or object"));
- }
+ value = switch (__currentChar) {
+ case '"' -> decodeString();
+ case 't' -> decodeTrue();
+ case 'f' -> decodeFalse();
+ case 'n' -> decodeNull();
+ case '[' -> decodeJsonArray();
+ case '{' -> decodeJsonObject();
+ case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ->
decodeNumber();
+ case '-' -> decodeNumber();
+ default -> throw new JsonException(exceptionDetails("Unable to
determine the " +
+ "current character, it is not a string, number, array, or
object"));
+ };
diff --git
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserUsingCharacterSource.java
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserUsingCharacterSource.java
index 87d4886cc4..ebe71d56a4 100644
---
a/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserUsingCharacterSource.java
+++
b/subprojects/groovy-json/src/main/java/org/apache/groovy/json/internal/JsonParserUsingCharacterSource.java
@@ -110,52 +110,18 @@ public class JsonParserUsingCharacterSource extends
BaseJsonParser {
Object value = null;
characterSource.skipWhiteSpace();
- switch (characterSource.currentChar()) {
- case '"':
- value = decodeString();
- break;
-
- case 't':
- value = decodeTrue();
- break;
-
- case 'f':
- value = decodeFalse();
- break;
-
- case 'n':
- value = decodeNull();
- break;
-
- case '[':
- value = decodeJsonArray();
- break;
-
- case '{':
- value = decodeJsonObject();
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- value = decodeNumber(false);
- break;
-
- case '-':
- value = decodeNumber(true);
- break;
-
- default:
- throw new JsonException(exceptionDetails("Unable to determine
the " +
- "current character, it is not a string, number, array,
or object"));
- }
+ value = switch (characterSource.currentChar()) {
+ case '"' -> decodeString();
+ case 't' -> decodeTrue();
+ case 'f' -> decodeFalse();
+ case 'n' -> decodeNull();
+ case '[' -> decodeJsonArray();
+ case '{' -> decodeJsonObject();
+ case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ->
decodeNumber(false);
+ case '-' -> decodeNumber(true);
+ default -> throw new JsonException(exceptionDetails("Unable to
determine the " +
+ "current character, it is not a string, number, array, or
object"));
+ };
return value;
}
diff --git
a/subprojects/groovy-sql/src/main/java/groovy/sql/SqlWhereVisitor.java
b/subprojects/groovy-sql/src/main/java/groovy/sql/SqlWhereVisitor.java
index 67320ca728..848926df78 100644
--- a/subprojects/groovy-sql/src/main/java/groovy/sql/SqlWhereVisitor.java
+++ b/subprojects/groovy-sql/src/main/java/groovy/sql/SqlWhereVisitor.java
@@ -91,15 +91,11 @@ public class SqlWhereVisitor extends CodeVisitorSupport {
}
protected String tokenAsSql(Token token) {
- switch (token.getType()) {
- case Types.COMPARE_EQUAL:
- return "=";
- case Types.LOGICAL_AND:
- return "and";
- case Types.LOGICAL_OR:
- return "or";
- default:
- return token.getText();
- }
+ return switch (token.getType()) {
+ case Types.COMPARE_EQUAL -> "=";
+ case Types.LOGICAL_AND -> "and";
+ case Types.LOGICAL_OR -> "or";
+ default -> token.getText();
+ };
}
}
diff --git a/subprojects/groovy-xml/src/main/java/groovy/xml/XmlUtil.java
b/subprojects/groovy-xml/src/main/java/groovy/xml/XmlUtil.java
index 93e77396e1..f8530d957c 100644
--- a/subprojects/groovy-xml/src/main/java/groovy/xml/XmlUtil.java
+++ b/subprojects/groovy-xml/src/main/java/groovy/xml/XmlUtil.java
@@ -442,19 +442,14 @@ public class XmlUtil {
public static String escapeXml(String orig) {
return StringGroovyMethods.collectReplacements(orig, new
Closure<String>(null) {
public String doCall(Character arg) {
- switch (arg) {
- case '&':
- return "&";
- case '<':
- return "<";
- case '>':
- return ">";
- case '"':
- return """;
- case '\'':
- return "'";
- }
- return null;
+ return switch (arg) {
+ case '&' -> "&";
+ case '<' -> "<";
+ case '>' -> ">";
+ case '"' -> """;
+ case '\'' -> "'";
+ default -> null;
+ };
}
});
}
diff --git
a/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlAttributeFilter.java
b/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlAttributeFilter.java
index 3fdbcdd218..b67cfa6685 100644
---
a/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlAttributeFilter.java
+++
b/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlAttributeFilter.java
@@ -24,17 +24,12 @@ import java.util.function.Function;
public class StandardXmlAttributeFilter implements Function<Character,
Optional<String>> {
@Override
public Optional<String> apply(Character ch) {
- String result = null;
- switch (ch) {
- case '\n':
- result = " ";
- break;
- case '\r':
- result = " ";
- break;
- case '\t':
- result = "	";
- }
+ String result = switch (ch) {
+ case '\n' -> " ";
+ case '\r' -> " ";
+ case '\t' -> "	";
+ default -> null;
+ };
return Optional.ofNullable(result);
}
}
diff --git
a/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlFilter.java
b/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlFilter.java
index c1e8151e1b..a8ef1bf670 100644
---
a/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlFilter.java
+++
b/subprojects/groovy-xml/src/main/java/groovy/xml/markupsupport/StandardXmlFilter.java
@@ -24,17 +24,12 @@ import java.util.function.Function;
public class StandardXmlFilter implements Function<Character,
Optional<String>> {
@Override
public Optional<String> apply(Character ch) {
- String result = null;
- switch (ch) {
- case '&':
- result = "&";
- break;
- case '<':
- result = "<";
- break;
- case '>':
- result = ">";
- }
+ String result = switch (ch) {
+ case '&' -> "&";
+ case '<' -> "<";
+ case '>' -> ">";
+ default -> null;
+ };
return Optional.ofNullable(result);
}
}