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 2018/03/09 04:57:35 UTC
[1/2] groovy git commit: Forbid `var` to declare methods
Repository: groovy
Updated Branches:
refs/heads/GROOVY_2_6_X f5f421b71 -> 930508a36
Forbid `var` to declare methods
(cherry picked from commit 9ede855)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2bfb300e
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2bfb300e
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2bfb300e
Branch: refs/heads/GROOVY_2_6_X
Commit: 2bfb300eec702b3589cf83af0d66378866f84aeb
Parents: f5f421b
Author: sunlan <su...@apache.org>
Authored: Thu Mar 8 16:27:26 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Fri Mar 9 12:57:20 2018 +0800
----------------------------------------------------------------------
src/antlr/GroovyLexer.g4 | 2 +-
.../apache/groovy/parser/antlr4/AstBuilder.java | 5 +++++
.../groovy/parser/antlr4/SyntaxErrorTest.groovy | 1 +
.../src/test/resources/fail/Var_02x.groovy | 20 ++++++++++++++++++++
4 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/2bfb300e/src/antlr/GroovyLexer.g4
----------------------------------------------------------------------
diff --git a/src/antlr/GroovyLexer.g4 b/src/antlr/GroovyLexer.g4
index 0ae2866..bf855bf 100644
--- a/src/antlr/GroovyLexer.g4
+++ b/src/antlr/GroovyLexer.g4
@@ -347,7 +347,7 @@ IN : 'in';
TRAIT : 'trait';
THREADSAFE : 'threadsafe'; // reserved keyword
-// Java10 keywords
+// the reserved type name of Java10
VAR : 'var';
// ยง3.9 Keywords
http://git-wip-us.apache.org/repos/asf/groovy/blob/2bfb300e/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index bc9a2c5..f1e35d4 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -1572,6 +1572,11 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
validateMethodDeclaration(ctx);
ModifierManager modifierManager = createModifierManager(ctx);
+
+ if (modifierManager.contains(VAR)) {
+ throw createParsingFailedException("var cannot be used for method declarations", ctx);
+ }
+
String methodName = this.visitMethodName(ctx.methodName());
ClassNode returnType = this.visitReturnType(ctx.returnType());
Parameter[] parameters = this.visitFormalParameters(ctx.formalParameters());
http://git-wip-us.apache.org/repos/asf/groovy/blob/2bfb300e/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy
index 93f741d..a956e4c 100644
--- a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy
+++ b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/SyntaxErrorTest.groovy
@@ -214,6 +214,7 @@ class SyntaxErrorTest extends GroovyTestCase {
void "test groovy core - var"() {
TestUtils.doRunAndShouldFail('fail/Var_01x.groovy');
+ TestUtils.doRunAndShouldFail('fail/Var_02x.groovy');
}
/**************************************/
http://git-wip-us.apache.org/repos/asf/groovy/blob/2bfb300e/subprojects/parser-antlr4/src/test/resources/fail/Var_02x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/fail/Var_02x.groovy b/subprojects/parser-antlr4/src/test/resources/fail/Var_02x.groovy
new file mode 100644
index 0000000..8855299
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/fail/Var_02x.groovy
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+var someMethod() {}
[2/2] groovy git commit: Minor refactoring: remove duplicated code of
number calculation
Posted by su...@apache.org.
Minor refactoring: remove duplicated code of number calculation
(cherry picked from commit f73d551)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/930508a3
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/930508a3
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/930508a3
Branch: refs/heads/GROOVY_2_6_X
Commit: 930508a366a3118023dea7a85ecf09de5926a480
Parents: 2bfb300
Author: sunlan <su...@apache.org>
Authored: Fri Mar 9 12:54:10 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Fri Mar 9 12:57:27 2018 +0800
----------------------------------------------------------------------
.../groovy/runtime/dgmimpl/NumberNumberDiv.java | 87 ++++++++++++-------
.../runtime/dgmimpl/NumberNumberMetaMethod.java | 78 +++++++++++++++++
.../runtime/dgmimpl/NumberNumberMinus.java | 91 +++++++++++---------
.../runtime/dgmimpl/NumberNumberMultiply.java | 91 +++++++++++---------
.../runtime/dgmimpl/NumberNumberPlus.java | 91 +++++++++++---------
5 files changed, 282 insertions(+), 156 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
index b20d4fe..443d970 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
@@ -46,51 +46,72 @@ public final class NumberNumberDiv extends NumberNumberMetaMethod {
return NumberMath.divide(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumber(site, metaClass, metaMethod, params, receiver, args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
index 1d945fc..7e588cc 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMetaMethod.java
@@ -58,4 +58,82 @@ public abstract class NumberNumberMetaMethod extends CallSiteAwareMetaMethod {
math = NumberMath.getMath(receiver,arg);
}
}
+
+ public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ if (receiver instanceof Integer) {
+ if (args[0] instanceof Integer)
+ return createIntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createIntegerLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createIntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createIntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ if (receiver instanceof Long) {
+ if (args[0] instanceof Integer)
+ return createLongInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createLongLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createLongFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createLongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ if (receiver instanceof Float) {
+ if (args[0] instanceof Integer)
+ return createFloatInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createFloatLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createFloatFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createFloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ if (receiver instanceof Double) {
+ if (args[0] instanceof Integer)
+ return createDoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Long)
+ return createDoubleLong(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Float)
+ return createDoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+
+ if (args[0] instanceof Double)
+ return createDoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ return createNumberNumber(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public abstract CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
+ public abstract CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
index 81fe53d..573634c 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
@@ -43,63 +43,72 @@ public final class NumberNumberMinus extends NumberNumberMetaMethod {
return NumberMath.subtract(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Integer)
- return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
- if (args[0] instanceof Long)
- return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Integer)
- return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumber(site, metaClass, metaMethod, params, receiver, args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
index 2f170e1..a326515 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
@@ -45,63 +45,72 @@ public final class NumberNumberMultiply extends NumberNumberMetaMethod {
return NumberMath.multiply(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Integer)
- return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
- if (args[0] instanceof Long)
- return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Integer)
- return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
+
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumber(site, metaClass, metaMethod, params, receiver, args);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/930508a3/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
index b5b0761..33e2128 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.java
@@ -43,63 +43,71 @@ public final class NumberNumberPlus extends NumberNumberMetaMethod {
return NumberMath.add(left, right);
}
- public CallSite createPojoCallSite(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
- if (receiver instanceof Integer) {
- if (args[0] instanceof Integer)
- return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createIntegerFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createIntegerDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new IntegerDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Long) {
- if (args[0] instanceof Integer)
- return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createLongFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createLongDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new LongDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Float) {
- if (args[0] instanceof Integer)
- return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createFloatFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createFloatDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new FloatDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (receiver instanceof Double) {
- if (args[0] instanceof Integer)
- return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleInteger(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleInteger(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Long)
- return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleLong(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleLong(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Float)
- return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ public CallSite createDoubleFloat(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleFloat(site, metaClass, metaMethod, params, receiver, args);
+ }
- if (args[0] instanceof Double)
- return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
- }
+ public CallSite createDoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
+ return new DoubleDouble(site, metaClass, metaMethod, params, receiver, args);
+ }
+ public CallSite createNumberNumber(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
return new NumberNumberCallSite(site, metaClass, metaMethod, params, (Number) receiver, (Number) args[0]) {
public Object invoke(Object receiver, Object[] args) {
return math.addImpl((Number) receiver, (Number) args[0]);
@@ -111,6 +119,7 @@ public final class NumberNumberPlus extends NumberNumberMetaMethod {
};
}
+
private static class DoubleDouble extends NumberNumberCallSite {
public DoubleDouble(CallSite site, MetaClassImpl metaClass, MetaMethod metaMethod, Class[] params, Object receiver, Object[] args) {
super(site, metaClass, metaMethod, params, (Number) receiver, (Number) args[0]);