Skip to content

Commit a75c9d3

Browse files
committed
---
yaml --- r: 327679 b: refs/heads/tensorflow c: b9985db h: refs/heads/master i: 327677: e7727c5 327675: e860e8a 327671: ac00eb7 327663: abad4b8 327647: 597a54a 327615: 51b96a0 327551: 195f526 327423: 9239924 327167: b4ff457 326655: caf4a22 325631: 757ef7a 323583: 598034e 319487: e9b3cb6 311295: 881526f 294911: 1f1cc10 262143: ddec100
1 parent d91344f commit a75c9d3

File tree

10 files changed

+44
-7
lines changed

10 files changed

+44
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a: 22f738a831d43aff2b9c9773bcb65
816816
refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-05-08-a: 7d98cc16689baba5c8a3b90a9329bdcc1a12b4e9
817817
refs/heads/cherr42: a566ad54b073c2c56ac0a705d0a5bed9743135a5
818818
"refs/heads/codable_test_comment_fix": fc8f6824f7f347e1e8db55bff62db385c5728b5a
819-
refs/heads/tensorflow: 80085e0d272720348879c7c97373b36c7ba58395
819+
refs/heads/tensorflow: b9985dbe877160ec901fb0a0b4a495f69041f5aa
820820
refs/tags/swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-11-a: 8126fd7a652e2f70ad6d76505239e34fb2ef3e1a
821821
refs/tags/swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-12-a: b3fd3dd84df6717f2e2e9df58c6d7e99fed57086
822822
refs/tags/swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-13-a: 71135119579039dc321c5f65d870050fe36efda2

branches/tensorflow/include/swift/Parse/HiddenLibSyntaxAction.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class HiddenLibSyntaxAction : public SyntaxParseActions {
7070
std::pair<size_t, OpaqueSyntaxNode>
7171
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) override;
7272

73+
void discardRecordedNode(OpaqueSyntaxNode node) override;
74+
7375
OpaqueSyntaxNodeKind getOpaqueKind() override {
7476
return ExplicitAction->getOpaqueKind();
7577
}

branches/tensorflow/include/swift/Parse/ParsedRawSyntaxRecorder.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ class ParsedRawSyntaxRecorder {
6868
ParsedRawSyntaxNode recordEmptyRawSyntaxCollection(syntax::SyntaxKind kind,
6969
SourceLoc loc);
7070

71+
void discardRecordedNode(ParsedRawSyntaxNode &node);
72+
7173
/// Used for incremental re-parsing.
7274
ParsedRawSyntaxNode lookupNode(size_t lexerOffset, SourceLoc loc,
7375
syntax::SyntaxKind kind);

branches/tensorflow/include/swift/Parse/SyntaxParseActions.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ class SyntaxParseActions {
6161
ArrayRef<OpaqueSyntaxNode> elements,
6262
CharSourceRange range) = 0;
6363

64+
/// Discard raw syntax node.
65+
///
66+
/// FIXME: This breaks invariant that any recorded node will be a part of the
67+
/// result SourceFile syntax. This method is a temporary workaround, and
68+
/// should be removed when we fully migrate to libSyntax parsing.
69+
virtual void discardRecordedNode(OpaqueSyntaxNode node) = 0;
70+
6471
/// Used for incremental re-parsing.
6572
virtual std::pair<size_t, OpaqueSyntaxNode>
6673
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) {

branches/tensorflow/include/swift/SyntaxParse/SyntaxTreeCreator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ class SyntaxTreeCreator: public SyntaxParseActions {
6464
ArrayRef<OpaqueSyntaxNode> elements,
6565
CharSourceRange range) override;
6666

67+
void discardRecordedNode(OpaqueSyntaxNode node) override;
68+
6769
std::pair<size_t, OpaqueSyntaxNode>
6870
lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) override;
6971

branches/tensorflow/lib/Parse/HiddenLibSyntaxAction.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,12 @@ HiddenLibSyntaxAction::getExplicitNodeFor(OpaqueSyntaxNode node) {
125125
auto hiddenNode = (Node *)node;
126126
return hiddenNode->ExplicitActionNode;
127127
}
128+
129+
void HiddenLibSyntaxAction::discardRecordedNode(OpaqueSyntaxNode opaqueN) {
130+
if (!opaqueN)
131+
return;
132+
auto node = static_cast<Node *>(opaqueN);
133+
if (!areBothLibSyntax())
134+
LibSyntaxAction->discardRecordedNode(node->LibSyntaxNode);
135+
ExplicitAction->discardRecordedNode(node->ExplicitActionNode);
136+
}

branches/tensorflow/lib/Parse/ParsedRawSyntaxRecorder.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ ParsedRawSyntaxRecorder::recordEmptyRawSyntaxCollection(SyntaxKind kind,
112112
return ParsedRawSyntaxNode{kind, tok::unknown, range, n};
113113
}
114114

115+
void ParsedRawSyntaxRecorder::discardRecordedNode(ParsedRawSyntaxNode &node) {
116+
SPActions->discardRecordedNode(node.takeOpaqueNode());
117+
}
118+
115119
ParsedRawSyntaxNode
116120
ParsedRawSyntaxRecorder::lookupNode(size_t lexerOffset, SourceLoc loc,
117121
SyntaxKind kind) {

branches/tensorflow/lib/Parse/SyntaxParsingContext.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ ParsedRawSyntaxNode SyntaxParsingContext::finalizeSourceFile() {
266266
llvm::makeMutableArrayRef(Layout, 2));
267267
}
268268

269-
OpaqueSyntaxNode SyntaxParsingContext::finalizeRoot() {
269+
OpaqueSyntaxNode SyntaxParsingContext::finalizeRoot() {
270270
assert(isTopOfContextStack() && "some sub-contexts are not destructed");
271271
assert(isRoot() && "only root context can finalize the tree");
272272
assert(Mode == AccumulationMode::Root);
@@ -349,11 +349,12 @@ SyntaxParsingContext::~SyntaxParsingContext() {
349349
// Remove all parts in this context.
350350
case AccumulationMode::Discard: {
351351
auto &nodes = getStorage();
352-
for (auto i = nodes.begin()+Offset, e = nodes.end(); i != e; ++i)
353-
if (i->isRecorded()) {
354-
getSyntaxCreator().finalizeNode(i->getOpaqueNode());
355-
i->reset();
356-
}
352+
for (auto i = nodes.begin()+Offset, e = nodes.end(); i != e; ++i) {
353+
// FIXME: This should not be needed. This breaks invariant that any
354+
// recorded node must be a part of result souce syntax tree.
355+
if (i->isRecorded())
356+
getRecorder().discardRecordedNode(*i);
357+
}
357358
nodes.erase(nodes.begin()+Offset, nodes.end());
358359
break;
359360
}

branches/tensorflow/lib/SyntaxParse/SyntaxTreeCreator.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,9 @@ SyntaxTreeCreator::lookupNode(size_t lexerOffset, syntax::SyntaxKind kind) {
173173
raw.resetWithoutRelease();
174174
return {length, opaqueN};
175175
}
176+
177+
void SyntaxTreeCreator::discardRecordedNode(OpaqueSyntaxNode opaqueN) {
178+
if (!opaqueN)
179+
return;
180+
static_cast<RawSyntax *>(opaqueN)->Release();
181+
}

branches/tensorflow/tools/libSwiftSyntaxParser/libSwiftSyntaxParser.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,10 @@ class CLibParseActions : public SyntaxParseActions {
190190
return getNodeHandler()(&node);
191191
}
192192

193+
void discardRecordedNode(OpaqueSyntaxNode node) override {
194+
// FIXME: This method should not be called at all.
195+
}
196+
193197
std::pair<size_t, OpaqueSyntaxNode>
194198
lookupNode(size_t lexerOffset, SyntaxKind kind) override {
195199
auto NodeLookup = getNodeLookup();

0 commit comments

Comments
 (0)