Repository: groovy Updated Branches: refs/heads/master 2c226838e -> 0d86565c5
GROOVY-7876: ClassCastException when calling DefaultTypeTransformation#compareEqual (minor refactor) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/0d86565c Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/0d86565c Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/0d86565c Branch: refs/heads/master Commit: 0d86565c503595965ce2ed697e87ddafe7c40491 Parents: 2c22683 Author: paulk <pa...@asert.com.au> Authored: Sun Jul 24 21:27:16 2016 +1000 Committer: paulk <pa...@asert.com.au> Committed: Sun Jul 24 21:27:16 2016 +1000 ---------------------------------------------------------------------- .../groovy/runtime/typehandling/DefaultTypeTransformation.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/0d86565c/src/main/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java b/src/main/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java index 41484d8..94e0084 100644 --- a/src/main/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java +++ b/src/main/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java @@ -578,9 +578,12 @@ public class DefaultTypeTransformation { else if (left instanceof String && right instanceof GString) { return ((String) left).compareTo(right.toString()); } + else if (left instanceof GString && right instanceof String) { + return ((GString) left).compareTo(right); + } if (!equalityCheckOnly || left.getClass().isAssignableFrom(right.getClass()) || (right.getClass() != Object.class && right.getClass().isAssignableFrom(left.getClass())) //GROOVY-4046 - || (left instanceof GString && right instanceof String)) { + ) { Comparable comparable = (Comparable) left; // GROOVY-7876: when comparing for equality we try to only call compareTo when an assignable // relationship holds but with a container/holder class and because of erasure, we might still end