Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 81bc629

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Use packageDefaultFeatureSet when the language version is the same as the current version.
Change-Id: I14862603d4204b879cd2b0f950d75a98dd347419 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138262 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 1f92f1d commit 81bc629

File tree

5 files changed

+81
-108
lines changed

5 files changed

+81
-108
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1473,7 +1473,6 @@ class AnalysisDriver implements AnalysisDriverGeneric {
14731473
var featureSetProvider = FeatureSetProvider.build(
14741474
resourceProvider: resourceProvider,
14751475
packages: _packages,
1476-
sourceFactory: _sourceFactory,
14771476
packageDefaultFeatureSet: _analysisOptions.contextFeatures,
14781477
nonPackageDefaultFeatureSet: _analysisOptions.nonPackageFeatureSet,
14791478
);

pkg/analyzer/lib/src/dart/analysis/feature_set_provider.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'package:analyzer/dart/analysis/features.dart';
66
import 'package:analyzer/file_system/file_system.dart';
77
import 'package:analyzer/src/context/packages.dart';
8-
import 'package:analyzer/src/generated/source.dart';
8+
import 'package:analyzer/src/dart/analysis/experiments.dart';
99
import 'package:meta/meta.dart';
1010

1111
class FeatureSetProvider {
@@ -37,7 +37,8 @@ class FeatureSetProvider {
3737
for (var package in _packages.packages) {
3838
if (package.rootFolder.contains(path)) {
3939
var languageVersion = package.languageVersion;
40-
if (languageVersion == null) {
40+
if (languageVersion == null ||
41+
languageVersion == ExperimentStatus.currentVersion) {
4142
return _packageDefaultFeatureSet;
4243
} else {
4344
return _packageDefaultFeatureSet.restrictToVersion(languageVersion);
@@ -51,7 +52,6 @@ class FeatureSetProvider {
5152
static FeatureSetProvider build({
5253
@required ResourceProvider resourceProvider,
5354
@required Packages packages,
54-
@required SourceFactory sourceFactory,
5555
@required FeatureSet packageDefaultFeatureSet,
5656
@required FeatureSet nonPackageDefaultFeatureSet,
5757
}) {

pkg/analyzer/lib/src/dart/micro/resolve_file.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ class FileResolver {
101101
var featureSetProvider = FeatureSetProvider.build(
102102
resourceProvider: resourceProvider,
103103
packages: Packages.empty,
104-
sourceFactory: analysisContext.sourceFactory,
105104
packageDefaultFeatureSet: analysisContext.analysisOptions.contextFeatures,
106105
nonPackageDefaultFeatureSet:
107106
(options as AnalysisOptionsImpl).nonPackageFeatureSet,

pkg/analyzer/test/src/dart/analysis/feature_set_provider_test.dart

Lines changed: 78 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -35,124 +35,114 @@ class FeatureSetProviderTest with ResourceProviderMixin {
3535
_createSourceFactory();
3636
}
3737

38-
test_jsonConfig_defaultNonNullable() {
39-
var jsonConfigPath = '/test/.dart_tool/package_config.json';
40-
var jsonConfigFile = newFile(jsonConfigPath, content: '''
41-
{
42-
"configVersion": 2,
43-
"packages": [
44-
{
45-
"name": "test",
46-
"rootUri": "../",
47-
"packageUri": "lib/"
48-
},
49-
{
50-
"name": "aaa",
51-
"rootUri": "${toUriStr('/packages/aaa')}",
52-
"packageUri": "lib/",
53-
"languageVersion": "2.7"
54-
},
55-
{
56-
"name": "bbb",
57-
"rootUri": "${toUriStr('/packages/bbb')}",
58-
"packageUri": "lib/"
59-
}
60-
]
61-
}
62-
''');
63-
64-
var packages = parsePackageConfigJsonFile(
65-
resourceProvider,
66-
jsonConfigFile,
38+
test_packages() {
39+
var packages = Packages(
40+
{
41+
'aaa': Package(
42+
name: 'aaa',
43+
rootFolder: newFolder('/packages/aaa'),
44+
libFolder: newFolder('/packages/aaa/lib'),
45+
languageVersion: null,
46+
),
47+
'bbb': Package(
48+
name: 'bbb',
49+
rootFolder: newFolder('/packages/bbb'),
50+
libFolder: newFolder('/packages/bbb/lib'),
51+
languageVersion: Version(2, 7, 0),
52+
),
53+
'ccc': Package(
54+
name: 'ccc',
55+
rootFolder: newFolder('/packages/ccc'),
56+
libFolder: newFolder('/packages/ccc/lib'),
57+
languageVersion: Version(2, 8, 0),
58+
),
59+
},
6760
);
61+
6862
_createSourceFactory(
6963
packageUriResolver: _createPackageMapUriResolver(packages),
7064
);
7165

72-
_simulateNonNullableSdk();
73-
_buildProvider(['non-nullable']);
74-
75-
_assertNonNullableForPath('/test/a.dart', true);
76-
_assertNonNullableForPath('/test/lib/b.dart', true);
77-
_assertNonNullableForPath('/test/test/c.dart', true);
66+
provider = FeatureSetProvider.build(
67+
resourceProvider: resourceProvider,
68+
packages: packages,
69+
packageDefaultFeatureSet: FeatureSet.fromEnableFlags([]),
70+
nonPackageDefaultFeatureSet: FeatureSet.fromEnableFlags([]),
71+
);
7872

7973
_assertNonNullableForPath('/packages/aaa/a.dart', false);
8074
_assertNonNullableForPath('/packages/aaa/lib/b.dart', false);
8175
_assertNonNullableForPath('/packages/aaa/test/c.dart', false);
8276

83-
_assertNonNullableForPath('/packages/bbb/a.dart', true);
84-
_assertNonNullableForPath('/packages/bbb/lib/b.dart', true);
85-
_assertNonNullableForPath('/packages/bbb/test/c.dart', true);
77+
_assertNonNullableForPath('/packages/bbb/a.dart', false);
78+
_assertNonNullableForPath('/packages/bbb/lib/b.dart', false);
79+
_assertNonNullableForPath('/packages/bbb/test/c.dart', false);
8680

87-
_assertNonNullableForPath('/other/file.dart', true);
81+
_assertNonNullableForPath('/packages/ccc/a.dart', false);
82+
_assertNonNullableForPath('/packages/ccc/lib/b.dart', false);
83+
_assertNonNullableForPath('/packages/ccc/test/c.dart', false);
84+
85+
_assertNonNullableForPath('/other/file.dart', false);
8886
}
8987

90-
test_nonPackageDefaultFeatureSet() {
91-
newFile('/test/.packages', content: '''
92-
test:lib/
93-
''');
94-
_simulateNonNullableSdk();
95-
_buildProvider(['non-nullable']);
88+
test_packages_enabledExperiment_nonNullable() {
89+
var packages = Packages(
90+
{
91+
'aaa': Package(
92+
name: 'aaa',
93+
rootFolder: newFolder('/packages/aaa'),
94+
libFolder: newFolder('/packages/aaa/lib'),
95+
languageVersion: null,
96+
),
97+
'bbb': Package(
98+
name: 'bbb',
99+
rootFolder: newFolder('/packages/bbb'),
100+
libFolder: newFolder('/packages/bbb/lib'),
101+
languageVersion: Version(2, 7, 0),
102+
),
103+
'ccc': Package(
104+
name: 'ccc',
105+
rootFolder: newFolder('/packages/ccc'),
106+
libFolder: newFolder('/packages/ccc/lib'),
107+
languageVersion: Version(2, 8, 0),
108+
),
109+
},
110+
);
111+
112+
_createSourceFactory(
113+
packageUriResolver: _createPackageMapUriResolver(packages),
114+
);
96115

97116
provider = FeatureSetProvider.build(
98117
resourceProvider: resourceProvider,
99-
packages: Packages(
100-
{
101-
'aaa': Package(
102-
name: 'aaa',
103-
rootFolder: newFolder('/packages/aaa'),
104-
libFolder: newFolder('/packages/aaa/lib'),
105-
languageVersion: null,
106-
),
107-
'bbb': Package(
108-
name: 'bbb',
109-
rootFolder: newFolder('/packages/bbb'),
110-
libFolder: newFolder('/packages/bbb/lib'),
111-
languageVersion: Version(2, 7, 0),
112-
),
113-
},
114-
),
115-
sourceFactory: sourceFactory,
118+
packages: packages,
116119
packageDefaultFeatureSet: FeatureSet.fromEnableFlags(['non-nullable']),
117120
nonPackageDefaultFeatureSet: FeatureSet.fromEnableFlags([]),
118121
);
119122

120-
_assertNonNullableForPath('/packages/aaa/lib/a.dart', true);
121-
_assertNonNullableForPath('/packages/aaa/test/b.dart', true);
123+
_assertNonNullableForPath('/packages/aaa/a.dart', true);
124+
_assertNonNullableForPath('/packages/aaa/lib/b.dart', true);
125+
_assertNonNullableForPath('/packages/aaa/test/c.dart', true);
122126

123-
_assertNonNullableForPath('/packages/bbb/lib/a.dart', false);
124-
_assertNonNullableForPath('/packages/bbb/test/b.dart', false);
125-
126-
_assertNonNullableForPath('/foo/bar.dart', false);
127-
}
127+
_assertNonNullableForPath('/packages/bbb/a.dart', false);
128+
_assertNonNullableForPath('/packages/bbb/lib/b.dart', false);
129+
_assertNonNullableForPath('/packages/bbb/test/c.dart', false);
128130

129-
test_sdk_defaultLegacy_sdkLegacy() {
130-
newFile('/test/.packages', content: '''
131-
test:lib/
132-
''');
133-
_simulateLegacySdk();
134-
_buildProvider([]);
131+
_assertNonNullableForPath('/packages/ccc/a.dart', true);
132+
_assertNonNullableForPath('/packages/ccc/lib/b.dart', true);
133+
_assertNonNullableForPath('/packages/ccc/test/c.dart', true);
135134

136-
var featureSet = _getSdkFeatureSet();
137-
expect(featureSet.isEnabled(Feature.non_nullable), isTrue);
135+
_assertNonNullableForPath('/other/file.dart', false);
138136
}
139137

140-
test_sdk_defaultNonNullable_sdkLegacy() {
141-
newFile('/test/.packages', content: '''
142-
test:lib/
143-
''');
144-
_simulateLegacySdk();
145-
_buildProvider(['non-nullable']);
138+
test_sdk() {
139+
_buildProvider([]);
146140

147141
var featureSet = _getSdkFeatureSet();
148142
expect(featureSet.isEnabled(Feature.non_nullable), isTrue);
149143
}
150144

151-
test_sdk_defaultNonNullable_sdkNonNullable() {
152-
newFile('/test/.packages', content: '''
153-
test:lib/
154-
''');
155-
_simulateNonNullableSdk();
145+
test_sdk_enabledExperiment_nonNullable() {
156146
_buildProvider(['non-nullable']);
157147

158148
var featureSet = _getSdkFeatureSet();
@@ -169,7 +159,6 @@ test:lib/
169159
provider = FeatureSetProvider.build(
170160
resourceProvider: resourceProvider,
171161
packages: findPackagesFrom(resourceProvider, getFolder('/test')),
172-
sourceFactory: sourceFactory,
173162
packageDefaultFeatureSet: featureSet,
174163
nonPackageDefaultFeatureSet: featureSet,
175164
);
@@ -208,17 +197,4 @@ test:lib/
208197
var mathPath = sourceFactory.forUri2(mathUri).fullName;
209198
return provider.getFeatureSet(mathPath, mathUri);
210199
}
211-
212-
void _replaceDartCoreObject(String content) {
213-
var path = sourceFactory.forUri('dart:core').fullName;
214-
newFile(path, content: content);
215-
}
216-
217-
void _simulateLegacySdk() {
218-
_replaceDartCoreObject('// no marker');
219-
}
220-
221-
void _simulateNonNullableSdk() {
222-
_replaceDartCoreObject('// bool operator ==(Object other)');
223-
}
224200
}

pkg/analyzer/test/src/dart/analysis/file_state_test.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ class FileSystemStateTest with ResourceProviderMixin {
6363
var featureSetProvider = FeatureSetProvider.build(
6464
resourceProvider: resourceProvider,
6565
packages: Packages.empty,
66-
sourceFactory: sourceFactory,
6766
packageDefaultFeatureSet: FeatureSet.fromEnableFlags([]),
6867
nonPackageDefaultFeatureSet: FeatureSet.fromEnableFlags([]),
6968
);

0 commit comments

Comments
 (0)