Skip to content

Commit 6fd92fb

Browse files
authored
Format trivial expressions: null, doubles, this, symbols. (#1286)
Also use asserts() in some visit methods that we don't expect to be reachable because those AST nodes and handled at a higher level.
1 parent fe55b0d commit 6fd92fb

File tree

2 files changed

+40
-13
lines changed

2 files changed

+40
-13
lines changed

lib/src/front_end/ast_node_visitor.dart

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -193,18 +193,17 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
193193

194194
@override
195195
void visitComment(Comment node) {
196-
throw UnimplementedError();
196+
assert(false, 'Comments should be handled elsewhere.');
197197
}
198198

199199
@override
200200
void visitCommentReference(CommentReference node) {
201-
throw UnimplementedError();
201+
assert(false, 'Comments should be handled elsewhere.');
202202
}
203203

204204
@override
205205
void visitCompilationUnit(CompilationUnit node) {
206-
throw UnsupportedError(
207-
'CompilationUnit should be handled directly by format().');
206+
assert(false, 'CompilationUnit should be handled directly by format().');
208207
}
209208

210209
@override
@@ -281,7 +280,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
281280

282281
@override
283282
void visitDoubleLiteral(DoubleLiteral node) {
284-
throw UnimplementedError();
283+
token(node.literal);
285284
}
286285

287286
@override
@@ -432,7 +431,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
432431

433432
@override
434433
void visitHideCombinator(HideCombinator node) {
435-
throw UnimplementedError();
434+
assert(false, 'Combinators are handled by createImport().');
436435
}
437436

438437
@override
@@ -501,13 +500,11 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
501500
@override
502501
void visitLabeledStatement(LabeledStatement node) {
503502
var sequence = SequenceBuilder(this);
504-
505503
for (var label in node.labels) {
506504
sequence.add(label);
507505
}
508506

509507
sequence.add(node.statement);
510-
511508
writer.push(sequence.build());
512509
}
513510

@@ -629,7 +626,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
629626

630627
@override
631628
void visitNullLiteral(NullLiteral node) {
632-
throw UnimplementedError();
629+
token(node.literal);
633630
}
634631

635632
@override
@@ -789,7 +786,7 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
789786

790787
@override
791788
void visitShowCombinator(ShowCombinator node) {
792-
throw UnimplementedError();
789+
assert(false, 'Combinators are handled by createImport().');
793790
}
794791

795792
@override
@@ -849,12 +846,18 @@ class AstNodeVisitor extends ThrowingAstVisitor<void>
849846

850847
@override
851848
void visitSymbolLiteral(SymbolLiteral node) {
852-
throw UnimplementedError();
849+
token(node.poundSign);
850+
var components = node.components;
851+
for (var component in components) {
852+
// The '.' separator.
853+
if (component != components.first) token(component.previous);
854+
token(component);
855+
}
853856
}
854857

855858
@override
856859
void visitThisExpression(ThisExpression node) {
857-
throw UnimplementedError();
860+
token(node.thisKeyword);
858861
}
859862

860863
@override

test/expression/other.stmt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
40 columns |
2+
>>> Null literal.
3+
null ;
4+
<<<
5+
null;
6+
>>> Double literal.
7+
12.34;
8+
<<<
9+
12.34;
210
>>> Parenthesized.
311
( (
412

@@ -8,4 +16,20 @@ expression
816

917
) );
1018
<<<
11-
((expression));
19+
((expression));
20+
>>> This.
21+
this ;
22+
<<<
23+
this;
24+
>>> Unqualified symbol.
25+
# foo ;
26+
<<<
27+
#foo;
28+
>>> Qualified symbol
29+
# foo . bar . baz ;
30+
<<<
31+
#foo.bar.baz;
32+
>>> Long qualified symbols do not split.
33+
#longComponent.anotherLongComponent.third;
34+
<<<
35+
#longComponent.anotherLongComponent.third;

0 commit comments

Comments
 (0)