Skip to content

Commit 27b52a3

Browse files
DanTupCommit Queue
authored andcommitted
Add languageVersion to CompilationUnit and make non-null
Change-Id: Ice6f866929f1f028d9b4e64685c2e815a08279f6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/392000 Reviewed-by: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]> Reviewed-by: Bob Nystrom <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]>
1 parent 55dcb0b commit 27b52a3

File tree

18 files changed

+162
-34
lines changed

18 files changed

+162
-34
lines changed

pkg/analysis_server/lib/src/g3/utilities.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:analysis_server/src/services/correction/organize_imports.dart';
66
import 'package:analyzer/dart/analysis/features.dart';
77
import 'package:analyzer/dart/analysis/results.dart';
88
import 'package:analyzer/dart/ast/ast.dart';
9+
import 'package:analyzer/dart/element/element.dart';
910
import 'package:analyzer/error/error.dart';
1011
import 'package:analyzer/error/listener.dart';
1112
import 'package:analyzer/source/line_info.dart';
@@ -61,12 +62,17 @@ ParseStringResult sortDirectives(String contents, {String? fileName}) {
6162
);
6263
var token = scanner.tokenize(reportScannerErrors: false);
6364
var lineInfo = LineInfo(scanner.lineStarts);
65+
var languageVersion = LibraryLanguageVersion(
66+
package: ExperimentStatus.currentVersion,
67+
override: scanner.overrideVersion,
68+
);
6469

6570
var parser = p.Parser(
6671
source,
6772
errorListener,
6873
featureSet: scanner.featureSet,
6974
lineInfo: lineInfo,
75+
languageVersion: languageVersion,
7076
);
7177

7278
var unit = parser.parseCompilationUnit(token);

pkg/analyzer/lib/dart/analysis/utilities.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import 'package:analyzer/dart/analysis/analysis_context.dart';
99
import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
1010
import 'package:analyzer/dart/analysis/features.dart';
1111
import 'package:analyzer/dart/analysis/results.dart';
12+
import 'package:analyzer/dart/element/element.dart';
1213
import 'package:analyzer/error/listener.dart';
1314
import 'package:analyzer/file_system/file_system.dart';
1415
import 'package:analyzer/file_system/physical_file_system.dart';
1516
import 'package:analyzer/source/line_info.dart';
17+
import 'package:analyzer/src/dart/analysis/experiments.dart';
1618
import 'package:analyzer/src/dart/analysis/results.dart';
1719
import 'package:analyzer/src/dart/scanner/reader.dart';
1820
import 'package:analyzer/src/dart/scanner/scanner.dart';
@@ -85,11 +87,15 @@ ParseStringResult parseString(
8587
featureSet: featureSet,
8688
);
8789
var token = scanner.tokenize();
90+
var languageVersion = LibraryLanguageVersion(
91+
package: ExperimentStatus.currentVersion,
92+
override: scanner.overrideVersion);
8893
var lineInfo = LineInfo(scanner.lineStarts);
8994
var parser = Parser(
9095
source,
9196
errorCollector,
9297
featureSet: scanner.featureSet,
98+
languageVersion: languageVersion,
9399
lineInfo: lineInfo,
94100
);
95101
var unit = parser.parseCompilationUnit(token);

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -674,19 +674,20 @@ class FileState {
674674
);
675675
Token token = scanner.tokenize(reportScannerErrors: false);
676676
LineInfo lineInfo = LineInfo(scanner.lineStarts);
677+
var languageVersion = LibraryLanguageVersion(
678+
package: packageLanguageVersion,
679+
override: scanner.overrideVersion,
680+
);
677681

678682
Parser parser = Parser(
679683
source,
680684
errorListener,
681685
featureSet: scanner.featureSet,
682686
lineInfo: lineInfo,
687+
languageVersion: languageVersion,
683688
);
684689

685690
var unit = parser.parseCompilationUnit(token);
686-
unit.languageVersion = LibraryLanguageVersion(
687-
package: packageLanguageVersion,
688-
override: scanner.overrideVersion,
689-
);
690691

691692
// Ensure the string canonicalization cache size is reasonable.
692693
pruneStringCanonicalizationCache();

pkg/analyzer/lib/src/dart/ast/ast.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3394,6 +3394,9 @@ abstract final class CompilationUnit implements AstNode {
33943394
/// `@dart` directive in a comment at the top of the file.
33953395
FeatureSet get featureSet;
33963396

3397+
/// The language version information.
3398+
LibraryLanguageVersion get languageVersion;
3399+
33973400
/// The language version override specified for this compilation unit using a
33983401
/// token like '// @dart = 2.7', or `null` if no override is specified.
33993402
LanguageVersionToken? get languageVersionToken;
@@ -3432,8 +3435,8 @@ final class CompilationUnitImpl extends AstNodeImpl
34323435
@override
34333436
final LineInfo lineInfo;
34343437

3435-
/// The language version information.
3436-
LibraryLanguageVersion? languageVersion;
3438+
@override
3439+
final LibraryLanguageVersion languageVersion;
34373440

34383441
@override
34393442
final FeatureSet featureSet;
@@ -3465,6 +3468,7 @@ final class CompilationUnitImpl extends AstNodeImpl
34653468
required this.featureSet,
34663469
required this.lineInfo,
34673470
required this.invalidNodes,
3471+
required this.languageVersion,
34683472
}) : _scriptTag = scriptTag {
34693473
_becomeParentOf(_scriptTag);
34703474
_directives._initialize(this, directives);

pkg/analyzer/lib/src/fasta/ast_builder.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import 'package:_fe_analyzer_shared/src/scanner/token_constants.dart';
5858
import 'package:_fe_analyzer_shared/src/util/null_value.dart';
5959
import 'package:analyzer/dart/analysis/features.dart';
6060
import 'package:analyzer/dart/ast/token.dart' show Token, TokenType;
61+
import 'package:analyzer/dart/element/element.dart';
6162
import 'package:analyzer/error/error.dart';
6263
import 'package:analyzer/error/listener.dart';
6364
import 'package:analyzer/source/line_info.dart';
@@ -164,12 +165,14 @@ class AstBuilder extends StackListener {
164165

165166
final FeatureSet _featureSet;
166167

168+
final LibraryLanguageVersion _languageVersion;
169+
167170
final LineInfo _lineInfo;
168171

169172
Token? _enclosingDeclarationAugmentToken;
170173

171174
AstBuilder(ErrorReporter? errorReporter, this.fileUri, this.isFullAst,
172-
this._featureSet, this._lineInfo,
175+
this._featureSet, this._languageVersion, this._lineInfo,
173176
[Uri? uri])
174177
: errorReporter = FastaErrorReporter(errorReporter),
175178
enableAugmentations = _featureSet.isEnabled(Feature.augmentations),
@@ -1412,6 +1415,7 @@ class AstBuilder extends StackListener {
14121415
endToken: endToken,
14131416
featureSet: _featureSet,
14141417
lineInfo: _lineInfo,
1418+
languageVersion: _languageVersion,
14151419
invalidNodes: invalidNodes,
14161420
);
14171421
push(unit);
@@ -5791,6 +5795,7 @@ class AstBuilder extends StackListener {
57915795
errorReporter.errorReporter,
57925796
uri,
57935797
_featureSet,
5798+
_languageVersion,
57945799
_lineInfo,
57955800
dartdoc,
57965801
).build();

pkg/analyzer/lib/src/fasta/doc_comment_builder.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:_fe_analyzer_shared/src/scanner/token_constants.dart';
1212
import 'package:analyzer/dart/analysis/features.dart';
1313
import 'package:analyzer/dart/ast/doc_comment.dart';
1414
import 'package:analyzer/dart/ast/token.dart' show Token, TokenType;
15+
import 'package:analyzer/dart/element/element.dart';
1516
import 'package:analyzer/error/listener.dart';
1617
import 'package:analyzer/source/line_info.dart';
1718
import 'package:analyzer/src/dart/ast/ast.dart';
@@ -112,6 +113,7 @@ final class DocCommentBuilder {
112113
final ErrorReporter? _errorReporter;
113114
final Uri _uri;
114115
final FeatureSet _featureSet;
116+
final LibraryLanguageVersion _languageVersion;
115117
final LineInfo _lineInfo;
116118
final List<CommentReferenceImpl> _references = [];
117119
final List<MdCodeBlock> _codeBlocks = [];
@@ -128,6 +130,7 @@ final class DocCommentBuilder {
128130
this._errorReporter,
129131
this._uri,
130132
this._featureSet,
133+
this._languageVersion,
131134
this._lineInfo,
132135
this._startToken,
133136
) : _characterSequence = _CharacterSequence(_startToken);
@@ -432,6 +435,7 @@ final class DocCommentBuilder {
432435
_uri,
433436
true /* isFullAst */,
434437
_featureSet,
438+
_languageVersion,
435439
_lineInfo,
436440
);
437441
var parser = Parser(docImportListener);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:_fe_analyzer_shared/src/parser/parser.dart' as fasta;
66
import 'package:_fe_analyzer_shared/src/parser/type_info.dart' as fasta;
77
import 'package:analyzer/dart/analysis/features.dart';
88
import 'package:analyzer/dart/ast/token.dart';
9+
import 'package:analyzer/dart/element/element.dart';
910
import 'package:analyzer/error/listener.dart';
1011
import 'package:analyzer/source/line_info.dart';
1112
import 'package:analyzer/source/source.dart';
@@ -30,12 +31,14 @@ class Parser {
3031
Parser(Source source, AnalysisErrorListener errorListener,
3132
{required FeatureSet featureSet,
3233
bool allowNativeClause = true,
34+
required LibraryLanguageVersion languageVersion,
3335
required LineInfo lineInfo})
3436
: astBuilder = AstBuilder(
3537
ErrorReporter(errorListener, source),
3638
source.uri,
3739
true,
3840
featureSet,
41+
languageVersion,
3942
lineInfo,
4043
) {
4144
fastaParser = fasta.Parser(

pkg/analyzer/lib/src/summary2/library_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1321,7 +1321,7 @@ class LibraryBuilder with MacroApplicationsContainer {
13211321
libraryUnitNode.featureSet,
13221322
);
13231323
libraryElement.isSynthetic = !libraryFile.exists;
1324-
libraryElement.languageVersion = libraryUnitNode.languageVersion!;
1324+
libraryElement.languageVersion = libraryUnitNode.languageVersion;
13251325
_bindReference(libraryReference, libraryElement);
13261326
elementFactory.setLibraryTypeSystem(libraryElement);
13271327

0 commit comments

Comments
 (0)