Add visitRecordElement() and friends.
Change-Id: I8323d6c34b27b15f2453642a8f3f64763798c071
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255580
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 444e18a..7b0db63 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -1061,6 +1061,12 @@
R? visitPropertyAccessorElement(PropertyAccessorElement element);
+ R? visitRecordElement(RecordElement element);
+
+ R? visitRecordNamedFieldElement(RecordNamedFieldElement element);
+
+ R? visitRecordPositionalFieldElement(RecordPositionalFieldElement element);
+
R? visitSuperFormalParameterElement(SuperFormalParameterElement element);
R? visitTopLevelVariableElement(TopLevelVariableElement element);
diff --git a/pkg/analyzer/lib/dart/element/visitor.dart b/pkg/analyzer/lib/dart/element/visitor.dart
index c5de555..3d93e15 100644
--- a/pkg/analyzer/lib/dart/element/visitor.dart
+++ b/pkg/analyzer/lib/dart/element/visitor.dart
@@ -196,6 +196,17 @@
visitVariableElement(element);
@override
+ R? visitRecordElement(RecordElement element) => visitElement(element);
+
+ @override
+ R? visitRecordNamedFieldElement(RecordNamedFieldElement element) =>
+ visitElement(element);
+
+ @override
+ R? visitRecordPositionalFieldElement(RecordPositionalFieldElement element) =>
+ visitElement(element);
+
+ @override
R? visitSuperFormalParameterElement(SuperFormalParameterElement element) =>
visitParameterElement(element);
@@ -381,6 +392,24 @@
}
@override
+ R? visitRecordElement(RecordElement element) {
+ element.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R? visitRecordNamedFieldElement(RecordNamedFieldElement element) {
+ element.visitChildren(this);
+ return null;
+ }
+
+ @override
+ R? visitRecordPositionalFieldElement(RecordPositionalFieldElement element) {
+ element.visitChildren(this);
+ return null;
+ }
+
+ @override
R? visitSuperFormalParameterElement(SuperFormalParameterElement element) {
element.visitChildren(this);
return null;
@@ -496,6 +525,16 @@
R? visitPropertyAccessorElement(PropertyAccessorElement element) => null;
@override
+ R? visitRecordElement(RecordElement element) => null;
+
+ @override
+ R? visitRecordNamedFieldElement(RecordNamedFieldElement element) => null;
+
+ @override
+ R? visitRecordPositionalFieldElement(RecordPositionalFieldElement element) =>
+ null;
+
+ @override
R? visitSuperFormalParameterElement(SuperFormalParameterElement element) =>
null;
@@ -605,6 +644,17 @@
_throw(element);
@override
+ R? visitRecordElement(RecordElement element) => _throw(element);
+
+ @override
+ R? visitRecordNamedFieldElement(RecordNamedFieldElement element) =>
+ _throw(element);
+
+ @override
+ R? visitRecordPositionalFieldElement(RecordPositionalFieldElement element) =>
+ _throw(element);
+
+ @override
R? visitSuperFormalParameterElement(SuperFormalParameterElement element) =>
_throw(element);
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index cbceaa5..b8d7855 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -6206,8 +6206,7 @@
@override
T? accept<T>(ElementVisitor<T> visitor) {
- // TODO: implement accept
- throw UnimplementedError();
+ return visitor.visitRecordElement(this);
}
@override
@@ -6224,6 +6223,13 @@
);
}
+ @override
+ void visitChildren(ElementVisitor visitor) {
+ super.visitChildren(visitor);
+ safelyVisitChildren(positionalFields, visitor);
+ safelyVisitChildren(namedFields, visitor);
+ }
+
/// Returns [fields], if already sorted, or the sorted copy.
static List<RecordNamedFieldElementImpl> _sortNamedFields(
List<RecordNamedFieldElementImpl> fields,
@@ -6247,7 +6253,7 @@
}
}
-class RecordFieldElementImpl extends _ExistingElementImpl
+abstract class RecordFieldElementImpl extends _ExistingElementImpl
implements RecordFieldElement {
@override
DartType type;
@@ -6264,12 +6270,6 @@
@override
ElementKind get kind => ElementKind.RECORD;
-
- @override
- T? accept<T>(ElementVisitor<T> visitor) {
- // TODO: implement accept
- throw UnimplementedError();
- }
}
class RecordNamedFieldElementImpl extends RecordFieldElementImpl
@@ -6282,6 +6282,11 @@
@override
String get name => super.name!;
+
+ @override
+ T? accept<T>(ElementVisitor<T> visitor) {
+ return visitor.visitRecordNamedFieldElement(this);
+ }
}
class RecordPositionalFieldElementImpl extends RecordFieldElementImpl
@@ -6291,6 +6296,11 @@
required super.nameOffset,
required super.type,
});
+
+ @override
+ T? accept<T>(ElementVisitor<T> visitor) {
+ return visitor.visitRecordPositionalFieldElement(this);
+ }
}
/// A concrete implementation of a [ShowElementCombinator].