File tree Expand file tree Collapse file tree 2 files changed +9
-18
lines changed Expand file tree Collapse file tree 2 files changed +9
-18
lines changed Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ class ParsedSyntax {
22
22
ParsedRawSyntaxNode RawNode;
23
23
24
24
public:
25
- explicit ParsedSyntax (ParsedRawSyntaxNode rawNode)
25
+ explicit ParsedSyntax (ParsedRawSyntaxNode && rawNode)
26
26
: RawNode(std::move(rawNode)) {}
27
27
28
28
const ParsedRawSyntaxNode &getRaw () const { return RawNode; }
@@ -38,19 +38,9 @@ class ParsedSyntax {
38
38
// / Cast this Syntax node to a more specific type, asserting it's of the
39
39
// / right kind.
40
40
template <typename T>
41
- T castTo () const {
41
+ T castTo () && {
42
42
assert (is<T>() && " castTo<T>() node of incompatible type!" );
43
- return T { RawNode.copyDeferred () };
44
- }
45
-
46
- // / If this Syntax node is of the right kind, cast and return it,
47
- // / otherwise return None.
48
- template <typename T>
49
- llvm::Optional<T> getAs () const {
50
- if (is<T>()) {
51
- return castTo<T>();
52
- }
53
- return llvm::None;
43
+ return T (std::move (RawNode));
54
44
}
55
45
56
46
ParsedSyntax copyDeferred () const {
@@ -69,7 +59,7 @@ class ParsedSyntax {
69
59
70
60
class ParsedTokenSyntax final : public ParsedSyntax {
71
61
public:
72
- explicit ParsedTokenSyntax (ParsedRawSyntaxNode rawNode)
62
+ explicit ParsedTokenSyntax (ParsedRawSyntaxNode && rawNode)
73
63
: ParsedSyntax(std::move(rawNode)) {}
74
64
75
65
tok getTokenKind () const {
Original file line number Diff line number Diff line change @@ -400,11 +400,12 @@ ParserResult<TypeRepr> Parser::parseType(Diag<> MessageID,
400
400
Builder.useAsyncKeyword (SyntaxContext->popToken ());
401
401
402
402
auto InputNode (std::move (*SyntaxContext->popIf <ParsedTypeSyntax>()));
403
- if (auto TupleTypeNode = InputNode.getAs <ParsedTupleTypeSyntax>()) {
403
+ if (InputNode.is <ParsedTupleTypeSyntax>()) {
404
+ auto TupleTypeNode = std::move (InputNode).castTo <ParsedTupleTypeSyntax>();
404
405
// Decompose TupleTypeSyntax and repack into FunctionType.
405
- auto LeftParen = TupleTypeNode-> getDeferredLeftParen ();
406
- auto Arguments = TupleTypeNode-> getDeferredElements ();
407
- auto RightParen = TupleTypeNode-> getDeferredRightParen ();
406
+ auto LeftParen = TupleTypeNode. getDeferredLeftParen ();
407
+ auto Arguments = TupleTypeNode. getDeferredElements ();
408
+ auto RightParen = TupleTypeNode. getDeferredRightParen ();
408
409
Builder
409
410
.useLeftParen (std::move (LeftParen))
410
411
.useArguments (std::move (Arguments))
You can’t perform that action at this time.
0 commit comments