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

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

commit df5c8c6f8b915500a5a2ea3897eb348ebdb38d58
Author: Daniel Sun <sun...@apache.org>
AuthorDate: Wed Mar 27 00:36:33 2019 +0800

    Improve the robustness
---
 .../groovy/classgen/asm/sc/StaticTypesLambdaWriter.java       | 11 ++++++++---
 .../asm/sc/StaticTypesMethodReferenceExpressionWriter.java    | 11 ++++++++---
 2 files changed, 16 insertions(+), 6 deletions(-)

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 1a3c1c8..af3e631 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
@@ -86,10 +86,15 @@ public class StaticTypesLambdaWriter extends LambdaWriter 
implements AbstractFun
     @Override
     public void writeLambda(LambdaExpression expression) {
         ClassNode functionalInterfaceType = 
getFunctionalInterfaceType(expression);
-        ClassNode redirect = functionalInterfaceType.redirect();
+        if (null == functionalInterfaceType) {
+            // if the parameter type failed to be inferred, generate the 
default bytecode, which is actually a closure
+            super.writeLambda(expression);
+            return;
+        }
 
-        if (null == functionalInterfaceType || 
!ClassHelper.isFunctionalInterface(redirect)) {
-            // if the parameter type is not real FunctionInterface or failed 
to be inferred, generate the default bytecode, which is actually a closure
+        ClassNode redirect = functionalInterfaceType.redirect();
+        if (!ClassHelper.isFunctionalInterface(redirect)) {
+            // if the parameter type is not real FunctionalInterface, generate 
the default bytecode, which is actually a closure
             super.writeLambda(expression);
             return;
         }
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
index f41a37b..7e1275d 100644
--- 
a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
+++ 
b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
@@ -64,10 +64,15 @@ public class StaticTypesMethodReferenceExpressionWriter 
extends MethodReferenceE
     @Override
     public void writeMethodReferenceExpression(MethodReferenceExpression 
methodReferenceExpression) {
         ClassNode functionalInterfaceType = 
getFunctionalInterfaceType(methodReferenceExpression);
-        ClassNode redirect = functionalInterfaceType.redirect();
+        if (null == functionalInterfaceType) {
+            // if the parameter type failed to be inferred, generate the 
default bytecode, which is actually a method closure
+            super.writeMethodReferenceExpression(methodReferenceExpression);
+            return;
+        }
 
-        if (null == functionalInterfaceType || 
!ClassHelper.isFunctionalInterface(redirect)) {
-            // if the parameter type is not real FunctionInterface or failed 
to be inferred, generate the default bytecode, which is actually a method 
closure
+        ClassNode redirect = functionalInterfaceType.redirect();
+        if (!ClassHelper.isFunctionalInterface(redirect)) {
+            // if the parameter type is not real FunctionalInterface, generate 
the default bytecode, which is actually a method closure
             super.writeMethodReferenceExpression(methodReferenceExpression);
             return;
         }

Reply via email to