|
238 | 238 | import static org.codehaus.groovy.ast.tools.WideningCategories.isLongCategory; |
239 | 239 | import static org.codehaus.groovy.ast.tools.WideningCategories.isNumberCategory; |
240 | 240 | import static org.codehaus.groovy.ast.tools.WideningCategories.lowestUpperBound; |
241 | | -import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean; |
242 | | -import static org.codehaus.groovy.runtime.DefaultGroovyMethods.init; |
| 241 | +import static org.codehaus.groovy.runtime.ArrayGroovyMethods.asBoolean; |
| 242 | +import static org.codehaus.groovy.runtime.ArrayGroovyMethods.init; |
243 | 243 | import static org.codehaus.groovy.runtime.DefaultGroovyMethods.last; |
244 | 244 | import static org.codehaus.groovy.syntax.Types.ASSIGN; |
245 | 245 | import static org.codehaus.groovy.syntax.Types.COMPARE_EQUAL; |
@@ -2947,6 +2947,7 @@ protected void visitMethodCallArguments(final ClassNode receiver, final Argument |
2947 | 2947 | LambdaExpression lambda = constructLambdaExpressionForMethodReference( |
2948 | 2948 | targetType, (MethodReferenceExpression) expression); |
2949 | 2949 | inferClosureParameterTypes(receiver, arguments, lambda, target, selectedMethod); |
| 2950 | + expression.putNodeMetaData(PARAMETER_TYPE, lambda.getNodeMetaData(PARAMETER_TYPE)); |
2950 | 2951 | expression.putNodeMetaData(CLOSURE_ARGUMENTS, lambda.getNodeMetaData(CLOSURE_ARGUMENTS)); |
2951 | 2952 | } else { |
2952 | 2953 | addError("The argument is a method reference, but the parameter type is not a functional interface", expression); |
@@ -3099,8 +3100,7 @@ protected void inferClosureParameterTypes(final ClassNode receiver, final Expres |
3099 | 3100 | Expression emc = typeCheckingContext.getEnclosingMethodCall(); |
3100 | 3101 | if (emc instanceof MethodCallExpression) { |
3101 | 3102 | MethodCallExpression mce = (MethodCallExpression) emc; |
3102 | | - if (mce.getArguments() == arguments // GROOVY-10807 :: |
3103 | | - || expression.getCode() == GENERATED_EMPTY_STATEMENT){ |
| 3103 | + if (mce.getArguments() == arguments) { |
3104 | 3104 | GenericsType[] typeArguments = mce.getGenericsTypes(); |
3105 | 3105 | if (typeArguments != null) { |
3106 | 3106 | int n = typeParameters.length; |
@@ -4416,7 +4416,7 @@ protected void storeType(final Expression exp, ClassNode cn) { |
4416 | 4416 | assignedTypes.add(cn); |
4417 | 4417 | } |
4418 | 4418 | List<ClassNode> temporaryTypesForExpression = getTemporaryTypesForExpression(var); |
4419 | | - if (asBoolean(temporaryTypesForExpression)) { |
| 4419 | + if (temporaryTypesForExpression != null) { |
4420 | 4420 | // a type inference has been made on a variable whose type was defined in an instanceof block |
4421 | 4421 | // erase available information with the new type |
4422 | 4422 | temporaryTypesForExpression.clear(); |
|
0 commit comments