|
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