@@ -23,12 +23,20 @@ ParsedRawSyntaxNode ParsedRawSyntaxNode::getDeferredChild(
23
23
return SyntaxContext->getRecorder ().getDeferredChild (*this , ChildIndex);
24
24
}
25
25
26
+ size_t ParsedRawSyntaxNode::getDeferredNumChildren (
27
+ const SyntaxParsingContext *SyntaxContext) const {
28
+ assert (isDeferredLayout ());
29
+ return SyntaxContext->getRecorder ().getDeferredNumChildren (*this );
30
+ }
31
+
26
32
void ParsedRawSyntaxNode::dump () const {
27
33
dump (llvm::errs (), /* Indent*/ 0 );
28
34
llvm::errs () << ' \n ' ;
29
35
}
30
36
31
- void ParsedRawSyntaxNode::dump (llvm::raw_ostream &OS, unsigned Indent) const {
37
+ void ParsedRawSyntaxNode::dump (llvm::raw_ostream &OS,
38
+ const SyntaxParsingContext *Context,
39
+ unsigned Indent) const {
32
40
for (decltype (Indent) i = 0 ; i < Indent; ++i)
33
41
OS << ' ' ;
34
42
OS << ' (' ;
@@ -48,7 +56,17 @@ void ParsedRawSyntaxNode::dump(llvm::raw_ostream &OS, unsigned Indent) const {
48
56
break ;
49
57
case DataKind::DeferredLayout:
50
58
dumpSyntaxKind (OS, getKind ());
51
- OS << " [deferred layout]" ;
59
+ OS << " [deferred]" ;
60
+ if (Context) {
61
+ size_t numChildren = getDeferredNumChildren (Context);
62
+ for (size_t i = 0 ; i < numChildren; ++i) {
63
+ auto child = getDeferredChild (i, Context);
64
+ OS << " \n " ;
65
+ child.dump (OS, Context, Indent + 2 );
66
+ }
67
+ } else {
68
+ OS << " (unknown children)" ;
69
+ }
52
70
break ;
53
71
case DataKind::DeferredToken:
54
72
dumpSyntaxKind (OS, getKind ());
0 commit comments