Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: pkg/analyzer/lib/src/generated/element_resolver.dart

Issue 1683203002: fixes #25641, error message when type arguments do not match (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/static_type_warning_code_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.src.generated.element_resolver; 5 library analyzer.src.generated.element_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/visitor.dart'; 10 import 'package:analyzer/dart/ast/visitor.dart';
(...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 */ 1512 */
1513 DartType _instantiateGenericMethod( 1513 DartType _instantiateGenericMethod(
1514 DartType invokeType, TypeArgumentList typeArguments, AstNode node) { 1514 DartType invokeType, TypeArgumentList typeArguments, AstNode node) {
1515 // TODO(jmesserly): support generic "call" methods on InterfaceType. 1515 // TODO(jmesserly): support generic "call" methods on InterfaceType.
1516 if (invokeType is FunctionType) { 1516 if (invokeType is FunctionType) {
1517 FunctionType type = invokeType; 1517 FunctionType type = invokeType;
1518 List<TypeParameterElement> parameters = type.typeFormals; 1518 List<TypeParameterElement> parameters = type.typeFormals;
1519 1519
1520 NodeList<TypeName> arguments = typeArguments?.arguments; 1520 NodeList<TypeName> arguments = typeArguments?.arguments;
1521 if (arguments != null && arguments.length != parameters.length) { 1521 if (arguments != null && arguments.length != parameters.length) {
1522 // Wrong number of type arguments. Ignore them
1523 arguments = null;
1524 _resolver.reportErrorForNode( 1522 _resolver.reportErrorForNode(
1525 StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS, 1523 StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS,
1526 node, 1524 node,
1527 [type, parameters.length, arguments?.length ?? 0]); 1525 [type, parameters.length, arguments?.length ?? 0]);
1526
1527 // Wrong number of type arguments. Ignore them.
1528 arguments = null;
1528 } 1529 }
1529 if (parameters.isNotEmpty) { 1530 if (parameters.isNotEmpty) {
1530 if (arguments == null) { 1531 if (arguments == null) {
1531 invokeType = _resolver.typeSystem.instantiateToBounds(type); 1532 invokeType = _resolver.typeSystem.instantiateToBounds(type);
1532 } else { 1533 } else {
1533 invokeType = type.instantiate(arguments.map((n) => n.type).toList()); 1534 invokeType = type.instantiate(arguments.map((n) => n.type).toList());
1534 } 1535 }
1535 } 1536 }
1536 } 1537 }
1537 return invokeType; 1538 return invokeType;
(...skipping 1055 matching lines...) Expand 10 before | Expand all | Expand 10 after
2593 2594
2594 @override 2595 @override
2595 Element get staticElement => null; 2596 Element get staticElement => null;
2596 2597
2597 @override 2598 @override
2598 accept(AstVisitor visitor) => null; 2599 accept(AstVisitor visitor) => null;
2599 2600
2600 @override 2601 @override
2601 void visitChildren(AstVisitor visitor) {} 2602 void visitChildren(AstVisitor visitor) {}
2602 } 2603 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/static_type_warning_code_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698