Skip to content

Commit da6de4b

Browse files
committed
Address PR feedback
* Add and improve documentation comments * Adjust formatting * Rename recordExactRawSyntax -> rec.recordRawSyntax
1 parent 1f1eab6 commit da6de4b

9 files changed

+44
-27
lines changed

include/swift/Parse/ParsedRawSyntaxNode.h

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ typedef void *OpaqueSyntaxNode;
3030
/// invocation, or 'deferred' which captures the data for a
3131
/// \c SyntaxParseActions invocation to occur later.
3232
///
33-
/// The deferred form is used for when the parser is backtracking and when
33+
/// An \c OpaqueSyntaxNode can represent both the result of 'recording' a token
34+
/// as well as 'recording' a syntax layout, so there's only one
35+
/// \c RecordedSyntaxNode structure that can represent both.
36+
///
37+
/// The 'deferred' form is used for when the parser is backtracking and when
3438
/// there are instances that it's not clear what will be the final syntax node
3539
/// in the current parsing context.
3640
class ParsedRawSyntaxNode {
@@ -101,11 +105,14 @@ class ParsedRawSyntaxNode {
101105
ParsedRawSyntaxNode(const ParsedRawSyntaxNode &other) {
102106
switch (other.DK) {
103107
case DataKind::Recorded:
104-
new(&this->RecordedData)RecordedSyntaxNode(other.RecordedData); break;
108+
new(&this->RecordedData)RecordedSyntaxNode(other.RecordedData);
109+
break;
105110
case DataKind::DeferredLayout:
106-
new(&this->DeferredLayout)DeferredLayoutNode(other.DeferredLayout); break;
111+
new(&this->DeferredLayout)DeferredLayoutNode(other.DeferredLayout);
112+
break;
107113
case DataKind::DeferredToken:
108-
new(&this->DeferredToken)DeferredTokenNode(other.DeferredToken); break;
114+
new(&this->DeferredToken)DeferredTokenNode(other.DeferredToken);
115+
break;
109116
}
110117
this->SynKind = other.SynKind;
111118
this->TokKind = other.TokKind;
@@ -116,13 +123,16 @@ class ParsedRawSyntaxNode {
116123
switch (other.DK) {
117124
case DataKind::Recorded:
118125
new(&this->RecordedData)RecordedSyntaxNode(
119-
std::move(other.RecordedData)); break;
126+
std::move(other.RecordedData));
127+
break;
120128
case DataKind::DeferredLayout:
121129
new(&this->DeferredLayout)DeferredLayoutNode(
122-
std::move(other.DeferredLayout)); break;
130+
std::move(other.DeferredLayout));
131+
break;
123132
case DataKind::DeferredToken:
124133
new(&this->DeferredToken)DeferredTokenNode(
125-
std::move(other.DeferredToken)); break;
134+
std::move(other.DeferredToken));
135+
break;
126136
}
127137
this->SynKind = other.SynKind;
128138
this->TokKind = other.TokKind;

include/swift/Parse/ParsedRawSyntaxRecorder.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,17 @@ class ParsedRawSyntaxRecorder {
4646
const syntax::Trivia &leadingTrivia,
4747
const syntax::Trivia &trailingTrivia);
4848

49-
/// Record a missing token. \c loc can be invalid or an approximate location
49+
/// Record a missing token. \p loc can be invalid or an approximate location
5050
/// of where the token would be if not missing.
5151
ParsedRawSyntaxNode recordMissingToken(tok tokenKind, SourceLoc loc);
5252

53-
/// The provided \c elements are an exact layout appropriate for the syntax
54-
/// \c kind. Missing optional elements are represented with a null
53+
/// The provided \p elements are an exact layout appropriate for the syntax
54+
/// \p kind. Missing optional elements are represented with a null
5555
/// ParsedRawSyntaxNode object.
56-
ParsedRawSyntaxNode recordExactRawSyntax(syntax::SyntaxKind kind,
56+
ParsedRawSyntaxNode recordRawSyntax(syntax::SyntaxKind kind,
5757
ArrayRef<ParsedRawSyntaxNode> elements);
5858

59-
/// Record a raw syntax collecton without eny elements. \c loc can be invalid
59+
/// Record a raw syntax collecton without eny elements. \p loc can be invalid
6060
/// or an approximate location of where an element of the collection would be
6161
/// if not missing.
6262
ParsedRawSyntaxNode recordEmptyRawSyntaxCollection(syntax::SyntaxKind kind,

include/swift/Parse/SyntaxParseActions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class SyntaxParseActions {
5858

5959
/// Used for incremental re-parsing.
6060
virtual std::pair<size_t, OpaqueSyntaxNode>
61-
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) {
61+
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) {
6262
return std::make_pair(0, nullptr);
6363
}
6464
};

include/swift/Parse/SyntaxParsingContext.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,16 @@ enum class SyntaxContextKind {
4343
};
4444

4545
enum class SyntaxNodeCreationKind {
46+
/// This is for \c SyntaxParsingContext to collect the syntax data and create
47+
/// a 'recorded' ParsedRawSyntaxNode object, which would be a result of
48+
/// passing the index data to the \c SyntaxParseActions implementation.
4649
Recorded,
50+
/// This is for \c SyntaxParsingContext to collect the syntax data and create
51+
/// a 'deferred' ParsedRawSyntaxNode object, which captures the data for a
52+
/// \c SyntaxParseActions invocation to occur later.
53+
///
54+
/// This is intended to be used for when it's not clear what will be the final
55+
/// syntax node in the current parsing context.
4756
Deferred,
4857
};
4958

include/swift/SyntaxParse/SyntaxTreeCreator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class SyntaxTreeCreator: public SyntaxParseActions {
6262
CharSourceRange range) override;
6363

6464
std::pair<size_t, OpaqueSyntaxNode>
65-
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) override;
65+
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) override;
6666
};
6767

6868
} // end namespace swift

lib/Parse/ParsedRawSyntaxRecorder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ getRecordedNode(const ParsedRawSyntaxNode &node, ParsedRawSyntaxRecorder &rec) {
5252
if (node.isRecorded())
5353
return node;
5454
if (node.isDeferredLayout())
55-
return rec.recordExactRawSyntax(node.getKind(), node.getDeferredChildren());
55+
return rec.recordRawSyntax(node.getKind(), node.getDeferredChildren());
5656
assert(node.isDeferredToken());
5757
const Token &tok = node.getToken();
5858
if (node.isMissing())
@@ -62,7 +62,7 @@ getRecordedNode(const ParsedRawSyntaxNode &node, ParsedRawSyntaxRecorder &rec) {
6262
}
6363

6464
ParsedRawSyntaxNode
65-
ParsedRawSyntaxRecorder::recordExactRawSyntax(SyntaxKind kind,
65+
ParsedRawSyntaxRecorder::recordRawSyntax(SyntaxKind kind,
6666
ArrayRef<ParsedRawSyntaxNode> elements) {
6767
CharSourceRange range;
6868
SmallVector<OpaqueSyntaxNode, 16> subnodes;

lib/Parse/ParsedSyntaxBuilders.cpp.gyb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ Parsed${node.name}Builder::add${child_elt}(Parsed${child_elt_type} ${child_elt})
5555
Parsed${node.name}
5656
Parsed${node.name}Builder::record() {
5757
finishLayout();
58-
auto raw = Rec.recordExactRawSyntax(SyntaxKind::${node.syntax_kind},
59-
Layout);
58+
auto raw = Rec.recordRawSyntax(SyntaxKind::${node.syntax_kind}, Layout);
6059
return Parsed${node.name}(std::move(raw));
6160
}
6261

lib/Parse/ParsedSyntaxRecorder.cpp.gyb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ bool ParsedSyntaxRecorder::formExactLayoutFor(syntax::SyntaxKind Kind,
8585
Parsed${node.name}
8686
ParsedSyntaxRecorder::record${node.syntax_kind}(${child_params},
8787
ParsedRawSyntaxRecorder &rec) {
88-
auto raw = rec.recordExactRawSyntax(SyntaxKind::${node.syntax_kind}, {
88+
auto raw = rec.recordRawSyntax(SyntaxKind::${node.syntax_kind}, {
8989
% for child in node.children:
9090
% if child.is_optional:
9191
${child.name}.hasValue() ? ${child.name}->getRaw() : ParsedRawSyntaxNode::null(),
@@ -129,8 +129,7 @@ ParsedSyntaxRecorder::record${node.syntax_kind}(
129129
for (auto &element : elements) {
130130
layout.push_back(element.getRaw());
131131
}
132-
auto raw = rec.recordExactRawSyntax(SyntaxKind::${node.syntax_kind},
133-
layout);
132+
auto raw = rec.recordRawSyntax(SyntaxKind::${node.syntax_kind}, layout);
134133
return Parsed${node.name}(std::move(raw));
135134
}
136135

lib/Parse/SyntaxParsingContext.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ SyntaxParsingContext::makeUnknownSyntax(SyntaxKind Kind,
6969
if (IsBacktracking)
7070
return ParsedRawSyntaxNode::makeDeferred(Kind, Parts);
7171
else
72-
return getRecorder().recordExactRawSyntax(Kind, Parts);
72+
return getRecorder().recordRawSyntax(Kind, Parts);
7373
}
7474

7575
ParsedRawSyntaxNode
@@ -83,7 +83,7 @@ SyntaxParsingContext::createSyntaxAs(SyntaxKind Kind,
8383
if (nodeCreateK == SyntaxNodeCreationKind::Deferred || IsBacktracking) {
8484
rawNode = ParsedRawSyntaxNode::makeDeferred(kind, layout);
8585
} else {
86-
rawNode = rec.recordExactRawSyntax(kind, layout);
86+
rawNode = rec.recordRawSyntax(kind, layout);
8787
}
8888
};
8989
if (ParsedSyntaxRecorder::formExactLayoutFor(Kind, Parts, formNode))
@@ -279,10 +279,10 @@ static ParsedRawSyntaxNode finalizeSourceFile(RootContextData &RootData,
279279
AllTopLevel.push_back(RawNode);
280280
}
281281

282-
auto itemList = Recorder.recordExactRawSyntax(SyntaxKind::CodeBlockItemList,
283-
AllTopLevel);
284-
auto root = Recorder.recordExactRawSyntax(SyntaxKind::SourceFile,
285-
{ itemList, EOFToken });
282+
auto itemList = Recorder.recordRawSyntax(SyntaxKind::CodeBlockItemList,
283+
AllTopLevel);
284+
auto root = Recorder.recordRawSyntax(SyntaxKind::SourceFile,
285+
{ itemList, EOFToken });
286286
return root;
287287
}
288288

0 commit comments

Comments
 (0)