Version 2.17.0-177.0.dev
Merge commit '641255b292d1bb4a66e9925e11508fd38f7eda4f' into 'dev'
diff --git a/pkg/analysis_server/test/services/completion/dart/declaration/library_test.dart b/pkg/analysis_server/test/services/completion/dart/declaration/library_test.dart
new file mode 100644
index 0000000..e5eea3f
--- /dev/null
+++ b/pkg/analysis_server/test/services/completion/dart/declaration/library_test.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer_utilities/check/check.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../../../client/completion_driver_test.dart';
+import '../completion_check.dart';
+
+void main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(LibraryTest1);
+ defineReflectiveTests(LibraryTest2);
+ });
+}
+
+mixin EnumTestCases on AbstractCompletionDriverTest {
+ Future<void> test_dart_noInternalLibraries() async {
+ var response = await getTestCodeSuggestions('''
+void f() {
+ ^
+}
+''');
+
+ check(response).suggestions.excludesAll([
+ (suggestion) => suggestion.libraryUri.isNotNull.startsWith('dart:_'),
+ ]);
+ }
+}
+
+@reflectiveTest
+class LibraryTest1 extends AbstractCompletionDriverTest with EnumTestCases {
+ @override
+ TestingCompletionProtocol get protocol => TestingCompletionProtocol.version1;
+}
+
+@reflectiveTest
+class LibraryTest2 extends AbstractCompletionDriverTest with EnumTestCases {
+ @override
+ TestingCompletionProtocol get protocol => TestingCompletionProtocol.version2;
+}
diff --git a/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart b/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart
index b1de9ef..12cf693 100644
--- a/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart
+++ b/pkg/analysis_server/test/services/completion/dart/declaration/test_all.dart
@@ -5,10 +5,12 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'enum_test.dart' as enum_;
+import 'library_test.dart' as library_;
/// Tests suggestions produced for various kinds of declarations.
void main() {
defineReflectiveSuite(() {
enum_.main();
+ library_.main();
});
}
diff --git a/pkg/analyzer/lib/src/clients/build_resolvers/build_resolvers.dart b/pkg/analyzer/lib/src/clients/build_resolvers/build_resolvers.dart
index be9069c..bd2a210 100644
--- a/pkg/analyzer/lib/src/clients/build_resolvers/build_resolvers.dart
+++ b/pkg/analyzer/lib/src/clients/build_resolvers/build_resolvers.dart
@@ -46,7 +46,7 @@
...uriResolvers,
]);
- var dataStore = SummaryDataStore([]);
+ var dataStore = SummaryDataStore.tmp();
dataStore.addBundle('', sdkBundle);
var logger = PerformanceLog(null);
diff --git a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
index e1ae643..c999006 100644
--- a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
@@ -72,7 +72,12 @@
SummaryDataStore? summaryData;
if (librarySummaryPaths != null) {
- summaryData = SummaryDataStore(librarySummaryPaths);
+ summaryData = SummaryDataStore.tmp();
+ for (var summaryPath in librarySummaryPaths) {
+ var bytes = resourceProvider.getFile(summaryPath).readAsBytesSync();
+ var bundle = PackageBundleReader(bytes);
+ summaryData.addBundle(summaryPath, bundle);
+ }
}
var workspace = contextRoot.workspace;
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index c1f7133..2e1c323 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -977,14 +977,18 @@
/// expensive to work with, if we do this thousand times.
class FileUriProperties {
static const int _isDart = 1 << 0;
- static const int _isSrc = 1 << 1;
+ static const int _isDartInternal = 1 << 1;
+ static const int _isSrc = 1 << 2;
final int _flags;
final String? packageName;
factory FileUriProperties(Uri uri) {
if (uri.isScheme('dart')) {
- return const FileUriProperties._dart();
+ var dartName = uri.pathSegments.firstOrNull;
+ return FileUriProperties._dart(
+ isInternal: dartName != null && dartName.startsWith('_'),
+ );
} else if (uri.isScheme('package')) {
var segments = uri.pathSegments;
if (segments.length >= 2) {
@@ -997,8 +1001,9 @@
return const FileUriProperties._unknown();
}
- const FileUriProperties._dart()
- : _flags = _isDart,
+ const FileUriProperties._dart({
+ required bool isInternal,
+ }) : _flags = _isDart | (isInternal ? _isDartInternal : 0),
packageName = null;
FileUriProperties._package({
@@ -1013,5 +1018,7 @@
bool get isDart => (_flags & _isDart) != 0;
+ bool get isDartInternal => (_flags & _isDartInternal) != 0;
+
bool get isSrc => (_flags & _isSrc) != 0;
}
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart b/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
index 828d7ad..5396bc0 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
@@ -23,7 +23,13 @@
class _AnyFilter implements FileStateFilter {
@override
- bool shouldInclude(FileState file) => true;
+ bool shouldInclude(FileState file) {
+ var uri = file.uriProperties;
+ if (uri.isDart) {
+ return !uri.isDartInternal;
+ }
+ return true;
+ }
}
class _PubFilter implements FileStateFilter {
@@ -66,7 +72,7 @@
bool shouldInclude(FileState file) {
var uri = file.uriProperties;
if (uri.isDart) {
- return true;
+ return !uri.isDartInternal;
}
// Normally only package URIs are available.
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index c9ee80d..6ec80ea 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -39,7 +39,7 @@
final LibraryContextTestView testView;
final PerformanceLog logger;
final ByteStore byteStore;
- final SummaryDataStore store = SummaryDataStore([]);
+ final SummaryDataStore store = SummaryDataStore.tmp();
late final AnalysisContextImpl analysisContext;
late LinkedElementFactory elementFactory;
diff --git a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
index 5199087..15862ca 100644
--- a/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart
@@ -251,6 +251,7 @@
var parameterBound = parameter.bound;
if (parameterBound != null) {
parameterBound = substitution.substituteType(parameterBound);
+ parameterBound = _typeSystem.toLegacyTypeIfOptOut(parameterBound);
if (!_typeSystem.isSubtypeOf(argument, parameterBound)) {
_errorReporter.reportErrorForNode(
CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS,
diff --git a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
index a332f28..f9c96037 100644
--- a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
@@ -123,11 +123,14 @@
/// Create a [SummaryDataStore] and populate it with the summaries in
/// [summaryPaths].
+ @Deprecated('Use tmp() and addBundle() instead')
SummaryDataStore(Iterable<String> summaryPaths,
{ResourceProvider? resourceProvider}) {
summaryPaths.forEach((String path) => _fillMaps(path, resourceProvider));
}
+ SummaryDataStore.tmp();
+
/// Add the given [bundle] loaded from the file with the given [path].
void addBundle(String? path, PackageBundleReader bundle) {
bundles.add(bundle);
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index bb34ac0..3713497 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -17,7 +17,7 @@
late final InSummaryUriResolver _uriResolver;
SummaryBasedDartSdk.forBundle(this._bundle) {
- var dataStore = SummaryDataStore([]);
+ var dataStore = SummaryDataStore.tmp();
// TODO(scheglov) We need a solution to avoid these paths at all.
dataStore.addBundle('', bundle);
diff --git a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
index 9671ee1..2944a2b 100644
--- a/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_argument_not_matching_bounds_test.dart
@@ -80,7 +80,6 @@
''');
}
- @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/48509')
test_extensionOverride_optIn_fromOptOut_Null() async {
newFile('$testPackageLibPath/a.dart', content: r'''
extension E<X extends int> on List<X> {
diff --git a/tools/VERSION b/tools/VERSION
index c3193cb..669b922 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 17
PATCH 0
-PRERELEASE 176
+PRERELEASE 177
PRERELEASE_PATCH 0
\ No newline at end of file