Extension type. Issue 53752. Update ToSourceVisitor.

Bug: https://github.com/dart-lang/sdk/issues/53752
Change-Id: I334bb2f01fcb9327c2a04f2252740501a3874fe7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/330993
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov 2023-10-18 20:29:12 +00:00 committed by Commit Queue
parent 6968295dfb
commit e638793918
2 changed files with 34 additions and 0 deletions

View file

@ -465,6 +465,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitToken(node.name); _visitToken(node.name);
_visitNode(node.typeParameters); _visitNode(node.typeParameters);
_visitNode(node.representation, suffix: ' '); _visitNode(node.representation, suffix: ' ');
_visitNode(node.implementsClause, suffix: ' ');
_visitToken(node.leftBracket); _visitToken(node.leftBracket);
_visitNodeList(node.members, separator: ' '); _visitNodeList(node.members, separator: ' ');
_visitToken(node.rightBracket); _visitToken(node.rightBracket);
@ -1167,6 +1168,7 @@ class ToSourceVisitor implements AstVisitor<void> {
void visitRepresentationDeclaration(RepresentationDeclaration node) { void visitRepresentationDeclaration(RepresentationDeclaration node) {
_visitNode(node.constructorName); _visitNode(node.constructorName);
_visitToken(node.leftParenthesis); _visitToken(node.leftParenthesis);
_visitNodeList(node.fieldMetadata, separator: ' ', suffix: ' ');
_visitNode(node.fieldType, suffix: ' '); _visitNode(node.fieldType, suffix: ' ');
_visitToken(node.fieldName); _visitToken(node.fieldName);
_visitToken(node.rightParenthesis); _visitToken(node.rightParenthesis);

View file

@ -21,6 +21,14 @@ main() {
@reflectiveTest @reflectiveTest
class ToSourceVisitorTest extends ParserDiagnosticsTest { class ToSourceVisitorTest extends ParserDiagnosticsTest {
void test_representationDeclaration() {
final code = '(@foo int it)';
final findNode = _parseStringToFindNode('''
extension type E$code {}
''');
_assertSource(code, findNode.singleRepresentationDeclaration);
}
void test_visitAdjacentStrings() { void test_visitAdjacentStrings() {
var findNode = _parseStringToFindNode(r''' var findNode = _parseStringToFindNode(r'''
var v = 'a' 'b'; var v = 'a' 'b';
@ -1281,6 +1289,30 @@ $code
// [AstTestFactory.identifier3('o')]))); // [AstTestFactory.identifier3('o')])));
} }
void test_visitExtensionType() {
final code = 'extension type E(int it) {}';
final findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.singleExtensionTypeDeclaration);
}
void test_visitExtensionType_implements() {
final code = 'extension type E(int it) implements num {}';
final findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.singleExtensionTypeDeclaration);
}
void test_visitExtensionType_method() {
final code = 'extension type E(int it) {void foo() {}}';
final findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.singleExtensionTypeDeclaration);
}
void test_visitFieldDeclaration_abstract() { void test_visitFieldDeclaration_abstract() {
final code = 'abstract var a;'; final code = 'abstract var a;';
final findNode = _parseStringToFindNode(''' final findNode = _parseStringToFindNode('''