mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:58:13 +00:00
Split VariablePattern into AssignedVariablePattern and DeclaredVariablePattern.
Change-Id: I19ef3be7edb273eccf5f1afa61985ab24e584f1f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/274082 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
parent
d9ea7207e8
commit
acf7a95410
|
@ -218,6 +218,23 @@ abstract class AssertStatement implements Assertion, Statement {
|
|||
Token get semicolon;
|
||||
}
|
||||
|
||||
/// A variable pattern in [PatternAssignment].
|
||||
///
|
||||
/// variablePattern ::= identifier
|
||||
///
|
||||
/// Clients may not extend, implement or mix-in this class.
|
||||
@experimental
|
||||
abstract class AssignedVariablePattern implements DartPattern {
|
||||
/// Return the element referenced by this pattern, or `null` if either
|
||||
/// [name] does not resolve to an element, or the AST structure has not
|
||||
/// been resolved. In valid code this will be either [LocalVariableElement]
|
||||
/// or [ParameterElement].
|
||||
Element? get element;
|
||||
|
||||
/// The name of the variable being referenced.
|
||||
Token get name;
|
||||
}
|
||||
|
||||
/// An assignment expression.
|
||||
///
|
||||
/// assignmentExpression ::=
|
||||
|
@ -363,6 +380,8 @@ abstract class AstVisitor<R> {
|
|||
|
||||
R? visitAssertStatement(AssertStatement assertStatement);
|
||||
|
||||
R? visitAssignedVariablePattern(AssignedVariablePattern node);
|
||||
|
||||
R? visitAssignmentExpression(AssignmentExpression node);
|
||||
|
||||
R? visitAugmentationImportDirective(AugmentationImportDirective node);
|
||||
|
@ -421,6 +440,8 @@ abstract class AstVisitor<R> {
|
|||
|
||||
R? visitDeclaredIdentifier(DeclaredIdentifier node);
|
||||
|
||||
R? visitDeclaredVariablePattern(DeclaredVariablePattern node);
|
||||
|
||||
R? visitDefaultFormalParameter(DefaultFormalParameter node);
|
||||
|
||||
R? visitDoStatement(DoStatement node);
|
||||
|
@ -668,8 +689,6 @@ abstract class AstVisitor<R> {
|
|||
|
||||
R? visitVariableDeclarationStatement(VariableDeclarationStatement node);
|
||||
|
||||
R? visitVariablePattern(VariablePattern node);
|
||||
|
||||
R? visitWhenClause(WhenClause node);
|
||||
|
||||
R? visitWhileStatement(WhileStatement node);
|
||||
|
@ -1645,7 +1664,9 @@ abstract class ContinueStatement implements Statement {
|
|||
/// A pattern.
|
||||
///
|
||||
/// pattern ::=
|
||||
/// [BinaryPattern]
|
||||
/// [AssignedVariablePattern]
|
||||
/// | [BinaryPattern]
|
||||
/// | [DeclaredVariablePattern]
|
||||
/// | [CastPattern]
|
||||
/// | [ConstantPattern]
|
||||
/// | [ListPattern]
|
||||
|
@ -1655,7 +1676,6 @@ abstract class ContinueStatement implements Statement {
|
|||
/// | [PostfixPattern]
|
||||
/// | [RecordPattern]
|
||||
/// | [RelationalPattern]
|
||||
/// | [VariablePattern]
|
||||
///
|
||||
/// Clients may not extend, implement or mix-in this class.
|
||||
@experimental
|
||||
|
@ -1725,6 +1745,32 @@ abstract class DeclaredIdentifier implements Declaration {
|
|||
TypeAnnotation? get type;
|
||||
}
|
||||
|
||||
/// A variable pattern that declares a variable.
|
||||
///
|
||||
/// variablePattern ::=
|
||||
/// ( 'var' | 'final' | 'final'? [TypeAnnotation])? [Identifier]
|
||||
///
|
||||
/// Clients may not extend, implement or mix-in this class.
|
||||
@experimental
|
||||
abstract class DeclaredVariablePattern implements DartPattern {
|
||||
/// Return the element associated with this declaration, or `null` if either
|
||||
/// the variable name is `_` (in which case no variable is defined) or the AST
|
||||
/// structure has not been resolved.
|
||||
VariablePatternElement? get declaredElement;
|
||||
|
||||
/// The 'var' or 'final' keyword used when there is no [type], or `null` if a
|
||||
/// type is given.
|
||||
Token? get keyword;
|
||||
|
||||
/// The name of the variable being bound, if `_` then no variable is bound,
|
||||
/// and [declaredElement] is `null`.
|
||||
Token get name;
|
||||
|
||||
/// The type that the variable is required to match, or `null` if any type is
|
||||
/// matched.
|
||||
TypeAnnotation? get type;
|
||||
}
|
||||
|
||||
/// A formal parameter with a default value.
|
||||
///
|
||||
/// There are two kinds of parameters that are both represented by this class:
|
||||
|
@ -5391,31 +5437,6 @@ abstract class VariableDeclarationStatement implements Statement {
|
|||
VariableDeclarationList get variables;
|
||||
}
|
||||
|
||||
/// A variable pattern.
|
||||
///
|
||||
/// variablePattern ::=
|
||||
/// ( 'var' | 'final' | [TypeAnnotation])? [Identifier]
|
||||
///
|
||||
/// Clients may not extend, implement or mix-in this class.
|
||||
@experimental
|
||||
abstract class VariablePattern implements DartPattern {
|
||||
/// Return the element associated with this declaration, or `null` if either
|
||||
/// the variable name is `_` (in which case no variable is defined) or the AST
|
||||
/// structure has not been resolved.
|
||||
VariablePatternElement? get declaredElement;
|
||||
|
||||
/// The 'var' or 'final' keyword used when there is no [type], or `null` if a
|
||||
/// type is given.
|
||||
Token? get keyword;
|
||||
|
||||
/// The name of the variable being bound.
|
||||
Token get name;
|
||||
|
||||
/// The type that the variable is required to match, or `null` if any type is
|
||||
/// matched.
|
||||
TypeAnnotation? get type;
|
||||
}
|
||||
|
||||
/// A guard in a pattern-based `case` in a `switch` statement, `switch`
|
||||
/// expression, `if` statement, or `if` element.
|
||||
///
|
||||
|
|
|
@ -149,6 +149,10 @@ class GeneralizingAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitAssertStatement(AssertStatement node) => visitStatement(node);
|
||||
|
||||
@override
|
||||
R? visitAssignedVariablePattern(AssignedVariablePattern node) =>
|
||||
visitDartPattern(node);
|
||||
|
||||
@override
|
||||
R? visitAssignmentExpression(AssignmentExpression node) =>
|
||||
visitExpression(node);
|
||||
|
@ -259,6 +263,10 @@ class GeneralizingAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitDeclaredIdentifier(DeclaredIdentifier node) => visitDeclaration(node);
|
||||
|
||||
@override
|
||||
R? visitDeclaredVariablePattern(DeclaredVariablePattern node) =>
|
||||
visitDartPattern(node);
|
||||
|
||||
@override
|
||||
R? visitDefaultFormalParameter(DefaultFormalParameter node) =>
|
||||
visitFormalParameter(node);
|
||||
|
@ -733,9 +741,6 @@ class GeneralizingAstVisitor<R> implements AstVisitor<R> {
|
|||
R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
|
||||
visitStatement(node);
|
||||
|
||||
@override
|
||||
R? visitVariablePattern(VariablePattern node) => visitDartPattern(node);
|
||||
|
||||
@override
|
||||
R? visitWhenClause(WhenClause node) => visitNode(node);
|
||||
|
||||
|
@ -799,6 +804,12 @@ class RecursiveAstVisitor<R> implements AstVisitor<R> {
|
|||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
R? visitAssignedVariablePattern(AssignedVariablePattern node) {
|
||||
node.visitChildren(this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
R? visitAssignmentExpression(AssignmentExpression node) {
|
||||
node.visitChildren(this);
|
||||
|
@ -973,6 +984,12 @@ class RecursiveAstVisitor<R> implements AstVisitor<R> {
|
|||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
R? visitDeclaredVariablePattern(DeclaredVariablePattern node) {
|
||||
node.visitChildren(this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
R? visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
node.visitChildren(this);
|
||||
|
@ -1709,12 +1726,6 @@ class RecursiveAstVisitor<R> implements AstVisitor<R> {
|
|||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
R? visitVariablePattern(VariablePattern node) {
|
||||
node.visitChildren(this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
R? visitWhenClause(WhenClause node) {
|
||||
node.visitChildren(this);
|
||||
|
@ -1768,6 +1779,9 @@ class SimpleAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitAssertStatement(AssertStatement node) => null;
|
||||
|
||||
@override
|
||||
R? visitAssignedVariablePattern(AssignedVariablePattern node) => null;
|
||||
|
||||
@override
|
||||
R? visitAssignmentExpression(AssignmentExpression node) => null;
|
||||
|
||||
|
@ -1855,6 +1869,9 @@ class SimpleAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitDeclaredIdentifier(DeclaredIdentifier node) => null;
|
||||
|
||||
@override
|
||||
R? visitDeclaredVariablePattern(DeclaredVariablePattern node) => null;
|
||||
|
||||
@override
|
||||
R? visitDefaultFormalParameter(DefaultFormalParameter node) => null;
|
||||
|
||||
|
@ -2236,9 +2253,6 @@ class SimpleAstVisitor<R> implements AstVisitor<R> {
|
|||
R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
|
||||
null;
|
||||
|
||||
@override
|
||||
R? visitVariablePattern(VariablePattern node) => null;
|
||||
|
||||
@override
|
||||
R? visitWhenClause(WhenClause node) => null;
|
||||
|
||||
|
@ -2281,6 +2295,9 @@ class ThrowingAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitAssertStatement(AssertStatement node) => _throw(node);
|
||||
|
||||
@override
|
||||
R? visitAssignedVariablePattern(AssignedVariablePattern node) => _throw(node);
|
||||
|
||||
@override
|
||||
R? visitAssignmentExpression(AssignmentExpression node) => _throw(node);
|
||||
|
||||
|
@ -2370,6 +2387,9 @@ class ThrowingAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitDeclaredIdentifier(DeclaredIdentifier node) => _throw(node);
|
||||
|
||||
@override
|
||||
R? visitDeclaredVariablePattern(DeclaredVariablePattern node) => _throw(node);
|
||||
|
||||
@override
|
||||
R? visitDefaultFormalParameter(DefaultFormalParameter node) => _throw(node);
|
||||
|
||||
|
@ -2758,9 +2778,6 @@ class ThrowingAstVisitor<R> implements AstVisitor<R> {
|
|||
R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
|
||||
_throw(node);
|
||||
|
||||
@override
|
||||
R? visitVariablePattern(VariablePattern node) => _throw(node);
|
||||
|
||||
@override
|
||||
R? visitWhenClause(WhenClause node) => _throw(node);
|
||||
|
||||
|
@ -2841,6 +2858,14 @@ class TimedAstVisitor<T> implements AstVisitor<T> {
|
|||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
T? visitAssignedVariablePattern(AssignedVariablePattern node) {
|
||||
stopwatch.start();
|
||||
T? result = _baseVisitor.visitAssignedVariablePattern(node);
|
||||
stopwatch.stop();
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
T? visitAssignmentExpression(AssignmentExpression node) {
|
||||
stopwatch.start();
|
||||
|
@ -3073,6 +3098,14 @@ class TimedAstVisitor<T> implements AstVisitor<T> {
|
|||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
T? visitDeclaredVariablePattern(DeclaredVariablePattern node) {
|
||||
stopwatch.start();
|
||||
T? result = _baseVisitor.visitDeclaredVariablePattern(node);
|
||||
stopwatch.stop();
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
T? visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
stopwatch.start();
|
||||
|
@ -4053,14 +4086,6 @@ class TimedAstVisitor<T> implements AstVisitor<T> {
|
|||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
T? visitVariablePattern(VariablePattern node) {
|
||||
stopwatch.start();
|
||||
T? result = _baseVisitor.visitVariablePattern(node);
|
||||
stopwatch.stop();
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
T? visitWhenClause(WhenClause node) {
|
||||
stopwatch.start();
|
||||
|
@ -4127,6 +4152,10 @@ class UnifyingAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitAssertStatement(AssertStatement node) => visitNode(node);
|
||||
|
||||
@override
|
||||
R? visitAssignedVariablePattern(AssignedVariablePattern node) =>
|
||||
visitNode(node);
|
||||
|
||||
@override
|
||||
R? visitAssignmentExpression(AssignmentExpression node) => visitNode(node);
|
||||
|
||||
|
@ -4217,6 +4246,10 @@ class UnifyingAstVisitor<R> implements AstVisitor<R> {
|
|||
@override
|
||||
R? visitDeclaredIdentifier(DeclaredIdentifier node) => visitNode(node);
|
||||
|
||||
@override
|
||||
R? visitDeclaredVariablePattern(DeclaredVariablePattern node) =>
|
||||
visitNode(node);
|
||||
|
||||
@override
|
||||
R? visitDefaultFormalParameter(DefaultFormalParameter node) =>
|
||||
visitNode(node);
|
||||
|
@ -4619,9 +4652,6 @@ class UnifyingAstVisitor<R> implements AstVisitor<R> {
|
|||
R? visitVariableDeclarationStatement(VariableDeclarationStatement node) =>
|
||||
visitNode(node);
|
||||
|
||||
@override
|
||||
R? visitVariablePattern(VariablePattern node) => visitNode(node);
|
||||
|
||||
@override
|
||||
R? visitWhenClause(WhenClause node) => visitNode(node);
|
||||
|
||||
|
|
|
@ -657,6 +657,55 @@ class AssertStatementImpl extends StatementImpl implements AssertStatement {
|
|||
}
|
||||
}
|
||||
|
||||
/// A variable pattern in [PatternAssignment].
|
||||
///
|
||||
/// variablePattern ::= identifier
|
||||
@experimental
|
||||
class AssignedVariablePatternImpl extends DartPatternImpl
|
||||
implements AssignedVariablePattern {
|
||||
@override
|
||||
Element? element;
|
||||
|
||||
@override
|
||||
final Token name;
|
||||
|
||||
AssignedVariablePatternImpl({
|
||||
required this.name,
|
||||
});
|
||||
|
||||
@override
|
||||
Token get beginToken => name;
|
||||
|
||||
@override
|
||||
Token get endToken => name;
|
||||
|
||||
@override
|
||||
ChildEntities get _childEntities =>
|
||||
super._childEntities..addToken('name', name);
|
||||
|
||||
@override
|
||||
E? accept<E>(AstVisitor<E> visitor) {
|
||||
return visitor.visitAssignedVariablePattern(this);
|
||||
}
|
||||
|
||||
@override
|
||||
DartType computePatternSchema(ResolverVisitor resolverVisitor) {
|
||||
throw UnimplementedError('TODO(scheglov)');
|
||||
}
|
||||
|
||||
@override
|
||||
void resolvePattern(
|
||||
ResolverVisitor resolverVisitor,
|
||||
DartType matchedType,
|
||||
SharedMatchContext context,
|
||||
) {
|
||||
throw UnimplementedError('TODO(scheglov)');
|
||||
}
|
||||
|
||||
@override
|
||||
void visitChildren(AstVisitor visitor) {}
|
||||
}
|
||||
|
||||
/// An assignment expression.
|
||||
///
|
||||
/// assignmentExpression ::=
|
||||
|
@ -1135,7 +1184,8 @@ class BinaryPatternImpl extends DartPatternImpl implements BinaryPattern {
|
|||
DartType matchedType,
|
||||
SharedMatchContext context,
|
||||
) {
|
||||
assert(operator.type == TokenType.AMPERSAND_AMPERSAND || operator.type == TokenType.BAR_BAR);
|
||||
assert(operator.type == TokenType.AMPERSAND_AMPERSAND ||
|
||||
operator.type == TokenType.BAR_BAR);
|
||||
resolverVisitor.analyzeLogicalPattern(
|
||||
matchedType, context, this, leftOperand, rightOperand,
|
||||
isAnd: operator.type == TokenType.AMPERSAND_AMPERSAND);
|
||||
|
@ -3352,7 +3402,9 @@ class ContinueStatementImpl extends StatementImpl implements ContinueStatement {
|
|||
/// A pattern.
|
||||
///
|
||||
/// pattern ::=
|
||||
/// [BinaryPattern]
|
||||
/// [AssignedVariablePattern]
|
||||
/// | [BinaryPattern]
|
||||
/// | [DeclaredVariablePattern]
|
||||
/// | [CastPattern]
|
||||
/// | [ConstantPattern]
|
||||
/// | [ListPattern]
|
||||
|
@ -3362,7 +3414,6 @@ class ContinueStatementImpl extends StatementImpl implements ContinueStatement {
|
|||
/// | [PostfixPattern]
|
||||
/// | [RecordPattern]
|
||||
/// | [RelationalPattern]
|
||||
/// | [VariablePattern]
|
||||
@experimental
|
||||
abstract class DartPatternImpl extends AstNodeImpl
|
||||
implements DartPattern, ListPatternElementImpl {
|
||||
|
@ -3377,7 +3428,7 @@ abstract class DartPatternImpl extends AstNodeImpl
|
|||
DartPattern get unParenthesized => this;
|
||||
|
||||
/// The variable pattern, itself, or wrapped in a unary pattern.
|
||||
VariablePatternImpl? get variablePattern => null;
|
||||
DeclaredVariablePatternImpl? get variablePattern => null;
|
||||
|
||||
DartType computePatternSchema(ResolverVisitor resolverVisitor);
|
||||
|
||||
|
@ -3493,6 +3544,103 @@ class DeclaredSimpleIdentifier extends SimpleIdentifierImpl {
|
|||
bool inDeclarationContext() => true;
|
||||
}
|
||||
|
||||
/// A variable pattern.
|
||||
///
|
||||
/// variablePattern ::=
|
||||
/// ( 'var' | 'final' | 'final'? [TypeAnnotation])? [Identifier]
|
||||
@experimental
|
||||
class DeclaredVariablePatternImpl extends DartPatternImpl
|
||||
implements DeclaredVariablePattern {
|
||||
@override
|
||||
VariablePatternBindElementImpl? declaredElement;
|
||||
|
||||
@override
|
||||
final Token? keyword;
|
||||
|
||||
@override
|
||||
final Token name;
|
||||
|
||||
@override
|
||||
final TypeAnnotationImpl? type;
|
||||
|
||||
DeclaredVariablePatternImpl({
|
||||
required this.name,
|
||||
required this.keyword,
|
||||
required this.type,
|
||||
}) {
|
||||
_becomeParentOf(type);
|
||||
}
|
||||
|
||||
@override
|
||||
Token get beginToken => type?.beginToken ?? name;
|
||||
|
||||
@override
|
||||
Token get endToken => name;
|
||||
|
||||
/// If [keyword] is `final`, returns it.
|
||||
Token? get finalToken {
|
||||
final keyword = this.keyword;
|
||||
if (keyword != null && keyword.keyword == Keyword.FINAL) {
|
||||
return keyword;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Returns the context for this pattern.
|
||||
/// * Declaration context: [PatternVariableDeclarationImpl]
|
||||
/// * Assignment context: [PatternAssignmentImpl]
|
||||
/// * Matching context: [GuardedPatternImpl]
|
||||
AstNodeImpl? get patternContext {
|
||||
for (DartPatternImpl current = this;;) {
|
||||
final parent = current.parent;
|
||||
if (parent is PatternVariableDeclarationImpl) {
|
||||
return parent;
|
||||
} else if (parent is PatternAssignmentImpl) {
|
||||
return parent;
|
||||
} else if (parent is GuardedPatternImpl) {
|
||||
return parent;
|
||||
} else if (parent is DartPatternImpl) {
|
||||
current = parent;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
DeclaredVariablePatternImpl? get variablePattern => this;
|
||||
|
||||
@override
|
||||
ChildEntities get _childEntities => super._childEntities
|
||||
..addToken('keyword', keyword)
|
||||
..addNode('type', type)
|
||||
..addToken('name', name);
|
||||
|
||||
@override
|
||||
E? accept<E>(AstVisitor<E> visitor) =>
|
||||
visitor.visitDeclaredVariablePattern(this);
|
||||
|
||||
@override
|
||||
DartType computePatternSchema(ResolverVisitor resolverVisitor) {
|
||||
return resolverVisitor.analyzeVariablePatternSchema(type?.typeOrThrow);
|
||||
}
|
||||
|
||||
@override
|
||||
void resolvePattern(
|
||||
ResolverVisitor resolverVisitor,
|
||||
DartType matchedType,
|
||||
SharedMatchContext context,
|
||||
) {
|
||||
resolverVisitor.analyzeVariablePattern(matchedType, context, this,
|
||||
declaredElement, declaredElement?.name, type?.typeOrThrow);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitChildren(AstVisitor visitor) {
|
||||
type?.accept(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
/// A formal parameter with a default value. There are two kinds of parameters
|
||||
/// that are both represented by this class: named formal parameters and
|
||||
/// positional formal parameters.
|
||||
|
@ -9726,7 +9874,7 @@ class ParenthesizedPatternImpl extends DartPatternImpl
|
|||
}
|
||||
|
||||
@override
|
||||
VariablePatternImpl? get variablePattern => pattern.variablePattern;
|
||||
DeclaredVariablePatternImpl? get variablePattern => pattern.variablePattern;
|
||||
|
||||
@override
|
||||
ChildEntities get _childEntities => super._childEntities
|
||||
|
@ -10171,7 +10319,7 @@ class PostfixPatternImpl extends DartPatternImpl implements PostfixPattern {
|
|||
Token get endToken => operator;
|
||||
|
||||
@override
|
||||
VariablePatternImpl? get variablePattern => operand.variablePattern;
|
||||
DeclaredVariablePatternImpl? get variablePattern => operand.variablePattern;
|
||||
|
||||
@override
|
||||
ChildEntities get _childEntities => super._childEntities
|
||||
|
@ -13688,101 +13836,6 @@ class VariableDeclarationStatementImpl extends StatementImpl
|
|||
}
|
||||
}
|
||||
|
||||
/// A variable pattern.
|
||||
///
|
||||
/// variablePattern ::=
|
||||
/// ( 'var' | 'final' | [TypeAnnotation])? [Identifier]
|
||||
@experimental
|
||||
class VariablePatternImpl extends DartPatternImpl implements VariablePattern {
|
||||
@override
|
||||
VariablePatternBindElementImpl? declaredElement;
|
||||
|
||||
@override
|
||||
final Token? keyword;
|
||||
|
||||
@override
|
||||
final Token name;
|
||||
|
||||
@override
|
||||
final TypeAnnotationImpl? type;
|
||||
|
||||
VariablePatternImpl({
|
||||
required this.name,
|
||||
required this.keyword,
|
||||
required this.type,
|
||||
}) {
|
||||
_becomeParentOf(type);
|
||||
}
|
||||
|
||||
@override
|
||||
Token get beginToken => type?.beginToken ?? name;
|
||||
|
||||
@override
|
||||
Token get endToken => name;
|
||||
|
||||
/// If [keyword] is `final`, returns it.
|
||||
Token? get finalToken {
|
||||
final keyword = this.keyword;
|
||||
if (keyword != null && keyword.keyword == Keyword.FINAL) {
|
||||
return keyword;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Returns the context for this pattern.
|
||||
/// * Declaration context: [PatternVariableDeclarationImpl]
|
||||
/// * Assignment context: [PatternAssignmentImpl]
|
||||
/// * Matching context: [GuardedPatternImpl]
|
||||
AstNodeImpl? get patternContext {
|
||||
for (DartPatternImpl current = this;;) {
|
||||
final parent = current.parent;
|
||||
if (parent is PatternVariableDeclarationImpl) {
|
||||
return parent;
|
||||
} else if (parent is PatternAssignmentImpl) {
|
||||
return parent;
|
||||
} else if (parent is GuardedPatternImpl) {
|
||||
return parent;
|
||||
} else if (parent is DartPatternImpl) {
|
||||
current = parent;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
VariablePatternImpl? get variablePattern => this;
|
||||
|
||||
@override
|
||||
ChildEntities get _childEntities => super._childEntities
|
||||
..addToken('keyword', keyword)
|
||||
..addNode('type', type)
|
||||
..addToken('name', name);
|
||||
|
||||
@override
|
||||
E? accept<E>(AstVisitor<E> visitor) => visitor.visitVariablePattern(this);
|
||||
|
||||
@override
|
||||
DartType computePatternSchema(ResolverVisitor resolverVisitor) {
|
||||
return resolverVisitor.analyzeVariablePatternSchema(type?.typeOrThrow);
|
||||
}
|
||||
|
||||
@override
|
||||
void resolvePattern(
|
||||
ResolverVisitor resolverVisitor,
|
||||
DartType matchedType,
|
||||
SharedMatchContext context,
|
||||
) {
|
||||
resolverVisitor.analyzeVariablePattern(matchedType, context, this,
|
||||
declaredElement, declaredElement?.name, type?.typeOrThrow);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitChildren(AstVisitor visitor) {
|
||||
type?.accept(visitor);
|
||||
}
|
||||
}
|
||||
|
||||
/// A guard in a pattern-based `case` in a `switch` statement or `switch`
|
||||
/// expression.
|
||||
///
|
||||
|
|
|
@ -68,6 +68,11 @@ class ToSourceVisitor implements AstVisitor<void> {
|
|||
sink.write(');');
|
||||
}
|
||||
|
||||
@override
|
||||
void visitAssignedVariablePattern(AssignedVariablePattern node) {
|
||||
sink.write(node.name.lexeme);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitAssignmentExpression(AssignmentExpression node) {
|
||||
_visitNode(node.leftHandSide);
|
||||
|
@ -312,6 +317,13 @@ class ToSourceVisitor implements AstVisitor<void> {
|
|||
_visitToken(node.name);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDeclaredVariablePattern(DeclaredVariablePattern node) {
|
||||
_visitToken(node.keyword, suffix: ' ');
|
||||
_visitNode(node.type, suffix: ' ');
|
||||
sink.write(node.name.lexeme);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
_visitNode(node.parameter);
|
||||
|
@ -1341,13 +1353,6 @@ class ToSourceVisitor implements AstVisitor<void> {
|
|||
sink.write(';');
|
||||
}
|
||||
|
||||
@override
|
||||
void visitVariablePattern(VariablePattern node) {
|
||||
_visitToken(node.keyword, suffix: ' ');
|
||||
_visitNode(node.type, suffix: ' ');
|
||||
sink.write(node.name.lexeme);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitWhenClause(WhenClause node) {
|
||||
sink.write('when ');
|
||||
|
|
|
@ -151,6 +151,12 @@ class AstComparator implements AstVisitor<bool> {
|
|||
isEqualTokens(node.semicolon, other.semicolon);
|
||||
}
|
||||
|
||||
@override
|
||||
bool visitAssignedVariablePattern(AssignedVariablePattern node) {
|
||||
var other = _other as DeclaredVariablePattern;
|
||||
return isEqualTokens(node.name, other.name);
|
||||
}
|
||||
|
||||
@override
|
||||
bool visitAssignmentExpression(AssignmentExpression node) {
|
||||
AssignmentExpression other = _other as AssignmentExpression;
|
||||
|
@ -420,6 +426,14 @@ class AstComparator implements AstVisitor<bool> {
|
|||
isEqualTokens(node.name, other.name);
|
||||
}
|
||||
|
||||
@override
|
||||
bool visitDeclaredVariablePattern(DeclaredVariablePattern node) {
|
||||
var other = _other as DeclaredVariablePattern;
|
||||
return isEqualTokens(node.keyword, other.keyword) &&
|
||||
isEqualNodes(node.type, other.type) &&
|
||||
isEqualTokens(node.name, other.name);
|
||||
}
|
||||
|
||||
@override
|
||||
bool visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
|
||||
var other = _other as DefaultFormalParameterImpl;
|
||||
|
@ -1517,13 +1531,6 @@ class AstComparator implements AstVisitor<bool> {
|
|||
isEqualTokens(node.semicolon, other.semicolon);
|
||||
}
|
||||
|
||||
@override
|
||||
bool visitVariablePattern(VariablePattern node) {
|
||||
var other = _other as VariablePattern;
|
||||
return isEqualNodes(node.type, other.type) &&
|
||||
isEqualTokens(node.name, other.name);
|
||||
}
|
||||
|
||||
@override
|
||||
bool visitWhenClause(WhenClause node) {
|
||||
var other = _other as WhenClause;
|
||||
|
|
|
@ -6548,7 +6548,7 @@ abstract class VariableElementImpl extends ElementImpl
|
|||
|
||||
class VariablePatternBindElementImpl extends VariablePatternElementImpl
|
||||
implements VariablePatternBindElement {
|
||||
final VariablePatternImpl node;
|
||||
final DeclaredVariablePatternImpl node;
|
||||
|
||||
VariablePatternBindElementImpl(this.node, super.name, super.offset);
|
||||
}
|
||||
|
|
|
@ -380,6 +380,42 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
_setCodeRange(element, node);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDeclaredVariablePattern(
|
||||
covariant DeclaredVariablePatternImpl node) {
|
||||
node.type?.accept(this);
|
||||
|
||||
final name = node.name.lexeme;
|
||||
if (name != '_') {
|
||||
var element = VariablePatternBindElementImpl(
|
||||
node,
|
||||
name,
|
||||
node.name.offset,
|
||||
);
|
||||
_patternVariables.add(name, element);
|
||||
_elementHolder.enclose(element);
|
||||
_define(element);
|
||||
element.hasImplicitType = node.type == null;
|
||||
element.type = node.type?.type ?? _dynamicType;
|
||||
node.declaredElement = element;
|
||||
|
||||
var patternContext = node.patternContext;
|
||||
if (patternContext is PatternVariableDeclarationImpl) {
|
||||
element.isFinal = patternContext.finalToken != null;
|
||||
var keyword = node.keyword;
|
||||
if (keyword != null) {
|
||||
_errorReporter.reportErrorForToken(
|
||||
CompileTimeErrorCode
|
||||
.VARIABLE_PATTERN_KEYWORD_IN_DECLARATION_CONTEXT,
|
||||
keyword,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
element.isFinal = node.finalToken != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDefaultFormalParameter(covariant DefaultFormalParameterImpl node) {
|
||||
var normalParameter = node.parameter;
|
||||
|
@ -1268,41 +1304,6 @@ class ResolutionVisitor extends RecursiveAstVisitor<void> {
|
|||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitVariablePattern(covariant VariablePatternImpl node) {
|
||||
node.type?.accept(this);
|
||||
|
||||
final name = node.name.lexeme;
|
||||
if (name != '_') {
|
||||
var element = VariablePatternBindElementImpl(
|
||||
node,
|
||||
name,
|
||||
node.name.offset,
|
||||
);
|
||||
_patternVariables.add(name, element);
|
||||
_elementHolder.enclose(element);
|
||||
_define(element);
|
||||
element.hasImplicitType = node.type == null;
|
||||
element.type = node.type?.type ?? _dynamicType;
|
||||
node.declaredElement = element;
|
||||
|
||||
var patternContext = node.patternContext;
|
||||
if (patternContext is PatternVariableDeclarationImpl) {
|
||||
element.isFinal = patternContext.finalToken != null;
|
||||
var keyword = node.keyword;
|
||||
if (keyword != null) {
|
||||
_errorReporter.reportErrorForToken(
|
||||
CompileTimeErrorCode
|
||||
.VARIABLE_PATTERN_KEYWORD_IN_DECLARATION_CONTEXT,
|
||||
keyword,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
element.isFinal = node.finalToken != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Builds the label elements associated with [labels] and stores them in the
|
||||
/// element holder.
|
||||
void _buildLabelElements(
|
||||
|
|
|
@ -5281,7 +5281,13 @@ class AstBuilder extends StackListener {
|
|||
throw UnimplementedError('Patterns not enabled');
|
||||
}
|
||||
var type = pop() as TypeAnnotationImpl?;
|
||||
push(VariablePatternImpl(keyword: keyword, type: type, name: variable));
|
||||
push(
|
||||
DeclaredVariablePatternImpl(
|
||||
keyword: keyword,
|
||||
type: type,
|
||||
name: variable,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -1179,7 +1179,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
|
|||
}
|
||||
|
||||
@override
|
||||
bool isVariablePattern(AstNode pattern) => pattern is VariablePattern;
|
||||
bool isVariablePattern(AstNode pattern) => pattern is DeclaredVariablePattern;
|
||||
|
||||
@override
|
||||
DartType listType(DartType elementType) {
|
||||
|
|
|
@ -59,6 +59,12 @@ class LinterVisitor implements AstVisitor<void> {
|
|||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitAssignedVariablePattern(AssignedVariablePattern node) {
|
||||
_runSubscriptions(node, registry._forAssignedVariablePattern);
|
||||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitAssignmentExpression(AssignmentExpression node) {
|
||||
_runSubscriptions(node, registry._forAssignmentExpression);
|
||||
|
@ -233,6 +239,12 @@ class LinterVisitor implements AstVisitor<void> {
|
|||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDeclaredVariablePattern(DeclaredVariablePattern node) {
|
||||
_runSubscriptions(node, registry._forDeclaredVariablePattern);
|
||||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
_runSubscriptions(node, registry._forDefaultFormalParameter);
|
||||
|
@ -970,12 +982,6 @@ class LinterVisitor implements AstVisitor<void> {
|
|||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitVariablePattern(VariablePattern node) {
|
||||
_runSubscriptions(node, registry._forVariablePattern);
|
||||
node.visitChildren(this);
|
||||
}
|
||||
|
||||
@override
|
||||
void visitWhenClause(WhenClause node) {
|
||||
_runSubscriptions(node, registry._forWhenClause);
|
||||
|
@ -1028,6 +1034,8 @@ class NodeLintRegistry {
|
|||
final List<_Subscription<AsExpression>> _forAsExpression = [];
|
||||
final List<_Subscription<AssertInitializer>> _forAssertInitializer = [];
|
||||
final List<_Subscription<AssertStatement>> _forAssertStatement = [];
|
||||
final List<_Subscription<AssignedVariablePattern>>
|
||||
_forAssignedVariablePattern = [];
|
||||
final List<_Subscription<AssignmentExpression>> _forAssignmentExpression = [];
|
||||
final List<_Subscription<AugmentationImportDirective>>
|
||||
_forAugmentationImportDirective = [];
|
||||
|
@ -1061,6 +1069,8 @@ class NodeLintRegistry {
|
|||
final List<_Subscription<ConstructorSelector>> _forConstructorSelector = [];
|
||||
final List<_Subscription<ContinueStatement>> _forContinueStatement = [];
|
||||
final List<_Subscription<DeclaredIdentifier>> _forDeclaredIdentifier = [];
|
||||
final List<_Subscription<DeclaredVariablePattern>>
|
||||
_forDeclaredVariablePattern = [];
|
||||
final List<_Subscription<DefaultFormalParameter>> _forDefaultFormalParameter =
|
||||
[];
|
||||
final List<_Subscription<DoStatement>> _forDoStatement = [];
|
||||
|
@ -1212,7 +1222,6 @@ class NodeLintRegistry {
|
|||
_forVariableDeclarationList = [];
|
||||
final List<_Subscription<VariableDeclarationStatement>>
|
||||
_forVariableDeclarationStatement = [];
|
||||
final List<_Subscription<VariablePattern>> _forVariablePattern = [];
|
||||
final List<_Subscription<WhenClause>> _forWhenClause = [];
|
||||
final List<_Subscription<WhileStatement>> _forWhileStatement = [];
|
||||
final List<_Subscription<WithClause>> _forWithClause = [];
|
||||
|
@ -1245,6 +1254,11 @@ class NodeLintRegistry {
|
|||
_forAssertStatement.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
||||
void addAssignedVariablePattern(LintRule linter, AstVisitor visitor) {
|
||||
_forAssignedVariablePattern
|
||||
.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
||||
void addAssignmentExpression(LintRule linter, AstVisitor visitor) {
|
||||
_forAssignmentExpression
|
||||
.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
|
@ -1373,6 +1387,11 @@ class NodeLintRegistry {
|
|||
.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
||||
void addDeclaredVariablePattern(LintRule linter, AstVisitor visitor) {
|
||||
_forDeclaredVariablePattern
|
||||
.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
||||
void addDefaultFormalParameter(LintRule linter, AstVisitor visitor) {
|
||||
_forDefaultFormalParameter
|
||||
.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
|
@ -1914,10 +1933,6 @@ class NodeLintRegistry {
|
|||
.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
||||
void addVariablePattern(LintRule linter, AstVisitor visitor) {
|
||||
_forVariablePattern.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
||||
void addWhenClause(LintRule linter, AstVisitor visitor) {
|
||||
_forWhenClause.add(_Subscription(linter, visitor, _getTimer(linter)));
|
||||
}
|
||||
|
|
|
@ -216,6 +216,10 @@ class FindNode {
|
|||
return _node(search, (n) => n is DeclaredIdentifier);
|
||||
}
|
||||
|
||||
DeclaredVariablePattern declaredVariablePattern(String search) {
|
||||
return _node(search, (n) => n is DeclaredVariablePattern);
|
||||
}
|
||||
|
||||
DefaultFormalParameter defaultParameter(String search) {
|
||||
return _node(search, (n) => n is DefaultFormalParameter);
|
||||
}
|
||||
|
@ -732,10 +736,6 @@ class FindNode {
|
|||
return _node(search, (n) => n is VariableDeclarationStatement);
|
||||
}
|
||||
|
||||
VariablePattern variablePattern(String search) {
|
||||
return _node(search, (n) => n is VariablePattern);
|
||||
}
|
||||
|
||||
WhenClause whenClause(String search) {
|
||||
return _node(search, (n) => n is WhenClause);
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3737,7 +3737,7 @@ void f(x) {
|
|||
''');
|
||||
_assertSource(
|
||||
'int? _',
|
||||
findNode.variablePattern('int?'),
|
||||
findNode.declaredVariablePattern('int?'),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ void f(x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -32,7 +32,7 @@ BinaryPattern
|
|||
type: int
|
||||
name: _
|
||||
operator: &&
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: double
|
||||
|
@ -55,7 +55,7 @@ void f(x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -64,7 +64,7 @@ BinaryPattern
|
|||
type: int
|
||||
name: _
|
||||
operator: &&
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: double
|
||||
|
@ -89,12 +89,12 @@ PatternVariableDeclarationStatement
|
|||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@18
|
||||
type: int
|
||||
operator: &&
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
name: b
|
||||
declaredElement: hasImplicitType b@23
|
||||
type: int
|
||||
|
@ -116,7 +116,7 @@ void f(x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -125,7 +125,7 @@ BinaryPattern
|
|||
type: int
|
||||
name: _
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: double
|
||||
|
@ -148,7 +148,7 @@ void f(x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -157,7 +157,7 @@ BinaryPattern
|
|||
type: int
|
||||
name: _
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: double
|
||||
|
|
|
@ -23,7 +23,7 @@ void f(x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
CastPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@29
|
||||
|
@ -79,7 +79,7 @@ PatternVariableDeclaration
|
|||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: CastPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@19
|
||||
type: int
|
||||
|
|
|
@ -8,12 +8,12 @@ import 'context_collection_resolution.dart';
|
|||
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
defineReflectiveTests(VariablePatternResolutionTest);
|
||||
defineReflectiveTests(DeclaredVariablePatternResolutionTest);
|
||||
});
|
||||
}
|
||||
|
||||
@reflectiveTest
|
||||
class VariablePatternResolutionTest extends PubPackageResolutionTest {
|
||||
class DeclaredVariablePatternResolutionTest extends PubPackageResolutionTest {
|
||||
test_final_switchCase() async {
|
||||
await assertNoErrorsInCode(r'''
|
||||
void f(int x) {
|
||||
|
@ -25,7 +25,7 @@ void f(int x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: y
|
||||
declaredElement: hasImplicitType isFinal y@46
|
||||
|
@ -44,7 +44,7 @@ void f(x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: final
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
|
@ -69,7 +69,7 @@ void f(x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -93,7 +93,7 @@ void f(x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -115,7 +115,7 @@ void f<T>(T x) {
|
|||
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@54
|
||||
|
@ -137,7 +137,7 @@ void f() {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@95
|
||||
|
@ -153,7 +153,7 @@ void f(int x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@33
|
||||
|
@ -169,7 +169,7 @@ void f(Never? x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@36
|
||||
|
@ -185,7 +185,7 @@ void f(Null x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@34
|
||||
|
@ -207,7 +207,7 @@ void f() {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@95
|
||||
|
@ -226,7 +226,7 @@ void f(int x) {
|
|||
''');
|
||||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@44
|
||||
|
@ -246,7 +246,7 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
CastPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@44
|
|
@ -86,7 +86,7 @@ IfElement
|
|||
pattern: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -159,7 +159,7 @@ IfElement
|
|||
caseClause: CaseClause
|
||||
caseKeyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
|
|
@ -67,7 +67,7 @@ IfStatement
|
|||
caseKeyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -81,7 +81,7 @@ IfStatement
|
|||
rightOperand: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -146,7 +146,7 @@ IfStatement
|
|||
caseKeyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -160,7 +160,7 @@ IfStatement
|
|||
rightOperand: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: final
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
|
@ -226,7 +226,7 @@ IfStatement
|
|||
caseKeyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -240,7 +240,7 @@ IfStatement
|
|||
rightOperand: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: double
|
||||
|
@ -307,7 +307,7 @@ IfStatement
|
|||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -381,7 +381,7 @@ IfStatement
|
|||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -392,7 +392,7 @@ IfStatement
|
|||
declaredElement: a@37
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -459,7 +459,7 @@ IfStatement
|
|||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -470,7 +470,7 @@ IfStatement
|
|||
declaredElement: a@37
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -481,7 +481,7 @@ IfStatement
|
|||
declaredElement: a@46
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -545,7 +545,7 @@ IfStatement
|
|||
guardedPattern: GuardedPattern
|
||||
pattern: BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -561,7 +561,7 @@ IfStatement
|
|||
literal: 2
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -631,7 +631,7 @@ IfStatement
|
|||
literal: 1
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -705,7 +705,7 @@ IfStatement
|
|||
literal: 1
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -716,7 +716,7 @@ IfStatement
|
|||
declaredElement: a@42
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -791,7 +791,7 @@ IfStatement
|
|||
pattern: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -875,7 +875,7 @@ IfStatement
|
|||
caseClause: CaseClause
|
||||
caseKeyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
|
|
@ -28,7 +28,7 @@ void f(x) {
|
|||
ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -57,7 +57,7 @@ void f(x) {
|
|||
ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@41
|
||||
|
@ -91,7 +91,7 @@ ListPattern
|
|||
rightBracket: >
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@46
|
||||
|
@ -140,7 +140,7 @@ ListPattern
|
|||
staticType: int
|
||||
RestPatternElement
|
||||
operator: ...
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: rest
|
||||
declaredElement: hasImplicitType rest@46
|
||||
|
@ -164,7 +164,7 @@ void f(List<int> x) {
|
|||
ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@51
|
||||
|
@ -198,7 +198,7 @@ ListPattern
|
|||
rightBracket: >
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@56
|
||||
|
@ -263,7 +263,7 @@ void f(Object x) {
|
|||
ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -292,7 +292,7 @@ void f(Object x) {
|
|||
ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@48
|
||||
|
@ -359,7 +359,7 @@ ListPattern
|
|||
rightBracket: >
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -398,7 +398,7 @@ ListPattern
|
|||
rightBracket: >
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@53
|
||||
|
@ -421,7 +421,7 @@ PatternVariableDeclaration
|
|||
pattern: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@29
|
||||
type: int
|
||||
|
@ -460,7 +460,7 @@ PatternVariableDeclaration
|
|||
rightBracket: >
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@23
|
||||
type: int
|
||||
|
@ -497,7 +497,7 @@ PatternVariableDeclaration
|
|||
pattern: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
|
|
@ -34,7 +34,7 @@ MapPattern
|
|||
literal: 0
|
||||
staticType: int
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: String
|
||||
|
@ -68,7 +68,7 @@ MapPattern
|
|||
literal: 0
|
||||
staticType: int
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@44
|
||||
|
@ -113,7 +113,7 @@ MapPattern
|
|||
literal: 0
|
||||
staticType: int
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@57
|
||||
|
@ -173,7 +173,7 @@ MapPattern
|
|||
literal: ''
|
||||
RestPatternElement
|
||||
operator: ...
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: rest
|
||||
declaredElement: hasImplicitType rest@57
|
||||
|
@ -199,7 +199,7 @@ MapPattern
|
|||
literal: 0
|
||||
staticType: int
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@50
|
||||
|
@ -241,7 +241,7 @@ MapPattern
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@62
|
||||
|
@ -307,7 +307,7 @@ MapPattern
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -338,7 +338,7 @@ MapPattern
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@43
|
||||
|
@ -421,7 +421,7 @@ MapPattern
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@54
|
||||
|
@ -482,7 +482,7 @@ PatternVariableDeclaration
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@40
|
||||
type: int
|
||||
|
@ -532,7 +532,7 @@ PatternVariableDeclaration
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@35
|
||||
type: int
|
||||
|
@ -574,7 +574,7 @@ PatternVariableDeclaration
|
|||
literal: true
|
||||
staticType: bool
|
||||
separator: :
|
||||
value: VariablePattern
|
||||
value: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
|
|
@ -107,7 +107,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo2
|
||||
declaredElement: hasImplicitType foo2@90
|
||||
|
@ -225,7 +225,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@83
|
||||
|
@ -263,7 +263,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo2
|
||||
declaredElement: hasImplicitType foo2@84
|
||||
|
@ -338,7 +338,7 @@ ObjectPattern
|
|||
RecordPatternField
|
||||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo
|
||||
declaredElement: hasImplicitType foo@81
|
||||
|
@ -376,7 +376,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo
|
||||
declaredElement: hasImplicitType foo@82
|
||||
|
@ -416,7 +416,7 @@ ObjectPattern
|
|||
colon: :
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo
|
||||
declaredElement: hasImplicitType foo@82
|
||||
|
@ -491,7 +491,7 @@ ObjectPattern
|
|||
RecordPatternField
|
||||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo
|
||||
declaredElement: hasImplicitType foo@65
|
||||
|
@ -527,7 +527,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@77
|
||||
|
@ -580,7 +580,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@145
|
||||
|
@ -621,7 +621,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@141
|
||||
|
@ -658,7 +658,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: hashCode
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@90
|
||||
|
@ -697,7 +697,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@85
|
||||
|
@ -734,7 +734,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@73
|
||||
|
@ -771,7 +771,7 @@ ObjectPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: $0
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@71
|
||||
|
@ -808,7 +808,7 @@ PatternVariableDeclaration
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@32
|
||||
type: int
|
||||
|
@ -862,7 +862,7 @@ PatternVariableDeclaration
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@29
|
||||
type: int
|
||||
|
@ -918,7 +918,7 @@ PatternVariableDeclaration
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
|
|
@ -30,7 +30,7 @@ PatternVariableDeclarationStatement
|
|||
keyword: final
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: num
|
||||
|
@ -63,7 +63,7 @@ PatternVariableDeclarationStatement
|
|||
keyword: final
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@20
|
||||
type: int
|
||||
|
@ -91,7 +91,7 @@ PatternVariableDeclarationStatement
|
|||
keyword: var
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@18
|
||||
type: A
|
||||
|
@ -128,7 +128,7 @@ PatternVariableDeclarationStatement
|
|||
keyword: var
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: num
|
||||
|
@ -162,7 +162,7 @@ PatternVariableDeclarationStatement
|
|||
keyword: var
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -204,7 +204,7 @@ PatternVariableDeclarationStatement
|
|||
keyword: var
|
||||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@18
|
||||
type: int
|
||||
|
@ -232,13 +232,13 @@ PatternVariableDeclarationStatement
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@33
|
||||
type: int
|
||||
fieldElement: <null>
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: b
|
||||
declaredElement: hasImplicitType b@36
|
||||
type: String
|
||||
|
|
|
@ -23,7 +23,7 @@ void f(int? x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@34
|
||||
|
@ -44,7 +44,7 @@ void f(int? x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@45
|
||||
|
@ -66,7 +66,7 @@ PatternVariableDeclaration
|
|||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@24
|
||||
type: int
|
||||
|
@ -89,7 +89,7 @@ void f(int? x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@34
|
||||
|
@ -110,7 +110,7 @@ void f(int? x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@45
|
||||
|
|
|
@ -50,7 +50,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@46
|
||||
|
@ -73,7 +73,7 @@ void f(x) {
|
|||
assertResolvedNodeText(node, r'''
|
||||
ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@41
|
||||
|
@ -144,7 +144,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -177,7 +177,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@54
|
||||
|
@ -226,7 +226,7 @@ RecordPattern
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -256,7 +256,7 @@ RecordPattern
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@49
|
||||
|
@ -284,7 +284,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: a
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: b
|
||||
declaredElement: hasImplicitType b@47
|
||||
|
@ -311,7 +311,7 @@ RecordPattern
|
|||
RecordPatternField
|
||||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@46
|
||||
|
@ -338,7 +338,7 @@ RecordPattern
|
|||
RecordPatternField
|
||||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@53
|
||||
|
@ -365,7 +365,7 @@ RecordPattern
|
|||
RecordPatternField
|
||||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@60
|
||||
|
@ -390,7 +390,7 @@ RecordPattern
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@44
|
||||
|
@ -415,7 +415,7 @@ RecordPattern
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@55
|
||||
|
@ -457,7 +457,7 @@ RecordPattern
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@69
|
||||
|
@ -467,14 +467,14 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: b
|
||||
declaredElement: hasImplicitType b@81
|
||||
type: String
|
||||
fieldElement: <null>
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: c
|
||||
declaredElement: hasImplicitType c@88
|
||||
|
@ -502,7 +502,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: bar
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@58
|
||||
|
@ -530,7 +530,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
name: foo
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: y
|
||||
declaredElement: hasImplicitType y@58
|
||||
|
@ -585,7 +585,7 @@ RecordPattern
|
|||
RecordPatternField
|
||||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo
|
||||
declaredElement: hasImplicitType foo@55
|
||||
|
@ -613,7 +613,7 @@ RecordPattern
|
|||
fieldName: RecordPatternFieldName
|
||||
colon: :
|
||||
pattern: PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: foo
|
||||
declaredElement: hasImplicitType foo@56
|
||||
|
@ -639,7 +639,7 @@ RecordPattern
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@48
|
||||
|
@ -663,13 +663,13 @@ PatternVariableDeclaration
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@33
|
||||
type: int
|
||||
fieldElement: <null>
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: b
|
||||
declaredElement: hasImplicitType b@36
|
||||
type: String
|
||||
|
@ -699,7 +699,7 @@ PatternVariableDeclaration
|
|||
leftParenthesis: (
|
||||
fields
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -711,7 +711,7 @@ PatternVariableDeclaration
|
|||
type: int
|
||||
fieldElement: <null>
|
||||
RecordPatternField
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: String
|
||||
|
|
|
@ -42,7 +42,7 @@ SwitchExpression
|
|||
cases
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: MethodInvocation
|
||||
|
@ -75,7 +75,7 @@ void f(Object? x, int Function() a) {
|
|||
assertResolvedNodeText(node, r'''
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: FunctionExpressionInvocation
|
||||
|
@ -200,7 +200,7 @@ SwitchExpression
|
|||
cases
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: IntegerLiteral
|
||||
|
@ -245,7 +245,7 @@ SwitchExpression
|
|||
staticType: int
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: NullLiteral
|
||||
|
@ -290,7 +290,7 @@ SwitchExpression
|
|||
staticType: int
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: IntegerLiteral
|
||||
|
@ -332,7 +332,7 @@ SwitchExpression
|
|||
pattern: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -373,7 +373,7 @@ SwitchExpression
|
|||
staticType: int
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: IntegerLiteral
|
||||
|
@ -410,7 +410,7 @@ SwitchExpression
|
|||
cases
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -442,7 +442,7 @@ SwitchExpression
|
|||
staticType: int
|
||||
SwitchExpressionCase
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
name: _
|
||||
arrow: =>
|
||||
expression: SimpleIdentifier
|
||||
|
|
|
@ -262,7 +262,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -291,7 +291,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -354,7 +354,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
|
@ -384,7 +384,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
|
@ -448,7 +448,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
|
@ -478,7 +478,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: num
|
||||
|
@ -541,7 +541,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -570,7 +570,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: num
|
||||
|
@ -641,7 +641,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -704,7 +704,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -775,7 +775,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -850,7 +850,7 @@ SwitchStatement
|
|||
colon: :
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -919,7 +919,7 @@ SwitchStatement
|
|||
pattern: ListPattern
|
||||
leftBracket: [
|
||||
elements
|
||||
VariablePattern
|
||||
DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
@ -990,7 +990,7 @@ SwitchStatement
|
|||
SwitchPatternCase
|
||||
keyword: case
|
||||
guardedPattern: GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
type: NamedType
|
||||
name: SimpleIdentifier
|
||||
token: int
|
||||
|
|
|
@ -19,6 +19,7 @@ import 'constant_pattern_test.dart' as constant_pattern;
|
|||
import 'constant_test.dart' as constant;
|
||||
import 'constructor_reference_test.dart' as constructor_reference;
|
||||
import 'constructor_test.dart' as constructor;
|
||||
import 'declared_variable_pattern_test.dart' as declared_variable_pattern;
|
||||
import 'enum_test.dart' as enum_resolution;
|
||||
import 'extension_method_test.dart' as extension_method;
|
||||
import 'extension_override_test.dart' as extension_override;
|
||||
|
@ -88,7 +89,6 @@ import 'try_statement_test.dart' as try_statement;
|
|||
import 'type_inference/test_all.dart' as type_inference;
|
||||
import 'type_literal_test.dart' as type_literal;
|
||||
import 'type_name_test.dart' as type_name;
|
||||
import 'variable_pattern_test.dart' as variable_pattern;
|
||||
import 'variance_test.dart' as variance_test;
|
||||
import 'yield_statement_test.dart' as yield_statement;
|
||||
|
||||
|
@ -107,8 +107,9 @@ main() {
|
|||
constant_pattern.main();
|
||||
comment.main();
|
||||
constant.main();
|
||||
constructor.main();
|
||||
constructor_reference.main();
|
||||
constructor.main();
|
||||
declared_variable_pattern.main();
|
||||
enum_resolution.main();
|
||||
extension_method.main();
|
||||
extension_override.main();
|
||||
|
@ -173,7 +174,6 @@ main() {
|
|||
type_inference.main();
|
||||
type_literal.main();
|
||||
type_name.main();
|
||||
variable_pattern.main();
|
||||
variance_test.main();
|
||||
yield_statement.main();
|
||||
defineReflectiveTests(UpdateNodeTextExpectations);
|
||||
|
|
|
@ -27,13 +27,13 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@33
|
||||
type: int
|
||||
operator: &&
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@42
|
||||
|
@ -56,13 +56,13 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@44
|
||||
type: int
|
||||
operator: &&
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: var
|
||||
name: a
|
||||
declaredElement: hasImplicitType a@53
|
||||
|
|
|
@ -27,7 +27,7 @@ void f(int x) {
|
|||
final node1 = findNode.caseClause('case final a').guardedPattern;
|
||||
assertResolvedNodeText(node1, r'''
|
||||
GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
|
@ -37,7 +37,7 @@ GuardedPattern
|
|||
final node2 = findNode.caseClause('case final b').guardedPattern;
|
||||
assertResolvedNodeText(node2, r'''
|
||||
GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: b
|
||||
declaredElement: hasImplicitType isFinal b@61
|
||||
|
@ -56,7 +56,7 @@ void f(int x) {
|
|||
final node1 = findNode.caseClause('case final a').guardedPattern;
|
||||
assertResolvedNodeText(node1, r'''
|
||||
GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
|
@ -66,7 +66,7 @@ GuardedPattern
|
|||
final node2 = findNode.caseClause('case final b').guardedPattern;
|
||||
assertResolvedNodeText(node2, r'''
|
||||
GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: b
|
||||
declaredElement: hasImplicitType isFinal b@60
|
||||
|
@ -83,13 +83,13 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@46
|
||||
|
@ -112,13 +112,13 @@ BinaryPattern
|
|||
literal: 0
|
||||
staticType: int
|
||||
operator: &&
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@40
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@51
|
||||
|
@ -137,7 +137,7 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
|
@ -166,7 +166,7 @@ BinaryPattern
|
|||
literal: 1
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@40
|
||||
|
@ -187,7 +187,7 @@ void f(int x) {
|
|||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
|
@ -217,13 +217,13 @@ void f(int x) {
|
|||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@46
|
||||
|
@ -246,19 +246,19 @@ void f(int x) {
|
|||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@46
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@57
|
||||
|
@ -278,7 +278,7 @@ void f(int x) {
|
|||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@35
|
||||
|
@ -289,7 +289,7 @@ BinaryPattern
|
|||
literal: 2
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@51
|
||||
|
@ -315,7 +315,7 @@ BinaryPattern
|
|||
literal: 1
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@40
|
||||
|
@ -345,13 +345,13 @@ BinaryPattern
|
|||
literal: 1
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@40
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@51
|
||||
|
@ -381,7 +381,7 @@ BinaryPattern
|
|||
literal: 2
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@45
|
||||
|
@ -401,13 +401,13 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@46
|
||||
type: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@57
|
||||
|
@ -429,7 +429,7 @@ void f(int x) {
|
|||
final node = findNode.singleGuardedPattern.pattern;
|
||||
assertResolvedNodeText(node, r'''
|
||||
BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@46
|
||||
|
@ -461,7 +461,7 @@ BinaryPattern
|
|||
literal: 1
|
||||
staticType: int
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@51
|
||||
|
@ -483,7 +483,7 @@ void f(int x) {
|
|||
final node1 = findNode.switchPatternCase('case /*1*/').guardedPattern;
|
||||
assertResolvedNodeText(node1, r'''
|
||||
GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@52
|
||||
|
@ -493,7 +493,7 @@ GuardedPattern
|
|||
final node2 = findNode.switchPatternCase('case /*2*/').guardedPattern;
|
||||
assertResolvedNodeText(node2, r'''
|
||||
GuardedPattern
|
||||
pattern: VariablePattern
|
||||
pattern: DeclaredVariablePattern
|
||||
keyword: final
|
||||
name: a
|
||||
declaredElement: hasImplicitType isFinal a@76
|
||||
|
|
|
@ -61,10 +61,10 @@ PatternVariableDeclaration
|
|||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: BinaryPattern
|
||||
leftOperand: VariablePattern
|
||||
leftOperand: DeclaredVariablePattern
|
||||
name: _
|
||||
operator: ||
|
||||
rightOperand: VariablePattern
|
||||
rightOperand: DeclaredVariablePattern
|
||||
name: _
|
||||
rightParenthesis: )
|
||||
equals: =
|
||||
|
@ -91,7 +91,7 @@ PatternVariableDeclaration
|
|||
pattern: ParenthesizedPattern
|
||||
leftParenthesis: (
|
||||
pattern: PostfixPattern
|
||||
operand: VariablePattern
|
||||
operand: DeclaredVariablePattern
|
||||
name: _
|
||||
operator: ?
|
||||
rightParenthesis: )
|
||||
|
|
|
@ -375,6 +375,29 @@ class ResolvedAstPrinter extends ThrowingAstVisitor<void> {
|
|||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDeclaredVariablePattern(
|
||||
covariant DeclaredVariablePatternImpl node,
|
||||
) {
|
||||
_writeln('DeclaredVariablePattern');
|
||||
_withIndent(() {
|
||||
_writeNamedChildEntities(node);
|
||||
if (_withResolution) {
|
||||
final element = node.declaredElement;
|
||||
if (element != null) {
|
||||
_sink.write(_indent);
|
||||
_sink.write('declaredElement: ');
|
||||
_writeIf(element.hasImplicitType, 'hasImplicitType ');
|
||||
_writeIf(element.isFinal, 'isFinal ');
|
||||
_sink.writeln('${element.name}@${element.nameOffset}');
|
||||
_withIndent(() {
|
||||
_writeType('type', element.type);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void visitDefaultFormalParameter(DefaultFormalParameter node) {
|
||||
_writeln('DefaultFormalParameter');
|
||||
|
@ -1488,27 +1511,6 @@ class ResolvedAstPrinter extends ThrowingAstVisitor<void> {
|
|||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void visitVariablePattern(covariant VariablePatternImpl node) {
|
||||
_writeln('VariablePattern');
|
||||
_withIndent(() {
|
||||
_writeNamedChildEntities(node);
|
||||
if (_withResolution) {
|
||||
final element = node.declaredElement;
|
||||
if (element != null) {
|
||||
_sink.write(_indent);
|
||||
_sink.write('declaredElement: ');
|
||||
_writeIf(element.hasImplicitType, 'hasImplicitType ');
|
||||
_writeIf(element.isFinal, 'isFinal ');
|
||||
_sink.writeln('${element.name}@${element.nameOffset}');
|
||||
_withIndent(() {
|
||||
_writeType('type', element.type);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void visitWhenClause(WhenClause node) {
|
||||
_writeln('WhenClause');
|
||||
|
|
Loading…
Reference in a new issue