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

Commit 883ab3f

Browse files
author
Dart CI
committed
Version 2.19.0-364.0.dev
Merge ad5fc84 into dev
2 parents 45b43e2 + ad5fc84 commit 883ab3f

File tree

363 files changed

+2662
-1626
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

363 files changed

+2662
-1626
lines changed

pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ class ForwardingListener implements Listener {
6767

6868
@override
6969
void beginClassDeclaration(Token begin, Token? abstractToken,
70-
Token? macroToken, Token? augmentToken, Token name) {
70+
Token? macroToken, Token? viewToken, Token? augmentToken, Token name) {
7171
listener?.beginClassDeclaration(
72-
begin, abstractToken, macroToken, augmentToken, name);
72+
begin, abstractToken, macroToken, viewToken, augmentToken, name);
7373
}
7474

7575
@override
@@ -390,9 +390,9 @@ class ForwardingListener implements Listener {
390390

391391
@override
392392
void beginNamedMixinApplication(Token begin, Token? abstractToken,
393-
Token? macroToken, Token? augmentToken, Token name) {
393+
Token? macroToken, Token? viewToken, Token? augmentToken, Token name) {
394394
listener?.beginNamedMixinApplication(
395-
begin, abstractToken, macroToken, augmentToken, name);
395+
begin, abstractToken, macroToken, viewToken, augmentToken, name);
396396
}
397397

398398
@override

pkg/_fe_analyzer_shared/lib/src/parser/listener.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ class Listener implements UnescapeErrorListener {
134134
///
135135
/// At this point we have parsed the name and type parameter declarations.
136136
void beginClassDeclaration(Token begin, Token? abstractToken,
137-
Token? macroToken, Token? augmentToken, Token name) {}
137+
Token? macroToken, Token? viewToken, Token? augmentToken, Token name) {}
138138

139139
/// Handle an extends clause in a class declaration. Substructures:
140140
/// - supertype (may be a mixin application)
@@ -760,7 +760,7 @@ class Listener implements UnescapeErrorListener {
760760
///
761761
/// At this point we have parsed the name and type parameter declarations.
762762
void beginNamedMixinApplication(Token begin, Token? abstractToken,
763-
Token? macroToken, Token? augmentToken, Token name) {}
763+
Token? macroToken, Token? viewToken, Token? augmentToken, Token name) {}
764764

765765
/// Handle a named mixin application with clause (e.g. "A with B, C").
766766
/// Substructures:

pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -507,8 +507,12 @@ class Parser {
507507
token = parseMetadataStar(token);
508508
Token next = token.next!;
509509
if (next.isTopLevelKeyword) {
510-
return parseTopLevelKeywordDeclaration(/* start = */ token,
511-
/* keyword = */ next, /* macroToken = */ null, directiveState);
510+
return parseTopLevelKeywordDeclaration(
511+
/* start = */ token,
512+
/* keyword = */ next,
513+
/* macroToken = */ null,
514+
/* viewToken = */ null,
515+
directiveState);
512516
}
513517
Token start = token;
514518
// Skip modifiers to find a top level keyword or identifier
@@ -528,15 +532,25 @@ class Parser {
528532
}
529533
next = token.next!;
530534
Token? macroToken;
535+
Token? viewToken;
531536
if (next.isIdentifier &&
537+
next.lexeme == 'view' &&
538+
optional('class', next.next!)) {
539+
viewToken = next;
540+
next = next.next!;
541+
} else if (next.isIdentifier &&
532542
next.lexeme == 'macro' &&
533543
optional('class', next.next!)) {
534544
macroToken = next;
535545
next = next.next!;
536546
}
537547
if (next.isTopLevelKeyword) {
538-
return parseTopLevelKeywordDeclaration(/* start = */ start,
539-
/* keyword = */ next, /* macroToken = */ macroToken, directiveState);
548+
return parseTopLevelKeywordDeclaration(
549+
/* start = */ start,
550+
/* keyword = */ next,
551+
/* macroToken = */ macroToken,
552+
/* viewToken = */ viewToken,
553+
directiveState);
540554
} else if (next.isKeywordOrIdentifier) {
541555
// TODO(danrubel): improve parseTopLevelMember
542556
// so that we don't parse modifiers twice.
@@ -569,7 +583,7 @@ class Parser {
569583
/// Parse any top-level declaration that begins with a keyword.
570584
/// [start] is the token before any modifiers preceding [keyword].
571585
Token parseTopLevelKeywordDeclaration(Token start, Token keyword,
572-
Token? macroToken, DirectiveContext? directiveState) {
586+
Token? macroToken, Token? viewToken, DirectiveContext? directiveState) {
573587
assert(keyword.isTopLevelKeyword);
574588
final String? value = keyword.stringValue;
575589
if (identical(value, 'class')) {
@@ -579,7 +593,7 @@ class Parser {
579593
Token? abstractToken = context.abstractToken;
580594
Token? augmentToken = context.augmentToken;
581595
return parseClassOrNamedMixinApplication(
582-
abstractToken, macroToken, augmentToken, keyword);
596+
abstractToken, macroToken, viewToken, augmentToken, keyword);
583597
} else if (identical(value, 'enum')) {
584598
directiveState?.checkDeclaration();
585599
ModifierContext context = new ModifierContext(this);
@@ -2415,8 +2429,12 @@ class Parser {
24152429
return token;
24162430
}
24172431

2418-
Token parseClassOrNamedMixinApplication(Token? abstractToken,
2419-
Token? macroToken, Token? augmentToken, Token classKeyword) {
2432+
Token parseClassOrNamedMixinApplication(
2433+
Token? abstractToken,
2434+
Token? macroToken,
2435+
Token? viewToken,
2436+
Token? augmentToken,
2437+
Token classKeyword) {
24202438
assert(optional('class', classKeyword));
24212439
Token begin = abstractToken ?? classKeyword;
24222440
listener.beginClassOrMixinOrNamedMixinApplicationPrelude(begin);
@@ -2427,11 +2445,11 @@ class Parser {
24272445
.parseVariables(name, this);
24282446
if (optional('=', token.next!)) {
24292447
listener.beginNamedMixinApplication(
2430-
begin, abstractToken, macroToken, augmentToken, name);
2448+
begin, abstractToken, macroToken, viewToken, augmentToken, name);
24312449
return parseNamedMixinApplication(token, begin, classKeyword);
24322450
} else {
24332451
listener.beginClassDeclaration(
2434-
begin, abstractToken, macroToken, augmentToken, name);
2452+
begin, abstractToken, macroToken, viewToken, augmentToken, name);
24352453
return parseClass(token, begin, classKeyword, name.lexeme);
24362454
}
24372455
}

pkg/analyzer/lib/dart/analysis/features.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ abstract class Feature {
7272
/// Feature information for unnamed libraries.
7373
static final unnamedLibraries = ExperimentalFeatures.unnamed_libraries;
7474

75+
/// Feature information for views.
76+
static final views = ExperimentalFeatures.views;
77+
7578
/// Feature information for variance.
7679
static final variance = ExperimentalFeatures.variance;
7780

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ import 'package:analyzer/src/util/performance/operation_performance.dart';
8585
/// TODO(scheglov) Clean up the list of implicitly analyzed files.
8686
class AnalysisDriver implements AnalysisDriverGeneric {
8787
/// The version of data format, should be incremented on every format change.
88-
static const int DATA_VERSION = 246;
88+
static const int DATA_VERSION = 247;
8989

9090
/// The number of exception contexts allowed to write. Once this field is
9191
/// zero, we stop writing any new exception contexts in this process.

pkg/analyzer/lib/src/dart/analysis/experiments.g.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
4343
EnableString.unnamed_libraries: ExperimentalFeatures.unnamed_libraries,
4444
EnableString.value_class: ExperimentalFeatures.value_class,
4545
EnableString.variance: ExperimentalFeatures.variance,
46+
EnableString.views: ExperimentalFeatures.views,
4647
};
4748

4849
/// Constant strings for enabling each of the currently known experimental
@@ -119,6 +120,9 @@ class EnableString {
119120

120121
/// String to enable the experiment "variance"
121122
static const String variance = 'variance';
123+
124+
/// String to enable the experiment "views"
125+
static const String views = 'views';
122126
}
123127

124128
class ExperimentalFeatures {
@@ -366,6 +370,16 @@ class ExperimentalFeatures {
366370
experimentalReleaseVersion: null,
367371
releaseVersion: null,
368372
);
373+
374+
static final views = ExperimentalFeature(
375+
index: 24,
376+
enableString: EnableString.views,
377+
isEnabledByDefault: IsEnabledByDefault.views,
378+
isExpired: IsExpired.views,
379+
documentation: 'Views',
380+
experimentalReleaseVersion: null,
381+
releaseVersion: null,
382+
);
369383
}
370384

371385
/// Constant bools indicating whether each experimental flag is currently
@@ -442,6 +456,9 @@ class IsEnabledByDefault {
442456

443457
/// Default state of the experiment "variance"
444458
static const bool variance = false;
459+
460+
/// Default state of the experiment "views"
461+
static const bool views = false;
445462
}
446463

447464
/// Constant bools indicating whether each experimental flag is currently
@@ -519,6 +536,9 @@ class IsExpired {
519536

520537
/// Expiration status of the experiment "variance"
521538
static const bool variance = false;
539+
540+
/// Expiration status of the experiment "views"
541+
static const bool views = false;
522542
}
523543

524544
mixin _CurrentState {
@@ -604,5 +624,8 @@ mixin _CurrentState {
604624
/// Current state for the flag "variance"
605625
bool get variance => isEnabled(ExperimentalFeatures.variance);
606626

627+
/// Current state for the flag "views"
628+
bool get views => isEnabled(ExperimentalFeatures.views);
629+
607630
bool isEnabled(covariant ExperimentalFeature feature);
608631
}

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

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1844,6 +1844,9 @@ class ClassDeclarationImpl extends NamedCompilationUnitMemberImpl
18441844
/// The 'macro' keyword, or `null` if the keyword was absent.
18451845
final Token? macroKeyword;
18461846

1847+
/// The 'view' keyword, or `null` if the keyword was absent.
1848+
final Token? viewKeyword;
1849+
18471850
/// The 'augment' keyword, or `null` if the keyword was absent.
18481851
final Token? augmentKeyword;
18491852

@@ -1898,6 +1901,7 @@ class ClassDeclarationImpl extends NamedCompilationUnitMemberImpl
18981901
required super.metadata,
18991902
required this.abstractKeyword,
19001903
required this.macroKeyword,
1904+
required this.viewKeyword,
19011905
required this.augmentKeyword,
19021906
required this.classKeyword,
19031907
required super.name,
@@ -1938,7 +1942,11 @@ class ClassDeclarationImpl extends NamedCompilationUnitMemberImpl
19381942

19391943
@override
19401944
Token get firstTokenAfterCommentAndMetadata {
1941-
return abstractKeyword ?? macroKeyword ?? augmentKeyword ?? classKeyword;
1945+
return abstractKeyword ??
1946+
macroKeyword ??
1947+
viewKeyword ??
1948+
augmentKeyword ??
1949+
classKeyword;
19421950
}
19431951

19441952
@override
@@ -1976,6 +1984,7 @@ class ClassDeclarationImpl extends NamedCompilationUnitMemberImpl
19761984
ChildEntities get _childEntities => super._childEntities
19771985
..addToken('abstractKeyword', abstractKeyword)
19781986
..addToken('macroKeyword', macroKeyword)
1987+
..addToken('viewKeyword', viewKeyword)
19791988
..addToken('augmentKeyword', augmentKeyword)
19801989
..addToken('classKeyword', classKeyword)
19811990
..addToken('name', name)
@@ -2040,6 +2049,10 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
20402049
/// macro class.
20412050
final Token? macroKeyword;
20422051

2052+
/// The token for the 'view' keyword, or `null` if this is not defining a
2053+
/// view class.
2054+
final Token? viewKeyword;
2055+
20432056
/// The token for the 'augment' keyword, or `null` if this is not defining an
20442057
/// augmentation class.
20452058
final Token? augmentKeyword;
@@ -2072,6 +2085,7 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
20722085
required this.equals,
20732086
required this.abstractKeyword,
20742087
required this.macroKeyword,
2088+
required this.viewKeyword,
20752089
required this.augmentKeyword,
20762090
required NamedTypeImpl superclass,
20772091
required WithClauseImpl withClause,
@@ -2093,7 +2107,11 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
20932107

20942108
@override
20952109
Token get firstTokenAfterCommentAndMetadata {
2096-
return abstractKeyword ?? macroKeyword ?? augmentKeyword ?? typedefKeyword;
2110+
return abstractKeyword ??
2111+
macroKeyword ??
2112+
viewKeyword ??
2113+
augmentKeyword ??
2114+
typedefKeyword;
20972115
}
20982116

20992117
@override
@@ -2131,6 +2149,7 @@ class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
21312149
..addNode('typeParameters', typeParameters)
21322150
..addToken('equals', equals)
21332151
..addToken('abstractKeyword', abstractKeyword)
2152+
..addToken('viewKeyword', viewKeyword)
21342153
..addToken('macroKeyword', macroKeyword)
21352154
..addToken('augmentKeyword', augmentKeyword)
21362155
..addNode('superclass', superclass)

0 commit comments

Comments
 (0)