@@ -147,21 +147,28 @@ DeferredNodeInfo SyntaxParseActions::getDeferredChild(OpaqueSyntaxNode node,
147
147
auto Child = Data->Children [ChildIndex];
148
148
switch (Child.getKind ()) {
149
149
case RecordedOrDeferredNode::Kind::Null:
150
- llvm_unreachable (" A child node should not be Null" );
150
+ return DeferredNodeInfo (
151
+ RecordedOrDeferredNode (nullptr , RecordedOrDeferredNode::Kind::Null),
152
+ syntax::SyntaxKind::Unknown, tok::NUM_TOKENS,
153
+ /* IsMissing=*/ false , CharSourceRange ());
151
154
case RecordedOrDeferredNode::Kind::Recorded:
152
155
llvm_unreachable (" Children of deferred nodes must also be deferred" );
153
156
break ;
154
157
case RecordedOrDeferredNode::Kind::DeferredLayout: {
155
158
auto ChildData = static_cast <const DeferredLayoutNode *>(Child.getOpaque ());
156
- return DeferredNodeInfo (ChildData, ChildData->Kind , tok::NUM_TOKENS,
157
- /* IsMissing=*/ false ,
158
- CharSourceRange (StartLoc, ChildData->Length ));
159
+ return DeferredNodeInfo (
160
+ RecordedOrDeferredNode (ChildData,
161
+ RecordedOrDeferredNode::Kind::DeferredLayout),
162
+ ChildData->Kind , tok::NUM_TOKENS,
163
+ /* IsMissing=*/ false , CharSourceRange (StartLoc, ChildData->Length ));
159
164
}
160
165
case RecordedOrDeferredNode::Kind::DeferredToken: {
161
166
auto ChildData = static_cast <const DeferredTokenNode *>(Child.getOpaque ());
162
- return DeferredNodeInfo (ChildData, syntax::SyntaxKind::Token,
163
- ChildData->TokenKind , ChildData->IsMissing ,
164
- ChildData->Range );
167
+ return DeferredNodeInfo (
168
+ RecordedOrDeferredNode (ChildData,
169
+ RecordedOrDeferredNode::Kind::DeferredToken),
170
+ syntax::SyntaxKind::Token, ChildData->TokenKind , ChildData->IsMissing ,
171
+ ChildData->Range );
165
172
}
166
173
}
167
174
}
0 commit comments