Remove unnecessary check of `FunctionalInterface`
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/dbcac60f Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/dbcac60f Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/dbcac60f Branch: refs/heads/native-lambda Commit: dbcac60f64f921cd5e8ee02c4af126c9a6d8b883 Parents: 552e010 Author: sunlan <sun...@apache.org> Authored: Wed Jan 31 16:38:43 2018 +0800 Committer: sunlan <sun...@apache.org> Committed: Wed Jan 31 16:38:43 2018 +0800 ---------------------------------------------------------------------- src/main/java/org/codehaus/groovy/ast/ClassHelper.java | 4 ---- .../java/org/codehaus/groovy/classgen/asm/InvocationWriter.java | 2 +- .../codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java | 2 +- .../codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java | 2 +- 4 files changed, 3 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/dbcac60f/src/main/java/org/codehaus/groovy/ast/ClassHelper.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java index 5f5fc3f..93658d7 100644 --- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java +++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java @@ -395,10 +395,6 @@ public class ClassHelper { return findSAM(type) != null; } - public static boolean isFunctionInterface(ClassNode type) { - return type.isInterface() && !type.getAnnotations(FunctionalInterface_Type).isEmpty() && isSAMType(type); - } - /** * Returns the single abstract method of a class node, if it is a SAM type, or null otherwise. * http://git-wip-us.apache.org/repos/asf/groovy/blob/dbcac60f/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java index bfb9f7d..bc56b5a 100644 --- a/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java +++ b/src/main/java/org/codehaus/groovy/classgen/asm/InvocationWriter.java @@ -494,7 +494,7 @@ public class InvocationWriter { return false; } - if (ClassHelper.isFunctionInterface(objectExpression.getType())) { + if (ClassHelper.isSAMType(objectExpression.getType())) { return true; } http://git-wip-us.apache.org/repos/asf/groovy/blob/dbcac60f/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java index 35d2269..a1a797c 100644 --- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java +++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java @@ -96,7 +96,7 @@ public class StaticTypesLambdaWriter extends LambdaWriter { public void writeLambda(LambdaExpression expression) { ClassNode lambdaType = getLambdaType(expression); - if (!ClassHelper.isFunctionInterface(lambdaType.redirect())) { + if (!ClassHelper.isSAMType(lambdaType.redirect())) { // if the parameter type is not real FunctionInterface, generate the default bytecode, which is actually a closure super.writeLambda(expression); return; http://git-wip-us.apache.org/repos/asf/groovy/blob/dbcac60f/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java ---------------------------------------------------------------------- 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 2e4dc2e..dcb3ab6 100644 --- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java +++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java @@ -4119,7 +4119,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport { collectAllInterfaceMethodsByName(receiver, name, methods); methods.addAll(OBJECT_TYPE.getMethods(name)); - if (ClassHelper.isFunctionInterface(receiver)) { + if (ClassHelper.isSAMType(receiver)) { MethodNode sam = ClassHelper.findSAM(receiver); MethodNode callMethodNode = new MethodNode("call", sam.getModifiers(), sam.getReturnType(), sam.getParameters(), sam.getExceptions(), sam.getCode()); callMethodNode.setDeclaringClass(sam.getDeclaringClass());