mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 18:26:01 +02:00
Bug 548512: Declarator formatting multiple keywords between pointers
Bugfix and removal of code duplication. Change-Id: Id6a94c4cf59311f287b73e09019ddd323361fdc7 Signed-off-by: Hansruedi Patzen <hansruedi.patzen@hsr.ch>
This commit is contained in:
parent
e435167a1a
commit
9fe8978817
2 changed files with 32 additions and 10 deletions
|
@ -22,6 +22,7 @@ import java.util.EmptyStackException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
|
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
|
||||||
|
@ -1659,22 +1660,23 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean skipConstVolatileRestrict(boolean spaceBefore) {
|
private boolean skipConstVolatileRestrict(boolean spaceBefore) {
|
||||||
boolean skipped = false;
|
return skipTokenWhile(token -> token == Token.t_const || token == Token.t_volatile || token == Token.t_restrict,
|
||||||
int token = peekNextToken();
|
spaceBefore);
|
||||||
while (token == Token.t_const || token == Token.t_volatile || token == Token.t_restrict) {
|
|
||||||
scribe.printNextToken(token, spaceBefore);
|
|
||||||
token = peekNextToken();
|
|
||||||
skipped = true;
|
|
||||||
}
|
|
||||||
return skipped;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean skipMutableConstexpr() {
|
private boolean skipMutableConstexpr() {
|
||||||
|
return skipTokenWhile(token -> token == Token.t_mutable || token == Token.t_constexpr, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean skipTokenWhile(Predicate<Integer> pred, boolean spaceBefore) {
|
||||||
boolean skipped = false;
|
boolean skipped = false;
|
||||||
int token = peekNextToken();
|
int token = peekNextToken();
|
||||||
while (token == Token.t_mutable || token == Token.t_constexpr) {
|
while (pred.test(token)) {
|
||||||
scribe.printNextToken(token, true);
|
scribe.printNextToken(token, spaceBefore);
|
||||||
token = peekNextToken();
|
token = peekNextToken();
|
||||||
|
if (!spaceBefore && pred.test(token)) {
|
||||||
|
scribe.space();
|
||||||
|
}
|
||||||
skipped = true;
|
skipped = true;
|
||||||
}
|
}
|
||||||
return skipped;
|
return skipped;
|
||||||
|
|
|
@ -4337,4 +4337,24 @@ public class CodeFormatterTest extends BaseUITestCase {
|
||||||
public void testAssigmentWithInitList_Bug547684() throws Exception {
|
public void testAssigmentWithInitList_Bug547684() throws Exception {
|
||||||
assertFormatterResult();
|
assertFormatterResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//void func(int *const volatile&p) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void func(int *const volatile&p) {
|
||||||
|
//}
|
||||||
|
public void testConstVolatileParam_Bug548512() throws Exception {
|
||||||
|
assertFormatterResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
//struct Foo {
|
||||||
|
// int *const volatile&p;
|
||||||
|
//};
|
||||||
|
|
||||||
|
//struct Foo {
|
||||||
|
// int *const volatile&p;
|
||||||
|
//};
|
||||||
|
public void testConstVolatileMember_Bug548512() throws Exception {
|
||||||
|
assertFormatterResult();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue