1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-10 17:55:39 +02:00

Bug 329165 - Formatter corrupts code

This commit is contained in:
Anton Leherbauer 2010-11-03 11:16:26 +00:00
parent 8f01b54586
commit 63365064b7
2 changed files with 27 additions and 2 deletions

View file

@ -1063,15 +1063,19 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
private int visit(ICPPASTFunctionDeclarator node) { private int visit(ICPPASTFunctionDeclarator node) {
visit((IASTStandardFunctionDeclarator)node); visit((IASTStandardFunctionDeclarator)node);
skipConstVolatileRestrict(); boolean needSpace = skipConstVolatileRestrict();
final IASTTypeId[] exceptionSpecification= node.getExceptionSpecification(); final IASTTypeId[] exceptionSpecification= node.getExceptionSpecification();
if (exceptionSpecification != null) { if (exceptionSpecification != null) {
if (peekNextToken() == Token.t_throw) { if (peekNextToken() == Token.t_throw) {
formatExceptionSpecification(exceptionSpecification); formatExceptionSpecification(exceptionSpecification);
needSpace = false;
} }
} }
// skip the rest (=0) // skip the rest (=0)
if (needSpace && scribe.printComment()) {
scribe.space();
}
skipNode(node); skipNode(node);
return PROCESS_SKIP; return PROCESS_SKIP;
} }
@ -1512,6 +1516,8 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
} finally { } finally {
endOfNode(declaration); endOfNode(declaration);
} }
} else {
skipNode(declaration);
} }
if (preferences.indent_body_declarations_compare_to_access_specifier) { if (preferences.indent_body_declarations_compare_to_access_specifier) {
scribe.unIndent(); scribe.unIndent();

View file

@ -1382,6 +1382,25 @@ public class CodeFormatterTest extends BaseUITestCase {
assertFormatterResult(); assertFormatterResult();
} }
////#define throws /* */
//struct Foo {
// void foo() const throws {
// }
// void bar() const throws {
// }
//};
////#define throws /* */
//struct Foo {
// void foo() const throws {
// }
// void bar() const throws {
// }
//};
public void testCodeCorruptionWithIllegalKeyword_Bug329165() throws Exception {
assertFormatterResult();
}
//void extend_terminal_bond_to_label(vector<atom_t> &atom, const vector<letters_t> &letters, int n_letters, const vector<bond_t> &bond, int n_bond, const vector<label_t> &label, int n_label, double avg, double maxh, double max_dist_double_bond); //void extend_terminal_bond_to_label(vector<atom_t> &atom, const vector<letters_t> &letters, int n_letters, const vector<bond_t> &bond, int n_bond, const vector<label_t> &label, int n_label, double avg, double maxh, double max_dist_double_bond);
//void extend_terminal_bond_to_label(vector<atom_t> &atom, //void extend_terminal_bond_to_label(vector<atom_t> &atom,