[cfe] Add ScopeProvider as an interface of Field
Part of https://github.com/dart-lang/sdk/issues/61572 Change-Id: I8a9cb883181a584ceac9aef6a863e135474026eb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/495960 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
committed by
dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent
8f1336e49e
commit
fac280bd7e
@@ -264,7 +264,7 @@ sealed class Member extends NamedNode implements Annotatable, FileUriNode {
|
||||
///
|
||||
/// The implied getter and setter for the field are not represented explicitly,
|
||||
/// but can be made explicit if needed.
|
||||
class Field extends Member {
|
||||
class Field extends Member implements ScopeProvider {
|
||||
DartType type; // Not null. Defaults to DynamicType.
|
||||
int flags = 0;
|
||||
Expression? initializer; // May be null.
|
||||
@@ -291,6 +291,9 @@ class Field extends Member {
|
||||
/// in the field values of [InstanceConstant].
|
||||
Reference get fieldReference => super.reference;
|
||||
|
||||
@override
|
||||
Scope? scope;
|
||||
|
||||
Field.mutable(
|
||||
Name name, {
|
||||
this.type = const DynamicType(),
|
||||
|
||||
@@ -2342,6 +2342,9 @@ class EquivalenceStrategy {
|
||||
if (!checkField_setterReference(visitor, node, other)) {
|
||||
result = visitor.resultOnInequivalence;
|
||||
}
|
||||
if (!checkField_scope(visitor, node, other)) {
|
||||
result = visitor.resultOnInequivalence;
|
||||
}
|
||||
if (!checkField_fileEndOffset(visitor, node, other)) {
|
||||
result = visitor.resultOnInequivalence;
|
||||
}
|
||||
@@ -8030,6 +8033,10 @@ class EquivalenceStrategy {
|
||||
);
|
||||
}
|
||||
|
||||
bool checkField_scope(EquivalenceVisitor visitor, Field node, Field other) {
|
||||
return visitor.checkNodes(node.scope, other.scope, 'scope');
|
||||
}
|
||||
|
||||
bool checkMember_fileEndOffset(
|
||||
EquivalenceVisitor visitor,
|
||||
Member node,
|
||||
|
||||
@@ -1345,6 +1345,9 @@ class Printer extends VisitorDefault<void> with VisitorVoidMixin {
|
||||
writeSpace();
|
||||
writeAnnotatedType(node.type, annotator?.annotateField(this, node));
|
||||
writeName(getMemberName(node), showLibrary: true);
|
||||
if (node.scope case Scope scope?) {
|
||||
writeScope(scope);
|
||||
}
|
||||
Expression? initializer = node.initializer;
|
||||
if (initializer != null) {
|
||||
writeSpaced('=');
|
||||
|
||||
Reference in New Issue
Block a user