[Syntax] Unify RawSyntax and RawTokenSyntax using union and TrailingObjects

It better matches with SwiftSyntax model.

Using TrailingObjects reduces the number of heap allocation which
gains 18% performance improvement.
This commit is contained in:
Rintaro Ishizaki
2018-01-15 21:13:36 +09:00
parent 4c172037e8
commit 0780c529c4
28 changed files with 557 additions and 627 deletions

View File

@@ -30,7 +30,7 @@ void ${node.name}::validate() const {
if (!Data || !Data->Raw) return;
auto raw = Data->Raw;
if (isMissing()) return;
assert(raw->Layout.size() == ${len(node.children)});
assert(raw->getLayout().size() == ${len(node.children)});
% for child in node.children:
% if child.token_choices:
% choices = ", ".join("tok::" + choice.kind
@@ -96,4 +96,4 @@ ${node.name} ${node.name}::with${child.name}(
}
% end
% end
% end