Skip to content

Commit 6bf029a

Browse files
author
John Messerly
committed
fixes #25641, error message when type arguments do not match
[email protected] Review URL: https://codereview.chromium.org/1683203002 .
1 parent 5ae622a commit 6bf029a

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

pkg/analyzer/lib/src/generated/element_resolver.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1519,12 +1519,13 @@ class ElementResolver extends SimpleAstVisitor<Object> {
15191519

15201520
NodeList<TypeName> arguments = typeArguments?.arguments;
15211521
if (arguments != null && arguments.length != parameters.length) {
1522-
// Wrong number of type arguments. Ignore them
1523-
arguments = null;
15241522
_resolver.reportErrorForNode(
15251523
StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS,
15261524
node,
15271525
[type, parameters.length, arguments?.length ?? 0]);
1526+
1527+
// Wrong number of type arguments. Ignore them.
1528+
arguments = null;
15281529
}
15291530
if (parameters.isNotEmpty) {
15301531
if (arguments == null) {

pkg/analyzer/test/generated/static_type_warning_code_test.dart

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ library analyzer.test.generated.static_type_warning_code_test;
66

77
import 'package:analyzer/src/generated/engine.dart';
88
import 'package:analyzer/src/generated/error.dart';
9+
import 'package:analyzer/src/generated/java_core.dart' show formatList;
910
import 'package:analyzer/src/generated/source_io.dart';
11+
import 'package:unittest/unittest.dart';
1012

1113
import '../reflective_tests.dart';
1214
import '../utils.dart';
@@ -15,6 +17,7 @@ import 'resolver_test.dart';
1517
main() {
1618
initializeTestEnvironment();
1719
runReflectiveTests(StaticTypeWarningCodeTest);
20+
runReflectiveTests(StrongModeStaticTypeWarningCodeTest);
1821
}
1922

2023
@reflectiveTest
@@ -2153,3 +2156,33 @@ Stream<int> f() sync* {
21532156
verify([source]);
21542157
}
21552158
}
2159+
2160+
@reflectiveTest
2161+
class StrongModeStaticTypeWarningCodeTest extends ResolverTestCase {
2162+
void setUp() {
2163+
super.setUp();
2164+
AnalysisOptionsImpl options = new AnalysisOptionsImpl();
2165+
options.strongMode = true;
2166+
resetWithOptions(options);
2167+
}
2168+
2169+
void test_genericMethodWrongNumberOfTypeArguments() {
2170+
Source source = addSource('''
2171+
f() {}
2172+
main() {
2173+
f/*<int>*/();
2174+
}
2175+
''');
2176+
computeLibrarySourceErrors(source);
2177+
assertErrors(
2178+
source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
2179+
for (AnalysisError error in analysisContext2.computeErrors(source)) {
2180+
if (error.errorCode ==
2181+
StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS) {
2182+
expect(error.message,
2183+
formatList(error.errorCode.message, ['() → dynamic', 0, 1]));
2184+
}
2185+
}
2186+
verify([source]);
2187+
}
2188+
}

0 commit comments

Comments
 (0)