Skip to content

Commit 91e46dc

Browse files
author
Dart CI
committed
Version 2.10.0-15.0.dev
Merge commit '274b4d3ecb4b093b42a3386be9ac216187ee8523' into 'dev'
2 parents e325025 + 274b4d3 commit 91e46dc

File tree

21 files changed

+287
-136
lines changed

21 files changed

+287
-136
lines changed

pkg/analysis_server/test/services/completion/dart/relevance/named_argument_relevance_test.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/src/test_utilities/package_mixin.dart';
65
import 'package:test_reflective_loader/test_reflective_loader.dart';
76

7+
import '../../../../src/utilities/mock_packages.dart';
88
import 'completion_relevance.dart';
99

1010
void main() {
@@ -20,13 +20,10 @@ class NamedArgumentRelevanceTest extends CompletionRelevanceTest {
2020
void setUp() {
2121
super.setUp();
2222

23-
var metaPath = '/.pub-cache/meta';
24-
PackagesContent.addMetaPackageFiles(
25-
getFolder(metaPath),
26-
);
23+
var metaLibFolder = MockPackages.instance.addMeta(resourceProvider);
2724

2825
newFile('$projectPath/.packages', content: '''
29-
meta:${toUri('$metaPath/lib')}
26+
meta:${metaLibFolder.toUri()}
3027
project:${toUri('$projectPath/lib')}
3128
''');
3229
}

pkg/analyzer/lib/error/error.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ const List<ErrorCode> errorCodeValues = [
433433
CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER,
434434
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS,
435435
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
436+
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION,
436437
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD,
437438
CompileTimeErrorCode.WRONG_TYPE_PARAMETER_VARIANCE_IN_SUPERINTERFACE,
438439
CompileTimeErrorCode.WRONG_TYPE_PARAMETER_VARIANCE_POSITION,

pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -371,17 +371,21 @@ class ExtensionMemberResolver {
371371
) {
372372
var element = node.staticElement;
373373
var typeParameters = element.typeParameters;
374-
if (typeParameters.isEmpty) {
375-
return const <DartType>[];
376-
}
377-
378374
var typeArguments = node.typeArguments;
375+
379376
if (typeArguments != null) {
380377
var arguments = typeArguments.arguments;
381378
if (arguments.length == typeParameters.length) {
379+
if (typeParameters.isEmpty) {
380+
return const <DartType>[];
381+
}
382382
return arguments.map((a) => a.type).toList();
383383
} else {
384-
// TODO(scheglov) Report an error.
384+
_errorReporter.reportErrorForNode(
385+
CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION,
386+
typeArguments,
387+
[element.name, typeParameters.length, arguments.length],
388+
);
385389
return _listOfDynamic(typeParameters);
386390
}
387391
} else {

pkg/analyzer/lib/src/error/codes.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10174,6 +10174,19 @@ class CompileTimeErrorCode extends AnalyzerErrorCode {
1017410174
"The constructor '{0}.{1}' doesn't have type parameters.",
1017510175
correction: "Try moving type arguments to after the type name.");
1017610176

10177+
/**
10178+
* Parameters:
10179+
* 0: the name of the extension being referenced
10180+
* 1: the number of type parameters that were declared
10181+
* 2: the number of type arguments provided
10182+
*/
10183+
static const CompileTimeErrorCode WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION =
10184+
CompileTimeErrorCode(
10185+
'WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION',
10186+
"The extension '{0}' is declared with {1} type parameters, "
10187+
"but {2} type arguments were given.",
10188+
correction: "Try adjusting the number of type arguments.");
10189+
1017710190
/**
1017810191
* It will be a static type warning if <i>m</i> is not a generic method with
1017910192
* exactly <i>n</i> type parameters.

pkg/analyzer/lib/src/test_utilities/package_mixin.dart renamed to pkg/analyzer/lib/src/test_utilities/mock_packages.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'package:analyzer/file_system/file_system.dart';
66

77
/// Helper for creating mock packages.
8-
class PackagesContent {
8+
class MockPackages {
99
/// Create a fake 'js' package that can be used by tests.
1010
static void addJsPackageFiles(Folder rootFolder) {
1111
var libFolder = rootFolder.getChildAssumingFolder('lib');

pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import 'package:analyzer/src/dart/analysis/driver.dart';
1414
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
1515
import 'package:analyzer/src/dart/analysis/experiments.dart';
1616
import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
17+
import 'package:analyzer/src/test_utilities/mock_packages.dart';
1718
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
18-
import 'package:analyzer/src/test_utilities/package_mixin.dart';
1919
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
2020
import 'package:analyzer/src/workspace/basic.dart';
2121
import 'package:analyzer/src/workspace/bazel.dart';
@@ -293,7 +293,7 @@ class PubPackageResolutionTest extends ContextResolutionTest {
293293
bool meta = false,
294294
}) {
295295
var metaPath = '/packages/meta';
296-
PackagesContent.addMetaPackageFiles(
296+
MockPackages.addMetaPackageFiles(
297297
getFolder(metaPath),
298298
);
299299

pkg/analyzer/test/src/dart/resolution/resolution.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,17 @@ mixin ResolutionTest implements ResourceProviderMixin {
295295
assertErrorsInResolvedUnit(result, expectedErrors);
296296
}
297297

298+
void assertExtensionOverride(
299+
ExtensionOverride node, {
300+
@required Object element,
301+
@required String extendedType,
302+
@required List<String> typeArgumentTypes,
303+
}) {
304+
assertElement(node, element);
305+
assertType(node.extendedType, extendedType);
306+
assertElementTypeStrings(node.typeArgumentTypes, typeArgumentTypes);
307+
}
308+
298309
void assertFunctionExpressionInvocation(
299310
FunctionExpressionInvocation node, {
300311
@required ExecutableElement element,

pkg/analyzer/test/src/dart/resolution/type_inference/extension_methods_test.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,15 +165,18 @@ main() {
165165
}
166166

167167
test_override_downward_hasTypeArguments_wrongNumber() async {
168-
await assertNoErrorsInCode('''
168+
await assertErrorsInCode('''
169169
extension E<T> on Set<T> {
170170
void foo() {}
171171
}
172172
173173
main() {
174174
E<int, bool>({}).foo();
175175
}
176-
''');
176+
''', [
177+
error(CompileTimeErrorCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_EXTENSION, 58,
178+
11),
179+
]);
177180
var literal = findNode.setOrMapLiteral('{}).');
178181
assertType(literal, 'Set<dynamic>');
179182
}

pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_template_member_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/src/error/codes.dart';
6-
import 'package:analyzer/src/test_utilities/package_mixin.dart';
6+
import 'package:analyzer/src/test_utilities/mock_packages.dart';
77
import 'package:test_reflective_loader/test_reflective_loader.dart';
88

99
import '../../generated/test_support.dart';
@@ -23,7 +23,7 @@ class InvalidUseOfVisibleForTemplateMemberTest
2323
super.setUp();
2424

2525
var metaPath = '/packages/meta';
26-
PackagesContent.addMetaPackageFiles(
26+
MockPackages.addMetaPackageFiles(
2727
getFolder(metaPath),
2828
);
2929

pkg/analyzer/test/src/diagnostics/missing_js_lib_annotation_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'package:analyzer/src/dart/error/hint_codes.dart';
66
import 'package:analyzer/src/dart/error/syntactic_errors.dart';
7-
import 'package:analyzer/src/test_utilities/package_mixin.dart';
7+
import 'package:analyzer/src/test_utilities/mock_packages.dart';
88
import 'package:test_reflective_loader/test_reflective_loader.dart';
99

1010
import '../dart/resolution/context_collection_resolution.dart';
@@ -22,7 +22,7 @@ class MissingJSLibAnnotationTest extends PubPackageResolutionTest {
2222
super.setUp();
2323

2424
var path = '/packages/js';
25-
PackagesContent.addJsPackageFiles(
25+
MockPackages.addJsPackageFiles(
2626
getFolder(path),
2727
);
2828
writeTestPackageConfig({'js': path});

0 commit comments

Comments
 (0)