Index: pkg/analyzer/lib/src/generated/resolver.dart |
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart |
index 15c41d6218239ff744561fdab9bb3775ba2e2c5d..6ecb610d825e1b4468018398649e6b2fee0b0189 100644 |
--- a/pkg/analyzer/lib/src/generated/resolver.dart |
+++ b/pkg/analyzer/lib/src/generated/resolver.dart |
@@ -6723,6 +6723,16 @@ class ResolverVisitor extends ScopedVisitor { |
if (contextType is InterfaceType && |
contextType.typeArguments != null && |
contextType.typeArguments.length > 0) { |
+ // TODO(jmesserly): for generic methods we use the |
+ // StrongTypeSystemImpl.inferGenericFunctionCall, which appears to |
+ // be a tad more powerful than matchTypes. |
+ // |
+ // For example it can infer this case: |
+ // |
+ // class E<S, T> extends A<C<S>, T> { ... } |
+ // A<C<int>, String> a0 = /*infer<int, String>*/new E("hello"); |
+ // |
+ // See _inferArgumentTypesFromContext in this file for use of it. |
List<DartType> targs = |
inferenceContext.matchTypes(classTypeName.type, contextType); |
if (targs != null && targs.any((t) => !t.isDynamic)) { |