diff options
| author | Ilya Biryukov <ibiryukov@google.com> | 2020-01-14 16:27:06 +0100 |
|---|---|---|
| committer | Ilya Biryukov <ibiryukov@google.com> | 2020-01-14 16:41:09 +0100 |
| commit | 07a41018e9d27f67f7b4295eb7e00e0345c0aacf (patch) | |
| tree | 04639b8d6f393da8f548a908e8f56a7c22af5025 /clang/lib/Tooling | |
| parent | 3b929fe7763570fc1d4a4691a53257a4a0b7760e (diff) | |
| download | bcm5719-llvm-07a41018e9d27f67f7b4295eb7e00e0345c0aacf.tar.gz bcm5719-llvm-07a41018e9d27f67f7b4295eb7e00e0345c0aacf.zip | |
[Syntax] Mark synthesized nodes as modifiable
This was an oversight in the original patch.
Also add corresponding tests.
Diffstat (limited to 'clang/lib/Tooling')
| -rw-r--r-- | clang/lib/Tooling/Syntax/Synthesis.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Tooling/Syntax/Synthesis.cpp b/clang/lib/Tooling/Syntax/Synthesis.cpp index cbd9579f4f0..aa01a34c761 100644 --- a/clang/lib/Tooling/Syntax/Synthesis.cpp +++ b/clang/lib/Tooling/Syntax/Synthesis.cpp @@ -13,6 +13,8 @@ using namespace clang; /// Should not be used for anything else. class syntax::FactoryImpl { public: + static void setCanModify(syntax::Node *N) { N->CanModify = true; } + static void prependChildLowLevel(syntax::Tree *T, syntax::Node *Child, syntax::NodeRole R) { T->prependChildLowLevel(Child, R); @@ -27,6 +29,7 @@ clang::syntax::Leaf *syntax::createPunctuation(clang::syntax::Arena &A, assert(Tokens.size() == 1); assert(Tokens.front().kind() == K); auto *L = new (A.allocator()) clang::syntax::Leaf(Tokens.begin()); + FactoryImpl::setCanModify(L); L->assertInvariants(); return L; } @@ -34,6 +37,7 @@ clang::syntax::Leaf *syntax::createPunctuation(clang::syntax::Arena &A, clang::syntax::EmptyStatement * syntax::createEmptyStatement(clang::syntax::Arena &A) { auto *S = new (A.allocator()) clang::syntax::EmptyStatement; + FactoryImpl::setCanModify(S); FactoryImpl::prependChildLowLevel(S, createPunctuation(A, clang::tok::semi), NodeRole::Unknown); S->assertInvariants(); |

