Remove '@experimental' from declarations related to records and patterns.

Change-Id: I4db54e3097c343ec72e041f78df2b38b1835853e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296061
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2023-04-19 00:51:58 +00:00 committed by Commit Queue
parent 21de916eb8
commit cef5bcb602
6 changed files with 4 additions and 95 deletions

View file

@ -1,3 +1,6 @@
## 5.11.0-dev
* Removed `@experimental` from AST nodes and elements for records and patterns.
## 5.10.0 ## 5.10.0
* Added `DartType.isDartCoreType`. * Added `DartType.isDartCoreType`.

View file

@ -225,7 +225,6 @@ abstract class AssertStatement implements Assertion, Statement {
/// variablePattern ::= identifier /// variablePattern ::= identifier
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class AssignedVariablePattern implements VariablePattern { abstract class AssignedVariablePattern implements VariablePattern {
/// Return the element referenced by this pattern, or `null` if either /// Return the element referenced by this pattern, or `null` if either
/// [name] does not resolve to an element, or the AST structure has not /// [name] does not resolve to an element, or the AST structure has not
@ -870,7 +869,6 @@ abstract class CascadeExpression
/// 'case' [GuardedPattern] /// 'case' [GuardedPattern]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class CaseClause implements AstNode { abstract class CaseClause implements AstNode {
/// Return the token representing the 'case' keyword. /// Return the token representing the 'case' keyword.
Token get caseKeyword; Token get caseKeyword;
@ -885,7 +883,6 @@ abstract class CaseClause implements AstNode {
/// [DartPattern] 'as' [TypeAnnotation] /// [DartPattern] 'as' [TypeAnnotation]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class CastPattern implements DartPattern { abstract class CastPattern implements DartPattern {
/// The `as` token. /// The `as` token.
Token get asToken; Token get asToken;
@ -1480,7 +1477,6 @@ abstract class Configuration implements AstNode {
/// 'const'? [Expression] /// 'const'? [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class ConstantPattern implements DartPattern { abstract class ConstantPattern implements DartPattern {
/// Return the `const` keyword, or `null` if the expression is not preceded by /// Return the `const` keyword, or `null` if the expression is not preceded by
/// the keyword `const`. /// the keyword `const`.
@ -1709,7 +1705,6 @@ abstract class ContinueStatement implements Statement {
/// | [RelationalPattern] /// | [RelationalPattern]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class DartPattern implements AstNode, ListPatternElement { abstract class DartPattern implements AstNode, ListPatternElement {
/// The matched value type, or `null` if the node is not resolved yet. /// The matched value type, or `null` if the node is not resolved yet.
DartType? get matchedValueType; DartType? get matchedValueType;
@ -1785,7 +1780,6 @@ abstract class DeclaredIdentifier implements Declaration {
/// ( 'var' | 'final' | 'final'? [TypeAnnotation])? [Identifier] /// ( 'var' | 'final' | 'final'? [TypeAnnotation])? [Identifier]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class DeclaredVariablePattern implements VariablePattern { abstract class DeclaredVariablePattern implements VariablePattern {
/// Return the element associated with this declaration, or `null` if the AST /// Return the element associated with this declaration, or `null` if the AST
/// structure has not been resolved. /// structure has not been resolved.
@ -2376,7 +2370,6 @@ abstract class ForEachPartsWithIdentifier implements ForEachParts {
/// ( 'final' | 'var' ) [DartPattern] 'in' [Expression] /// ( 'final' | 'var' ) [DartPattern] 'in' [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class ForEachPartsWithPattern implements ForEachParts { abstract class ForEachPartsWithPattern implements ForEachParts {
/// Return the `var` or `final` keyword introducing the pattern. /// Return the `var` or `final` keyword introducing the pattern.
Token get keyword; Token get keyword;
@ -2969,7 +2962,6 @@ abstract class GenericTypeAlias implements TypeAlias {
/// [DartPattern] [WhenClause]? /// [DartPattern] [WhenClause]?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class GuardedPattern implements AstNode { abstract class GuardedPattern implements AstNode {
/// Return the pattern controlling whether the statements will be executed. /// Return the pattern controlling whether the statements will be executed.
DartPattern get pattern; DartPattern get pattern;
@ -3020,7 +3012,6 @@ abstract class Identifier implements Expression, CommentReferableExpression {
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class IfElement implements CollectionElement { abstract class IfElement implements CollectionElement {
/// Return the `case` clause used to match a pattern against the [condition]. /// Return the `case` clause used to match a pattern against the [condition].
@experimental
CaseClause? get caseClause; CaseClause? get caseClause;
/// Return the condition used to determine which of the statements is executed /// Return the condition used to determine which of the statements is executed
@ -3064,7 +3055,6 @@ abstract class IfElement implements CollectionElement {
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
abstract class IfStatement implements Statement { abstract class IfStatement implements Statement {
/// Return the `case` clause used to match a pattern against the [condition]. /// Return the `case` clause used to match a pattern against the [condition].
@experimental
CaseClause? get caseClause; CaseClause? get caseClause;
/// Return the condition used to determine which of the statements is executed /// Return the condition used to determine which of the statements is executed
@ -3511,7 +3501,6 @@ abstract class ListLiteral implements TypedLiteral {
/// [TypeArgumentList]? '[' [DartPattern] (',' [DartPattern])* ','? ']' /// [TypeArgumentList]? '[' [DartPattern] (',' [DartPattern])* ','? ']'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class ListPattern implements DartPattern { abstract class ListPattern implements DartPattern {
/// Return the elements in this pattern. /// Return the elements in this pattern.
NodeList<ListPatternElement> get elements; NodeList<ListPatternElement> get elements;
@ -3534,7 +3523,6 @@ abstract class ListPattern implements DartPattern {
/// An element of a list pattern. /// An element of a list pattern.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class ListPatternElement implements AstNode {} abstract class ListPatternElement implements AstNode {}
/// A node that represents a literal expression. /// A node that represents a literal expression.
@ -3557,7 +3545,6 @@ abstract class Literal implements Expression {}
/// [DartPattern] '&&' [DartPattern] /// [DartPattern] '&&' [DartPattern]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class LogicalAndPattern implements DartPattern { abstract class LogicalAndPattern implements DartPattern {
/// The left sub-pattern. /// The left sub-pattern.
DartPattern get leftOperand; DartPattern get leftOperand;
@ -3575,7 +3562,6 @@ abstract class LogicalAndPattern implements DartPattern {
/// [DartPattern] '||' [DartPattern] /// [DartPattern] '||' [DartPattern]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class LogicalOrPattern implements DartPattern { abstract class LogicalOrPattern implements DartPattern {
/// The left sub-pattern. /// The left sub-pattern.
DartPattern get leftOperand; DartPattern get leftOperand;
@ -3613,7 +3599,6 @@ abstract class MapLiteralEntry implements CollectionElement {
/// ','? '}' /// ','? '}'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class MapPattern implements DartPattern { abstract class MapPattern implements DartPattern {
/// Return the elements in this pattern. /// Return the elements in this pattern.
NodeList<MapPatternElement> get elements; NodeList<MapPatternElement> get elements;
@ -3635,7 +3620,6 @@ abstract class MapPattern implements DartPattern {
/// An element of a map pattern. /// An element of a map pattern.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class MapPatternElement implements AstNode {} abstract class MapPatternElement implements AstNode {}
/// An entry in a map pattern. /// An entry in a map pattern.
@ -3644,7 +3628,6 @@ abstract class MapPatternElement implements AstNode {}
/// [Expression] ':' [DartPattern] /// [Expression] ':' [DartPattern]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class MapPatternEntry implements AstNode, MapPatternElement { abstract class MapPatternEntry implements AstNode, MapPatternElement {
/// Return the expression computing the key of the entry to be matched. /// Return the expression computing the key of the entry to be matched.
Expression get key; Expression get key;
@ -4077,7 +4060,6 @@ abstract class NormalFormalParameter implements FormalParameter {
/// [DartPattern] '!' /// [DartPattern] '!'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class NullAssertPattern implements DartPattern { abstract class NullAssertPattern implements DartPattern {
/// The `!` token. /// The `!` token.
Token get operator; Token get operator;
@ -4092,7 +4074,6 @@ abstract class NullAssertPattern implements DartPattern {
/// [DartPattern] '?' /// [DartPattern] '?'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class NullCheckPattern implements DartPattern { abstract class NullCheckPattern implements DartPattern {
/// The `?` token. /// The `?` token.
Token get operator; Token get operator;
@ -4136,7 +4117,6 @@ abstract class NullShortableExpression implements Expression {
/// [Identifier] [TypeArgumentList]? '(' [PatternField] ')' /// [Identifier] [TypeArgumentList]? '(' [PatternField] ')'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class ObjectPattern implements DartPattern { abstract class ObjectPattern implements DartPattern {
/// Return the patterns matching the properties of the object. /// Return the patterns matching the properties of the object.
NodeList<PatternField> get fields; NodeList<PatternField> get fields;
@ -4188,7 +4168,6 @@ abstract class ParenthesizedExpression implements Expression {
/// '(' [DartPattern] ')' /// '(' [DartPattern] ')'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class ParenthesizedPattern implements DartPattern { abstract class ParenthesizedPattern implements DartPattern {
/// Return the left parenthesis. /// Return the left parenthesis.
Token get leftParenthesis; Token get leftParenthesis;
@ -4253,7 +4232,6 @@ abstract class PartOfDirective implements Directive {
/// [DartPattern] '=' [Expression] /// [DartPattern] '=' [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class PatternAssignment implements Expression { abstract class PatternAssignment implements Expression {
/// Return the equal sign separating the pattern from the expression. /// Return the equal sign separating the pattern from the expression.
Token get equals; Token get equals;
@ -4271,7 +4249,6 @@ abstract class PatternAssignment implements Expression {
/// [PatternFieldName]? [DartPattern] /// [PatternFieldName]? [DartPattern]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class PatternField implements AstNode { abstract class PatternField implements AstNode {
/// The name specified explicitly by [name], or implied by the variable /// The name specified explicitly by [name], or implied by the variable
/// pattern inside [pattern]. Always `null` if [name] is `null`. Can be `null` /// pattern inside [pattern]. Always `null` if [name] is `null`. Can be `null`
@ -4297,7 +4274,6 @@ abstract class PatternField implements AstNode {
/// [Token]? ':' /// [Token]? ':'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class PatternFieldName implements AstNode { abstract class PatternFieldName implements AstNode {
/// The colon following the name. /// The colon following the name.
Token get colon; Token get colon;
@ -4312,7 +4288,6 @@ abstract class PatternFieldName implements AstNode {
/// ( 'final' | 'var' ) [DartPattern] '=' [Expression] /// ( 'final' | 'var' ) [DartPattern] '=' [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class PatternVariableDeclaration implements AnnotatedNode { abstract class PatternVariableDeclaration implements AnnotatedNode {
/// Return the equal sign separating the pattern from the expression. /// Return the equal sign separating the pattern from the expression.
Token get equals; Token get equals;
@ -4333,7 +4308,6 @@ abstract class PatternVariableDeclaration implements AnnotatedNode {
/// [PatternVariableDeclaration] ';' /// [PatternVariableDeclaration] ';'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class PatternVariableDeclarationStatement implements Statement { abstract class PatternVariableDeclarationStatement implements Statement {
/// The pattern declaration. /// The pattern declaration.
PatternVariableDeclaration get declaration; PatternVariableDeclaration get declaration;
@ -4456,7 +4430,6 @@ abstract class PropertyAccess
/// recordField ::= (identifier ':')? [Expression] /// recordField ::= (identifier ':')? [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordLiteral implements Literal { abstract class RecordLiteral implements Literal {
/// Return the token representing the 'const' keyword, or `null` if the /// Return the token representing the 'const' keyword, or `null` if the
/// literal is not a constant. /// literal is not a constant.
@ -4483,7 +4456,6 @@ abstract class RecordLiteral implements Literal {
/// '(' [PatternField] (',' [PatternField])* ')' /// '(' [PatternField] (',' [PatternField])* ')'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordPattern implements DartPattern { abstract class RecordPattern implements DartPattern {
/// Return the fields of the record pattern. /// Return the fields of the record pattern.
NodeList<PatternField> get fields; NodeList<PatternField> get fields;
@ -4513,7 +4485,6 @@ abstract class RecordPattern implements DartPattern {
/// recordTypeNamedField ::= metadata type identifier /// recordTypeNamedField ::= metadata type identifier
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeAnnotation implements TypeAnnotation { abstract class RecordTypeAnnotation implements TypeAnnotation {
/// The left parenthesis. /// The left parenthesis.
Token get leftParenthesis; Token get leftParenthesis;
@ -4531,7 +4502,6 @@ abstract class RecordTypeAnnotation implements TypeAnnotation {
/// A field in a [RecordTypeAnnotation]. /// A field in a [RecordTypeAnnotation].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeAnnotationField implements AstNode { abstract class RecordTypeAnnotationField implements AstNode {
/// The annotations associated with the field. /// The annotations associated with the field.
NodeList<Annotation> get metadata; NodeList<Annotation> get metadata;
@ -4546,7 +4516,6 @@ abstract class RecordTypeAnnotationField implements AstNode {
/// A named field in a [RecordTypeAnnotation]. /// A named field in a [RecordTypeAnnotation].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeAnnotationNamedField abstract class RecordTypeAnnotationNamedField
implements RecordTypeAnnotationField { implements RecordTypeAnnotationField {
@override @override
@ -4556,7 +4525,6 @@ abstract class RecordTypeAnnotationNamedField
/// The portion of a [RecordTypeAnnotation] with named fields. /// The portion of a [RecordTypeAnnotation] with named fields.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeAnnotationNamedFields implements AstNode { abstract class RecordTypeAnnotationNamedFields implements AstNode {
/// The fields contained in the block. /// The fields contained in the block.
NodeList<RecordTypeAnnotationNamedField> get fields; NodeList<RecordTypeAnnotationNamedField> get fields;
@ -4571,7 +4539,6 @@ abstract class RecordTypeAnnotationNamedFields implements AstNode {
/// A positional field in a [RecordTypeAnnotation]. /// A positional field in a [RecordTypeAnnotation].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeAnnotationPositionalField abstract class RecordTypeAnnotationPositionalField
implements RecordTypeAnnotationField {} implements RecordTypeAnnotationField {}
@ -4605,7 +4572,6 @@ abstract class RedirectingConstructorInvocation
/// (equalityOperator | relationalOperator) [Expression] /// (equalityOperator | relationalOperator) [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RelationalPattern implements DartPattern { abstract class RelationalPattern implements DartPattern {
/// The element of the [operator] for the matched type. /// The element of the [operator] for the matched type.
MethodElement? get element; MethodElement? get element;
@ -4622,7 +4588,6 @@ abstract class RelationalPattern implements DartPattern {
/// restPatternElement ::= '...' [DartPattern]? /// restPatternElement ::= '...' [DartPattern]?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RestPatternElement abstract class RestPatternElement
implements ListPatternElement, MapPatternElement { implements ListPatternElement, MapPatternElement {
/// The operator token '...'. /// The operator token '...'.
@ -5055,7 +5020,6 @@ abstract class SwitchDefault implements SwitchMember {}
/// (',' [SwitchExpressionCase])* ','? '}' /// (',' [SwitchExpressionCase])* ','? '}'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class SwitchExpression implements Expression { abstract class SwitchExpression implements Expression {
/// Return the cases that can be selected by the expression. /// Return the cases that can be selected by the expression.
NodeList<SwitchExpressionCase> get cases; NodeList<SwitchExpressionCase> get cases;
@ -5086,7 +5050,6 @@ abstract class SwitchExpression implements Expression {
/// [GuardedPattern] '=>' [Expression] /// [GuardedPattern] '=>' [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class SwitchExpressionCase implements AstNode { abstract class SwitchExpressionCase implements AstNode {
/// Return the arrow separating the pattern from the expression. /// Return the arrow separating the pattern from the expression.
Token get arrow; Token get arrow;
@ -5140,7 +5103,6 @@ abstract class SwitchMember implements AstNode {
/// [Label]* 'case' [DartPattern] [WhenClause]? ':' [Statement]* /// [Label]* 'case' [DartPattern] [WhenClause]? ':' [Statement]*
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class SwitchPatternCase implements SwitchMember { abstract class SwitchPatternCase implements SwitchMember {
/// Return the pattern controlling whether the statements will be executed. /// Return the pattern controlling whether the statements will be executed.
GuardedPattern get guardedPattern; GuardedPattern get guardedPattern;
@ -5534,7 +5496,6 @@ abstract class VariableDeclarationStatement implements Statement {
/// [DeclaredVariablePattern]. /// [DeclaredVariablePattern].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class VariablePattern implements DartPattern { abstract class VariablePattern implements DartPattern {
/// The name of the variable declared or referenced by the pattern. /// The name of the variable declared or referenced by the pattern.
Token get name; Token get name;
@ -5547,7 +5508,6 @@ abstract class VariablePattern implements DartPattern {
/// 'when' [Expression] /// 'when' [Expression]
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class WhenClause implements AstNode { abstract class WhenClause implements AstNode {
/// Return the condition that is evaluated when the [pattern] matches, that /// Return the condition that is evaluated when the [pattern] matches, that
/// must evaluate to `true` in order for the [expression] to be executed. /// must evaluate to `true` in order for the [expression] to be executed.
@ -5587,7 +5547,6 @@ abstract class WhileStatement implements Statement {
/// ( 'var' | 'final' | 'final'? [TypeAnnotation])? '_' /// ( 'var' | 'final' | 'final'? [TypeAnnotation])? '_'
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class WildcardPattern implements DartPattern { abstract class WildcardPattern implements DartPattern {
/// The 'var' or 'final' keyword. /// The 'var' or 'final' keyword.
Token? get keyword; Token? get keyword;

View file

@ -166,7 +166,6 @@ abstract class AugmentedMixinElement extends AugmentedInterfaceElement {
/// A pattern variable that is explicitly declared. /// A pattern variable that is explicitly declared.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class BindPatternVariableElement implements PatternVariableElement {} abstract class BindPatternVariableElement implements PatternVariableElement {}
/// A class augmentation, defined by a class augmentation declaration. /// A class augmentation, defined by a class augmentation declaration.
@ -207,11 +206,9 @@ abstract class ClassElement
/// A class is a base class if it has an explicit `base` modifier, or the /// A class is a base class if it has an explicit `base` modifier, or the
/// class has a `base` induced modifier and [isSealed] is `true` as well. /// class has a `base` induced modifier and [isSealed] is `true` as well.
/// The base modifier allows the class to be extended but not implemented. /// The base modifier allows the class to be extended but not implemented.
@experimental
bool get isBase; bool get isBase;
/// Return `true` if this class can be instantiated. /// Return `true` if this class can be instantiated.
@experimental
bool get isConstructable; bool get isConstructable;
/// Return `true` if this class represents the class 'Enum' defined in the /// Return `true` if this class represents the class 'Enum' defined in the
@ -225,7 +222,6 @@ abstract class ClassElement
/// Return `true` if this element has the property where, in a switch, if you /// Return `true` if this element has the property where, in a switch, if you
/// cover all of the subtypes of this element, then the compiler knows that /// cover all of the subtypes of this element, then the compiler knows that
/// you have covered all possible instances of the type. /// you have covered all possible instances of the type.
@experimental
bool get isExhaustive; bool get isExhaustive;
/// Return `true` if this class is a final class. /// Return `true` if this class is a final class.
@ -234,7 +230,6 @@ abstract class ClassElement
/// class has a `final` induced modifier and [isSealed] is `true` as well. /// class has a `final` induced modifier and [isSealed] is `true` as well.
/// The final modifier prohibits this class from being extended, implemented, /// The final modifier prohibits this class from being extended, implemented,
/// or mixed in. /// or mixed in.
@experimental
bool get isFinal; bool get isFinal;
/// Return `true` if this class is an interface class. /// Return `true` if this class is an interface class.
@ -243,7 +238,6 @@ abstract class ClassElement
/// or the class has an `interface` induced modifier and [isSealed] is `true` /// or the class has an `interface` induced modifier and [isSealed] is `true`
/// as well. The interface modifier allows the class to be implemented, but /// as well. The interface modifier allows the class to be implemented, but
/// not extended or mixed in. /// not extended or mixed in.
@experimental
bool get isInterface; bool get isInterface;
/// Return `true` if this class is a mixin application. A class is a mixin /// Return `true` if this class is a mixin application. A class is a mixin
@ -252,12 +246,10 @@ abstract class ClassElement
/// Return `true` if this class is a mixin class. A class is a mixin class if /// Return `true` if this class is a mixin class. A class is a mixin class if
/// it has an explicit `mixin` modifier. /// it has an explicit `mixin` modifier.
@experimental
bool get isMixinClass; bool get isMixinClass;
/// Return `true` if this class is a sealed class. A class is a sealed class /// Return `true` if this class is a sealed class. A class is a sealed class
/// if it has an explicit `sealed` modifier. /// if it has an explicit `sealed` modifier.
@experimental
bool get isSealed; bool get isSealed;
/// Return `true` if this class can validly be used as a mixin when defining /// Return `true` if this class can validly be used as a mixin when defining
@ -288,17 +280,14 @@ abstract class ClassElement
/// Return `true` if this element, assuming that it is within scope, is /// Return `true` if this element, assuming that it is within scope, is
/// extendable to classes in the given [library]. /// extendable to classes in the given [library].
@experimental
bool isExtendableIn(LibraryElement library); bool isExtendableIn(LibraryElement library);
/// Return `true` if this element, assuming that it is within scope, is /// Return `true` if this element, assuming that it is within scope, is
/// implementable to classes, mixins, and enums in the given [library]. /// implementable to classes, mixins, and enums in the given [library].
@experimental
bool isImplementableIn(LibraryElement library); bool isImplementableIn(LibraryElement library);
/// Return `true` if this element, assuming that it is within scope, is /// Return `true` if this element, assuming that it is within scope, is
/// able to be mixed-in by classes and enums in the given [library]. /// able to be mixed-in by classes and enums in the given [library].
@experimental
bool isMixableIn(LibraryElement library); bool isMixableIn(LibraryElement library);
} }
@ -1721,7 +1710,6 @@ abstract class InterfaceOrAugmentationElement
/// for a logical-or patterns, or shared `case` bodies in `switch` statements. /// for a logical-or patterns, or shared `case` bodies in `switch` statements.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class JoinPatternVariableElement implements PatternVariableElement { abstract class JoinPatternVariableElement implements PatternVariableElement {
/// Returns `true` if [variables] are consistent, present in all branches, /// Returns `true` if [variables] are consistent, present in all branches,
/// and have the same type and finality. /// and have the same type and finality.
@ -2025,7 +2013,6 @@ abstract class MixinElement
/// A mixin is a base mixin if it has an explicit `base` modifier, or the /// A mixin is a base mixin if it has an explicit `base` modifier, or the
/// mixin has a `base` induced modifier and [isSealed] is `true` as well. /// mixin has a `base` induced modifier and [isSealed] is `true` as well.
/// The base modifier allows a mixin to be mixed in but not implemented. /// The base modifier allows a mixin to be mixed in but not implemented.
@experimental
bool get isBase; bool get isBase;
/// Returns the superclass constraints defined for this mixin. If the /// Returns the superclass constraints defined for this mixin. If the
@ -2041,7 +2028,6 @@ abstract class MixinElement
/// Return `true` if this element, assuming that it is within scope, is /// Return `true` if this element, assuming that it is within scope, is
/// implementable to classes, mixins, and enums in the given [library]. /// implementable to classes, mixins, and enums in the given [library].
@experimental
bool isImplementableIn(LibraryElement library); bool isImplementableIn(LibraryElement library);
} }
@ -2192,7 +2178,6 @@ abstract class PartElement implements _ExistingElement {
/// A pattern variable. /// A pattern variable.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class PatternVariableElement implements LocalVariableElement { abstract class PatternVariableElement implements LocalVariableElement {
/// Returns the variable in which this variable joins with other pattern /// Returns the variable in which this variable joins with other pattern
/// variables with the same name, in a logical-or pattern, or shared case /// variables with the same name, in a logical-or pattern, or shared case

View file

@ -25,7 +25,6 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type_visitor.dart'; import 'package:analyzer/dart/element/type_visitor.dart';
import 'package:analyzer/src/dart/element/type.dart' show RecordTypeImpl; import 'package:analyzer/src/dart/element/type.dart' show RecordTypeImpl;
import 'package:meta/meta.dart';
/// The type associated with elements in the element model. /// The type associated with elements in the element model.
/// ///
@ -437,7 +436,6 @@ abstract class ParameterizedType implements DartType {
/// The type of a record literal or a record type annotation. /// The type of a record literal or a record type annotation.
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordType implements DartType { abstract class RecordType implements DartType {
/// Creates a record type from of [positional] and [named] fields. /// Creates a record type from of [positional] and [named] fields.
factory RecordType({ factory RecordType({
@ -463,7 +461,6 @@ abstract class RecordType implements DartType {
/// A field in a [RecordType]. /// A field in a [RecordType].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeField { abstract class RecordTypeField {
/// The type of the field. /// The type of the field.
DartType get type; DartType get type;
@ -472,7 +469,6 @@ abstract class RecordTypeField {
/// A named field in a [RecordType]. /// A named field in a [RecordType].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeNamedField implements RecordTypeField { abstract class RecordTypeNamedField implements RecordTypeField {
/// The name of the field. /// The name of the field.
String get name; String get name;
@ -481,7 +477,6 @@ abstract class RecordTypeNamedField implements RecordTypeField {
/// A positional field in a [RecordType]. /// A positional field in a [RecordType].
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypePositionalField implements RecordTypeField {} abstract class RecordTypePositionalField implements RecordTypeField {}
/// The type introduced by a type parameter. /// The type introduced by a type parameter.

View file

@ -661,7 +661,6 @@ class AssertStatementImpl extends StatementImpl implements AssertStatement {
/// A variable pattern in [PatternAssignment]. /// A variable pattern in [PatternAssignment].
/// ///
/// variablePattern ::= identifier /// variablePattern ::= identifier
@experimental
class AssignedVariablePatternImpl extends VariablePatternImpl class AssignedVariablePatternImpl extends VariablePatternImpl
implements AssignedVariablePattern { implements AssignedVariablePattern {
@override @override
@ -1462,7 +1461,6 @@ class CascadeExpressionImpl extends ExpressionImpl
/// 'case' [DartPattern] [WhenClause]? /// 'case' [DartPattern] [WhenClause]?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
class CaseClauseImpl extends AstNodeImpl implements CaseClause { class CaseClauseImpl extends AstNodeImpl implements CaseClause {
@override @override
final Token caseKeyword; final Token caseKeyword;
@ -1501,7 +1499,6 @@ class CaseClauseImpl extends AstNodeImpl implements CaseClause {
/// ///
/// castPattern ::= /// castPattern ::=
/// [DartPattern] 'as' [TypeAnnotation] /// [DartPattern] 'as' [TypeAnnotation]
@experimental
class CastPatternImpl extends DartPatternImpl implements CastPattern { class CastPatternImpl extends DartPatternImpl implements CastPattern {
@override @override
final Token asToken; final Token asToken;
@ -2857,7 +2854,6 @@ class ConstantContextForExpressionImpl extends AstNodeImpl {
/// ///
/// constantPattern ::= /// constantPattern ::=
/// 'const'? [Expression] /// 'const'? [Expression]
@experimental
class ConstantPatternImpl extends DartPatternImpl implements ConstantPattern { class ConstantPatternImpl extends DartPatternImpl implements ConstantPattern {
@override @override
final Token? constKeyword; final Token? constKeyword;
@ -3458,7 +3454,6 @@ class ContinueStatementImpl extends StatementImpl implements ContinueStatement {
/// | [ParenthesizedPattern] /// | [ParenthesizedPattern]
/// | [RecordPattern] /// | [RecordPattern]
/// | [RelationalPattern] /// | [RelationalPattern]
@experimental
abstract class DartPatternImpl extends AstNodeImpl abstract class DartPatternImpl extends AstNodeImpl
implements DartPattern, ListPatternElementImpl { implements DartPattern, ListPatternElementImpl {
@override @override
@ -3617,7 +3612,6 @@ class DeclaredSimpleIdentifier extends SimpleIdentifierImpl {
/// ///
/// variablePattern ::= /// variablePattern ::=
/// ( 'var' | 'final' | 'final'? [TypeAnnotation])? [Identifier] /// ( 'var' | 'final' | 'final'? [TypeAnnotation])? [Identifier]
@experimental
class DeclaredVariablePatternImpl extends VariablePatternImpl class DeclaredVariablePatternImpl extends VariablePatternImpl
implements DeclaredVariablePattern { implements DeclaredVariablePattern {
@override @override
@ -5267,7 +5261,6 @@ class ForEachPartsWithIdentifierImpl extends ForEachPartsImpl
/// ///
/// forEachPartsWithPattern ::= /// forEachPartsWithPattern ::=
/// ( 'final' | 'var' ) [DartPattern] 'in' [Expression] /// ( 'final' | 'var' ) [DartPattern] 'in' [Expression]
@experimental
class ForEachPartsWithPatternImpl extends ForEachPartsImpl class ForEachPartsWithPatternImpl extends ForEachPartsImpl
implements ForEachPartsWithPattern { implements ForEachPartsWithPattern {
/// The annotations associated with this node. /// The annotations associated with this node.
@ -6703,7 +6696,6 @@ class GenericTypeAliasImpl extends TypeAliasImpl implements GenericTypeAlias {
/// 'case' [DartPattern] [WhenClause]? /// 'case' [DartPattern] [WhenClause]?
/// ///
/// Clients may not extend, implement or mix-in this class. /// Clients may not extend, implement or mix-in this class.
@experimental
class GuardedPatternImpl extends AstNodeImpl implements GuardedPattern { class GuardedPatternImpl extends AstNodeImpl implements GuardedPattern {
@override @override
final DartPatternImpl pattern; final DartPatternImpl pattern;
@ -8308,7 +8300,6 @@ class ListLiteralImpl extends TypedLiteralImpl implements ListLiteral {
} }
} }
@experimental
abstract class ListPatternElementImpl abstract class ListPatternElementImpl
implements AstNodeImpl, ListPatternElement {} implements AstNodeImpl, ListPatternElement {}
@ -8316,7 +8307,6 @@ abstract class ListPatternElementImpl
/// ///
/// listPattern ::= /// listPattern ::=
/// [TypeArgumentList]? '[' [DartPattern] (',' [DartPattern])* ','? ']' /// [TypeArgumentList]? '[' [DartPattern] (',' [DartPattern])* ','? ']'
@experimental
class ListPatternImpl extends DartPatternImpl implements ListPattern { class ListPatternImpl extends DartPatternImpl implements ListPattern {
@override @override
final TypeArgumentListImpl? typeArguments; final TypeArgumentListImpl? typeArguments;
@ -8421,7 +8411,6 @@ class LocalVariableInfo {
/// ///
/// logicalAndPattern ::= /// logicalAndPattern ::=
/// [DartPattern] '&&' [DartPattern] /// [DartPattern] '&&' [DartPattern]
@experimental
class LogicalAndPatternImpl extends DartPatternImpl class LogicalAndPatternImpl extends DartPatternImpl
implements LogicalAndPattern { implements LogicalAndPattern {
@override @override
@ -8486,7 +8475,6 @@ class LogicalAndPatternImpl extends DartPatternImpl
/// ///
/// logicalOrPattern ::= /// logicalOrPattern ::=
/// [DartPattern] '||' [DartPattern] /// [DartPattern] '||' [DartPattern]
@experimental
class LogicalOrPatternImpl extends DartPatternImpl implements LogicalOrPattern { class LogicalOrPatternImpl extends DartPatternImpl implements LogicalOrPattern {
@override @override
final DartPatternImpl leftOperand; final DartPatternImpl leftOperand;
@ -8617,7 +8605,6 @@ class MapLiteralEntryImpl extends CollectionElementImpl
} }
} }
@experimental
abstract class MapPatternElementImpl abstract class MapPatternElementImpl
implements AstNodeImpl, MapPatternElement {} implements AstNodeImpl, MapPatternElement {}
@ -8625,7 +8612,6 @@ abstract class MapPatternElementImpl
/// ///
/// mapPatternEntry ::= /// mapPatternEntry ::=
/// [Expression] ':' [DartPattern] /// [Expression] ':' [DartPattern]
@experimental
class MapPatternEntryImpl extends AstNodeImpl class MapPatternEntryImpl extends AstNodeImpl
implements MapPatternEntry, MapPatternElementImpl { implements MapPatternEntry, MapPatternElementImpl {
ExpressionImpl _key; ExpressionImpl _key;
@ -8679,7 +8665,6 @@ class MapPatternEntryImpl extends AstNodeImpl
/// mapPattern ::= /// mapPattern ::=
/// [TypeArgumentList]? '{' [MapPatternEntry] (',' [MapPatternEntry])* /// [TypeArgumentList]? '{' [MapPatternEntry] (',' [MapPatternEntry])*
/// ','? '}' /// ','? '}'
@experimental
class MapPatternImpl extends DartPatternImpl implements MapPattern { class MapPatternImpl extends DartPatternImpl implements MapPattern {
@override @override
final TypeArgumentListImpl? typeArguments; final TypeArgumentListImpl? typeArguments;
@ -9777,7 +9762,6 @@ abstract class NormalFormalParameterImpl extends FormalParameterImpl
/// ///
/// nullAssertPattern ::= /// nullAssertPattern ::=
/// [DartPattern] '!' /// [DartPattern] '!'
@experimental
class NullAssertPatternImpl extends DartPatternImpl class NullAssertPatternImpl extends DartPatternImpl
implements NullAssertPattern { implements NullAssertPattern {
@override @override
@ -9840,7 +9824,6 @@ class NullAssertPatternImpl extends DartPatternImpl
/// ///
/// nullCheckPattern ::= /// nullCheckPattern ::=
/// [DartPattern] '?' /// [DartPattern] '?'
@experimental
class NullCheckPatternImpl extends DartPatternImpl implements NullCheckPattern { class NullCheckPatternImpl extends DartPatternImpl implements NullCheckPattern {
@override @override
final DartPatternImpl pattern; final DartPatternImpl pattern;
@ -9967,7 +9950,6 @@ mixin NullShortableExpressionImpl implements NullShortableExpression {
/// ///
/// objectPattern ::= /// objectPattern ::=
/// [Identifier] [TypeArgumentList]? '(' [PatternField] ')' /// [Identifier] [TypeArgumentList]? '(' [PatternField] ')'
@experimental
class ObjectPatternImpl extends DartPatternImpl implements ObjectPattern { class ObjectPatternImpl extends DartPatternImpl implements ObjectPattern {
final NodeListImpl<PatternFieldImpl> _fields = NodeListImpl._(); final NodeListImpl<PatternFieldImpl> _fields = NodeListImpl._();
@ -10167,7 +10149,6 @@ class ParenthesizedExpressionImpl extends ExpressionImpl
/// ///
/// parenthesizedPattern ::= /// parenthesizedPattern ::=
/// '(' [DartPattern] ')' /// '(' [DartPattern] ')'
@experimental
class ParenthesizedPatternImpl extends DartPatternImpl class ParenthesizedPatternImpl extends DartPatternImpl
implements ParenthesizedPattern { implements ParenthesizedPattern {
@override @override
@ -10374,7 +10355,6 @@ class PartOfDirectiveImpl extends DirectiveImpl implements PartOfDirective {
/// ///
/// When used as the condition in an `if`, the pattern is always a /// When used as the condition in an `if`, the pattern is always a
/// [PatternVariable] whose type is not `null`. /// [PatternVariable] whose type is not `null`.
@experimental
class PatternAssignmentImpl extends ExpressionImpl class PatternAssignmentImpl extends ExpressionImpl
implements PatternAssignment { implements PatternAssignment {
@override @override
@ -10441,7 +10421,6 @@ class PatternAssignmentImpl extends ExpressionImpl
/// ///
/// patternField ::= /// patternField ::=
/// [PatternFieldName]? [DartPattern] /// [PatternFieldName]? [DartPattern]
@experimental
class PatternFieldImpl extends AstNodeImpl implements PatternField { class PatternFieldImpl extends AstNodeImpl implements PatternField {
@override @override
Element? element; Element? element;
@ -10492,7 +10471,6 @@ class PatternFieldImpl extends AstNodeImpl implements PatternField {
/// ///
/// patternFieldName ::= /// patternFieldName ::=
/// [Token]? ':' /// [Token]? ':'
@experimental
class PatternFieldNameImpl extends AstNodeImpl implements PatternFieldName { class PatternFieldNameImpl extends AstNodeImpl implements PatternFieldName {
@override @override
final Token colon; final Token colon;
@ -10526,7 +10504,6 @@ class PatternFieldNameImpl extends AstNodeImpl implements PatternFieldName {
/// ///
/// patternDeclaration ::= /// patternDeclaration ::=
/// ( 'final' | 'var' ) [DartPattern] '=' [Expression] /// ( 'final' | 'var' ) [DartPattern] '=' [Expression]
@experimental
class PatternVariableDeclarationImpl extends AnnotatedNodeImpl class PatternVariableDeclarationImpl extends AnnotatedNodeImpl
implements PatternVariableDeclaration { implements PatternVariableDeclaration {
@override @override
@ -10603,7 +10580,6 @@ class PatternVariableDeclarationImpl extends AnnotatedNodeImpl
/// ///
/// patternDeclarationStatement ::= /// patternDeclarationStatement ::=
/// [PatternVariableDeclaration] ';' /// [PatternVariableDeclaration] ';'
@experimental
class PatternVariableDeclarationStatementImpl extends StatementImpl class PatternVariableDeclarationStatementImpl extends StatementImpl
implements PatternVariableDeclarationStatement { implements PatternVariableDeclarationStatement {
@override @override
@ -11089,7 +11065,6 @@ class RecordLiteralImpl extends LiteralImpl implements RecordLiteral {
/// ///
/// recordPattern ::= /// recordPattern ::=
/// '(' [PatternField] (',' [PatternField])* ')' /// '(' [PatternField] (',' [PatternField])* ')'
@experimental
class RecordPatternImpl extends DartPatternImpl implements RecordPattern { class RecordPatternImpl extends DartPatternImpl implements RecordPattern {
final NodeListImpl<PatternFieldImpl> _fields = NodeListImpl._(); final NodeListImpl<PatternFieldImpl> _fields = NodeListImpl._();
@ -11416,7 +11391,6 @@ class RedirectingConstructorInvocationImpl extends ConstructorInitializerImpl
/// ///
/// relationalPattern ::= /// relationalPattern ::=
/// (equalityOperator | relationalOperator) [Expression] /// (equalityOperator | relationalOperator) [Expression]
@experimental
class RelationalPatternImpl extends DartPatternImpl class RelationalPatternImpl extends DartPatternImpl
implements RelationalPattern { implements RelationalPattern {
ExpressionImpl _operand; ExpressionImpl _operand;
@ -11478,7 +11452,6 @@ class RelationalPatternImpl extends DartPatternImpl
} }
} }
@experimental
class RestPatternElementImpl extends AstNodeImpl class RestPatternElementImpl extends AstNodeImpl
implements implements
RestPatternElement, RestPatternElement,
@ -12811,7 +12784,6 @@ class SwitchDefaultImpl extends SwitchMemberImpl implements SwitchDefault {
/// ///
/// switchExpressionCase ::= /// switchExpressionCase ::=
/// [GuardedPattern] '=>' [Expression] /// [GuardedPattern] '=>' [Expression]
@experimental
class SwitchExpressionCaseImpl extends AstNodeImpl class SwitchExpressionCaseImpl extends AstNodeImpl
implements SwitchExpressionCase { implements SwitchExpressionCase {
@override @override
@ -12866,7 +12838,6 @@ class SwitchExpressionCaseImpl extends AstNodeImpl
/// switchExpression ::= /// switchExpression ::=
/// 'switch' '(' [Expression] ')' '{' [SwitchExpressionCase] /// 'switch' '(' [Expression] ')' '{' [SwitchExpressionCase]
/// (',' [SwitchExpressionCase])* ','? '}' /// (',' [SwitchExpressionCase])* ','? '}'
@experimental
class SwitchExpressionImpl extends ExpressionImpl implements SwitchExpression { class SwitchExpressionImpl extends ExpressionImpl implements SwitchExpression {
@override @override
final Token switchKeyword; final Token switchKeyword;
@ -13006,7 +12977,6 @@ abstract class SwitchMemberImpl extends AstNodeImpl implements SwitchMember {
/// ///
/// switchPatternCase ::= /// switchPatternCase ::=
/// [Label]* 'case' [DartPattern] [WhenClause]? ':' [Statement]* /// [Label]* 'case' [DartPattern] [WhenClause]? ':' [Statement]*
@experimental
class SwitchPatternCaseImpl extends SwitchMemberImpl class SwitchPatternCaseImpl extends SwitchMemberImpl
implements SwitchPatternCase { implements SwitchPatternCase {
@override @override
@ -14136,7 +14106,6 @@ class VariableDeclarationStatementImpl extends StatementImpl
} }
} }
@experimental
abstract class VariablePatternImpl extends DartPatternImpl abstract class VariablePatternImpl extends DartPatternImpl
implements VariablePattern { implements VariablePattern {
@override @override
@ -14159,7 +14128,6 @@ abstract class VariablePatternImpl extends DartPatternImpl
/// ///
/// switchCase ::= /// switchCase ::=
/// 'when' [Expression] /// 'when' [Expression]
@experimental
class WhenClauseImpl extends AstNodeImpl implements WhenClause { class WhenClauseImpl extends AstNodeImpl implements WhenClause {
ExpressionImpl _expression; ExpressionImpl _expression;
@ -14278,7 +14246,6 @@ class WhileStatementImpl extends StatementImpl implements WhileStatement {
/// ///
/// variablePattern ::= /// variablePattern ::=
/// ( 'var' | 'final' | 'final'? [TypeAnnotation])? '_' /// ( 'var' | 'final' | 'final'? [TypeAnnotation])? '_'
@experimental
class WildcardPatternImpl extends DartPatternImpl implements WildcardPattern { class WildcardPatternImpl extends DartPatternImpl implements WildcardPattern {
@override @override
final Token? keyword; final Token? keyword;

View file

@ -1,5 +1,5 @@
name: analyzer name: analyzer
version: 5.10.0 version: 5.11.0-dev
description: >- description: >-
This package provides a library that performs static analysis of Dart code. This package provides a library that performs static analysis of Dart code.
repository: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer repository: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer