Fixes incorrect handling of the declaration context stack.

llvm-svn: 173250
This commit is contained in:
Manuel Klimek 2013-01-23 11:03:04 +00:00
parent ffffbefa43
commit 390805731f
2 changed files with 12 additions and 2 deletions

View File

@ -33,12 +33,12 @@ public:
ScopedDeclarationState(UnwrappedLine &Line, std::vector<bool> &Stack,
bool MustBeDeclaration)
: Line(Line), Stack(Stack) {
Stack.push_back(MustBeDeclaration);
Line.MustBeDeclaration = MustBeDeclaration;
Stack.push_back(MustBeDeclaration);
}
~ScopedDeclarationState() {
Line.MustBeDeclaration = Stack.back();
Stack.pop_back();
Line.MustBeDeclaration = Stack.back();
}
private:
UnwrappedLine &Line;

View File

@ -1682,6 +1682,16 @@ TEST_F(FormatTest, BlockComments) {
TEST_F(FormatTest, FormatStarDependingOnContext) {
verifyFormat("void f(int *a);");
verifyFormat("void f() { f(fint * b); }");
verifyFormat("class A {\n void f(int *a);\n};");
verifyFormat("class A {\n int *a;\n};");
verifyFormat("namespace a {\n"
"namespace b {\n"
"class A {\n"
" void f() {}\n"
" int *a;\n"
"};\n"
"}\n"
"}");
}
TEST_F(FormatTest, SpecialTokensAtEndOfLine) {