Skip to content

Commit e325025

Browse files
author
Dart CI
committed
Version 2.10.0-14.0.dev
Merge commit '552a8b1a0cc0acb8b924230533ff81d4b08987c9' into 'dev'
2 parents 67c75e3 + 552a8b1 commit e325025

File tree

39 files changed

+1823
-2278
lines changed

39 files changed

+1823
-2278
lines changed

pkg/_fe_analyzer_shared/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: _fe_analyzer_shared
2-
version: 6.0.0
2+
version: 7.0.0
33
description: Logic that is shared between the front_end and analyzer packages.
44
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/_fe_analyzer_shared
55

pkg/analysis_server/lib/src/computer/import_elements_computer.dart

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@ import 'dart:async';
77
import 'package:analysis_server/protocol/protocol_generated.dart';
88
import 'package:analyzer/dart/analysis/results.dart';
99
import 'package:analyzer/dart/ast/ast.dart';
10-
import 'package:analyzer/dart/ast/ast_factory.dart';
11-
import 'package:analyzer/dart/ast/token.dart';
1210
import 'package:analyzer/dart/element/element.dart';
1311
import 'package:analyzer/file_system/file_system.dart';
14-
import 'package:analyzer/src/dart/ast/ast_factory.dart';
15-
import 'package:analyzer/src/dart/ast/token.dart';
16-
import 'package:analyzer/src/dart/resolver/scope.dart';
1712
import 'package:analyzer/src/generated/source.dart';
1813
import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
1914
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
@@ -243,24 +238,12 @@ class ImportElementsComputer {
243238
/// name as in the original source.
244239
List<ImportedElements> _filterImportedElements(
245240
List<ImportedElements> originalList) {
246-
var libraryElement = libraryResult.libraryElement;
247-
var libraryScope = libraryElement.scope;
248-
AstFactory factory = AstFactoryImpl();
249241
var filteredList = <ImportedElements>[];
250242
for (var elements in originalList) {
251243
var originalElements = elements.elements;
252244
var filteredElements = originalElements.toList();
253245
for (var name in originalElements) {
254-
Identifier identifier = factory
255-
.simpleIdentifier(StringToken(TokenType.IDENTIFIER, name, -1));
256-
if (elements.prefix.isNotEmpty) {
257-
var prefix = factory.simpleIdentifier(
258-
StringToken(TokenType.IDENTIFIER, elements.prefix, -1));
259-
Token period = SimpleToken(TokenType.PERIOD, -1);
260-
identifier = factory.prefixedIdentifier(prefix, period, identifier);
261-
}
262-
var element = libraryScope.lookupIdentifier(identifier);
263-
if (element != null) {
246+
if (_hasElement(elements.prefix, name)) {
264247
filteredElements.remove(name);
265248
}
266249
}
@@ -340,6 +323,22 @@ class ImportElementsComputer {
340323
return context.split(relativeFile).join('/');
341324
}
342325

326+
bool _hasElement(String prefix, String name) {
327+
var scope = libraryResult.libraryElement.scope;
328+
329+
if (prefix.isNotEmpty) {
330+
var prefixElement = scope.lookup2(prefix).getter;
331+
if (prefixElement is PrefixElement) {
332+
scope = prefixElement.scope;
333+
} else {
334+
return false;
335+
}
336+
}
337+
338+
var lookupResult = scope.lookup2(name);
339+
return lookupResult.getter != null || lookupResult.setter != null;
340+
}
341+
343342
/// Return `true` if the given [import] matches the given specification of
344343
/// [importedElements]. They will match if they import the same library using
345344
/// the same prefix.

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
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/file_system/file_system.dart';
65
import 'package:analyzer/src/test_utilities/package_mixin.dart';
76
import 'package:test_reflective_loader/test_reflective_loader.dart';
87

@@ -16,22 +15,23 @@ void main() {
1615
}
1716

1817
@reflectiveTest
19-
class NamedArgumentRelevanceTest extends CompletionRelevanceTest
20-
with PackageMixin {
21-
@override
22-
Map<String, List<Folder>> packageMap = {};
23-
18+
class NamedArgumentRelevanceTest extends CompletionRelevanceTest {
2419
@override
2520
void setUp() {
2621
super.setUp();
22+
23+
var metaPath = '/.pub-cache/meta';
24+
PackagesContent.addMetaPackageFiles(
25+
getFolder(metaPath),
26+
);
27+
2728
newFile('$projectPath/.packages', content: '''
28-
meta:${toUri('/.pub-cache/meta/lib')}
29+
meta:${toUri('$metaPath/lib')}
2930
project:${toUri('$projectPath/lib')}
3031
''');
3132
}
3233

3334
Future<void> test_requiredAnnotation() async {
34-
addMetaPackage();
3535
await addTestFile('''
3636
import 'package:meta/meta.dart';
3737

pkg/analyzer/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 0.39.17
2+
* Depend on cli_util 0.2.0.
3+
14
## 0.39.16
25
* Added `TypeVisitorWithArgument` and `DartType.acceptWithArgument`.
36
* Bumped the analyzer's SDK requirement to `>=2.7.0`, so that extension methods

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import 'package:analyzer/dart/element/element.dart';
88
import 'package:analyzer/dart/element/scope.dart';
99
import 'package:analyzer/error/listener.dart';
1010
import 'package:analyzer/src/dart/ast/utilities.dart';
11-
import 'package:analyzer/src/dart/resolver/scope.dart';
1211
import 'package:analyzer/src/error/codes.dart';
1312

1413
/// Helper for [MethodInvocation]s into [InstanceCreationExpression] to support
@@ -33,7 +32,7 @@ class AstRewriter {
3332
// This isn't a constructor invocation because it's in a cascade.
3433
return node;
3534
}
36-
Element element = nameScope.lookupIdentifier(methodName);
35+
Element element = nameScope.lookup2(methodName.name).getter;
3736
if (element is ClassElement) {
3837
TypeName typeName = astFactory.typeName(methodName, node.typeArguments);
3938
ConstructorName constructorName =
@@ -57,7 +56,7 @@ class AstRewriter {
5756
// This isn't a constructor invocation because a null aware operator is
5857
// being used.
5958
}
60-
Element element = nameScope.lookupIdentifier(target);
59+
Element element = nameScope.lookup2(target.name).getter;
6160
if (element is ClassElement) {
6261
// Possible case: C.n()
6362
var constructorElement = element.getNamedConstructor(methodName.name);
@@ -82,11 +81,7 @@ class AstRewriter {
8281
}
8382
} else if (element is PrefixElement) {
8483
// Possible cases: p.C() or p.C<>()
85-
Identifier identifier = astFactory.prefixedIdentifier(
86-
astFactory.simpleIdentifier(target.token),
87-
null,
88-
astFactory.simpleIdentifier(methodName.token));
89-
Element prefixedElement = nameScope.lookupIdentifier(identifier);
84+
Element prefixedElement = element.scope.lookup2(methodName.name).getter;
9085
if (prefixedElement is ClassElement) {
9186
TypeName typeName = astFactory.typeName(
9287
astFactory.prefixedIdentifier(target, node.operator, methodName),
@@ -111,10 +106,11 @@ class AstRewriter {
111106
}
112107
} else if (target is PrefixedIdentifier) {
113108
// Possible case: p.C.n()
114-
Element prefixElement = nameScope.lookupIdentifier(target.prefix);
109+
Element prefixElement = nameScope.lookup2(target.prefix.name).getter;
115110
target.prefix.staticElement = prefixElement;
116111
if (prefixElement is PrefixElement) {
117-
Element element = nameScope.lookupIdentifier(target);
112+
Element element =
113+
prefixElement.scope.lookup2(target.identifier.name).getter;
118114
if (element is ClassElement) {
119115
var constructorElement = element.getNamedConstructor(methodName.name);
120116
if (constructorElement != null) {

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

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -449,26 +449,4 @@ extension ScopeExtension on Scope {
449449
}
450450
throw StateError('Can only be used in a LibraryScope.');
451451
}
452-
453-
// TODO(scheglov) check if it might be inlined
454-
Element lookupIdentifier(Identifier identifier) {
455-
if (identifier is SimpleIdentifier) {
456-
var result = lookup2(identifier.name);
457-
return result.getter ?? result.setter;
458-
} else {
459-
var prefixedIdentifier = identifier as PrefixedIdentifier;
460-
461-
var prefixIdentifier = prefixedIdentifier.prefix;
462-
var prefixName = prefixIdentifier.name;
463-
var prefixElement = lookup2(prefixName).getter;
464-
prefixIdentifier.staticElement = prefixElement;
465-
466-
if (prefixElement is PrefixElement) {
467-
var name = prefixedIdentifier.identifier.name;
468-
var result = prefixElement.scope.lookup2(name);
469-
return result.getter ?? result.setter;
470-
}
471-
}
472-
return null;
473-
}
474452
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class ConstructorFieldsVerifier {
8080
_fieldMap.forEach((FieldElement field, _InitState state) {
8181
if (state != _InitState.notInit) return;
8282
if (field.isLate) return;
83-
if (field.isAbstract) return;
83+
if (field.isAbstract || field.isExternal) return;
8484

8585
if (field.isFinal) {
8686
notInitFinalFields.add(field);

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3566,7 +3566,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
35663566

35673567
for (var field in fields.variables) {
35683568
var fieldElement = field.declaredElement as FieldElement;
3569-
if (fieldElement.isAbstract) continue;
3569+
if (fieldElement.isAbstract || fieldElement.isExternal) continue;
35703570
if (field.initializer != null) continue;
35713571

35723572
var type = fieldElement.type;
@@ -3603,6 +3603,11 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
36033603
return;
36043604
}
36053605

3606+
var parent = node.parent;
3607+
if (parent is FieldDeclaration && parent.externalKeyword != null) {
3608+
return;
3609+
}
3610+
36063611
if (node.type == null) {
36073612
return;
36083613
}

pkg/analyzer/lib/src/test_utilities/package_mixin.dart

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

55
import 'package:analyzer/file_system/file_system.dart';
6-
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
7-
8-
/// A mixin for test classes that provides support for creating packages.
9-
mixin PackageMixin implements ResourceProviderMixin {
10-
/// Return the map from package names to lists of folders that is used to
11-
/// resolve 'package:' URIs.
12-
Map<String, List<Folder>> get packageMap;
13-
14-
/// Create a fake 'js' package that can be used by tests.
15-
void addJsPackage() {
16-
var rootFolder = getFolder('/.pub-cache/js');
17-
PackagesContent.addJsPackageFiles(rootFolder);
18-
addPubPackage('js');
19-
}
20-
21-
/// Create a fake 'meta' package that can be used by tests.
22-
void addMetaPackage() {
23-
var rootFolder = getFolder('/.pub-cache/meta');
24-
PackagesContent.addMetaPackageFiles(rootFolder);
25-
addPubPackage('meta');
26-
}
27-
28-
/// Return a newly created directory in which the contents of a pub package
29-
/// with the given [packageName] can be written. The package will be added to
30-
/// the package map so that the package can be referenced from the code being
31-
/// analyzed.
32-
Folder addPubPackage(String packageName) {
33-
// TODO(brianwilkerson) Consider renaming this to `addPackage` and passing
34-
// in a `PackageStyle` (pub, bazel, gn, build, plain) in order to support
35-
// creating other styles of packages.
36-
Folder lib = getFolder('/.pub-cache/$packageName/lib');
37-
packageMap[packageName] = [lib];
38-
return lib;
39-
}
40-
}
416

427
/// Helper for creating mock packages.
438
class PackagesContent {

pkg/analyzer/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
name: analyzer
2-
version: 0.39.16
2+
version: 0.39.17
33
description: This package provides a library that performs static analysis of Dart code.
44
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
55

66
environment:
77
sdk: '>=2.7.0 <3.0.0'
88

99
dependencies:
10-
_fe_analyzer_shared: ^6.0.0
10+
_fe_analyzer_shared: ^7.0.0
1111
args: ^1.0.0
1212
charcode: ^1.1.0
1313
cli_util: '>=0.1.4 <0.3.0'

0 commit comments

Comments
 (0)