mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 298592 - Formatter causes wrong layout for #defines for classes with inheritance
This commit is contained in:
parent
289a7c8dfa
commit
65dfb883a8
2 changed files with 22 additions and 3 deletions
|
@ -19,6 +19,7 @@ import java.util.List;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.ExpansionOverlapsBoundaryException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
|
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
|
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
|
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
|
||||||
|
@ -129,6 +130,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTWhileStatement;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
|
||||||
import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
|
import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
|
||||||
import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants;
|
import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants;
|
||||||
|
import org.eclipse.cdt.core.parser.IToken;
|
||||||
import org.eclipse.cdt.internal.formatter.align.Alignment;
|
import org.eclipse.cdt.internal.formatter.align.Alignment;
|
||||||
import org.eclipse.cdt.internal.formatter.align.AlignmentException;
|
import org.eclipse.cdt.internal.formatter.align.AlignmentException;
|
||||||
import org.eclipse.cdt.internal.formatter.scanner.Scanner;
|
import org.eclipse.cdt.internal.formatter.scanner.Scanner;
|
||||||
|
@ -1445,9 +1447,16 @@ public class CodeFormatterVisitor extends CPPASTVisitor {
|
||||||
// base specifiers
|
// base specifiers
|
||||||
final List<ICPPASTBaseSpecifier> baseSpecifiers= Arrays.asList(node.getBaseSpecifiers());
|
final List<ICPPASTBaseSpecifier> baseSpecifiers= Arrays.asList(node.getBaseSpecifiers());
|
||||||
if (baseSpecifiers.size() > 0) {
|
if (baseSpecifiers.size() > 0) {
|
||||||
scribe.printNextToken(Token.tCOLON, preferences.insert_space_before_colon_in_base_clause);
|
ICPPASTBaseSpecifier baseSpecifier = baseSpecifiers.get(0);
|
||||||
if (preferences.insert_space_after_colon_in_base_clause) {
|
try {
|
||||||
scribe.space();
|
if (baseSpecifier.getLeadingSyntax().getType() == IToken.tCOLON) {
|
||||||
|
scribe.printNextToken(Token.tCOLON, preferences.insert_space_before_colon_in_base_clause);
|
||||||
|
if (preferences.insert_space_after_colon_in_base_clause) {
|
||||||
|
scribe.space();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (UnsupportedOperationException exc) {
|
||||||
|
} catch (ExpansionOverlapsBoundaryException exc) {
|
||||||
}
|
}
|
||||||
final ListAlignment align= new ListAlignment(preferences.alignment_for_base_clause_in_type_declaration);
|
final ListAlignment align= new ListAlignment(preferences.alignment_for_base_clause_in_type_declaration);
|
||||||
align.fSpaceAfterComma= preferences.insert_space_after_comma_in_base_types;
|
align.fSpaceAfterComma= preferences.insert_space_after_comma_in_base_types;
|
||||||
|
|
|
@ -1322,4 +1322,14 @@ public class CodeFormatterTest extends BaseUITestCase {
|
||||||
assertFormatterResult();
|
assertFormatterResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#define MACRO(a) class b : public a
|
||||||
|
//MACRO(aClass){ int a;};
|
||||||
|
|
||||||
|
//#define MACRO(a) class b : public a
|
||||||
|
//MACRO(aClass) {
|
||||||
|
// int a;
|
||||||
|
//};
|
||||||
|
public void testCompositeTypeSpecAsMacro_Bug298592() throws Exception {
|
||||||
|
assertFormatterResult();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue