1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-01 13:25:45 +02:00

Fix for 225858: Code formatter differences from CDT 4.0.x

This commit is contained in:
Anton Leherbauer 2008-04-07 10:53:36 +00:00
parent 076444ffe0
commit 3d6501658c
6 changed files with 53 additions and 20 deletions

View file

@ -129,6 +129,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;
@ -2167,19 +2168,20 @@ public class CodeFormatterVisitor extends CPPASTVisitor {
scribe.printNextToken(Token.tCOLONCOLON); scribe.printNextToken(Token.tCOLONCOLON);
} }
scribe.printNextToken(Token.t_new); scribe.printNextToken(Token.t_new);
scribe.space();
// placement // placement
final IASTExpression newPlacement= node.getNewPlacement(); final IASTExpression newPlacement= node.getNewPlacement();
if (newPlacement != null) { if (newPlacement != null) {
formatParenthesizedExpression(newPlacement); formatParenthesizedExpression(newPlacement);
} }
// type-id // type-id
scribe.space();
final IASTTypeId typeId= node.getTypeId(); final IASTTypeId typeId= node.getTypeId();
final boolean expectParen= !node.isNewTypeId() && peekNextToken() == Token.tLPAREN; final boolean expectParen= !node.isNewTypeId() && peekNextToken() == Token.tLPAREN;
if (expectParen) { if (expectParen) {
scribe.printNextToken(Token.tLPAREN, scribe.printComment()); scribe.printNextToken(Token.tLPAREN, false);
} else {
scribe.space();
} }
typeId.accept(this); typeId.accept(this);
if (expectParen) { if (expectParen) {
@ -2486,7 +2488,11 @@ public class CodeFormatterVisitor extends CPPASTVisitor {
scribe.printNextToken(Token.tGT, preferences.insert_space_before_closing_angle_bracket_in_template_arguments); scribe.printNextToken(Token.tGT, preferences.insert_space_before_closing_angle_bracket_in_template_arguments);
if (node.getPropertyInParent() != ICPPASTQualifiedName.SEGMENT_NAME) { if (node.getPropertyInParent() != ICPPASTQualifiedName.SEGMENT_NAME) {
if (preferences.insert_space_after_closing_angle_bracket_in_template_arguments) { if (preferences.insert_space_after_closing_angle_bracket_in_template_arguments) {
// avoid explicit space if followed by pointer operator
int nextToken= peekNextToken();
if (nextToken != IToken.tSTAR && nextToken != IToken.tAMPER) {
scribe.space(); scribe.space();
}
} else { } else {
scribe.printComment(); scribe.printComment();
scribe.needSpace= false; scribe.needSpace= false;

View file

@ -1737,6 +1737,7 @@ public class DefaultCodeFormatterOptions {
public void setWhitesmitsSettings() { public void setWhitesmitsSettings() {
setDefaultSettings(); setDefaultSettings();
this.alignment_for_expressions_in_initializer_list = Alignment.M_ONE_PER_LINE_SPLIT; this.alignment_for_expressions_in_initializer_list = Alignment.M_ONE_PER_LINE_SPLIT;
this.alignment_for_enumerator_list = Alignment.M_ONE_PER_LINE_SPLIT | Alignment.M_FORCE;
this.brace_position_for_initializer_list = DefaultCodeFormatterConstants.NEXT_LINE_SHIFTED; this.brace_position_for_initializer_list = DefaultCodeFormatterConstants.NEXT_LINE_SHIFTED;
this.brace_position_for_block = DefaultCodeFormatterConstants.NEXT_LINE_SHIFTED; this.brace_position_for_block = DefaultCodeFormatterConstants.NEXT_LINE_SHIFTED;

View file

@ -414,7 +414,7 @@ public class CodeFormatterTest extends BaseUITestCase {
//void f() { //void f() {
// int *px = ::new int(0); // int *px = ::new int(0);
// int py[] = new int[5](0, 1, 2, 3, 4); // int py[] = new int[5](0, 1, 2, 3, 4);
// int *pz[] = new(px) int(0); // int *pz[] = new (px) int(0);
// delete[] py; // delete[] py;
// ::delete px; // ::delete px;
//} //}
@ -601,4 +601,28 @@ public class CodeFormatterTest extends BaseUITestCase {
fOptions= DefaultCodeFormatterOptions.getWhitesmithsSettings().getMap(); fOptions= DefaultCodeFormatterOptions.getWhitesmithsSettings().getMap();
assertFormatterResult(); assertFormatterResult();
} }
//enum Tthe3rdtestIds
//{
//ECommand1 = 0x6001,
//ECommand2,
//EHelp,
//EAbout
//};
//
//CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
//enum Tthe3rdtestIds
// {
// ECommand1 = 0x6001,
// ECommand2,
// EHelp,
// EAbout
// };
//
//CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
public void testFormatterRegressions_Bug225858() throws Exception {
fOptions= DefaultCodeFormatterOptions.getWhitesmithsSettings().getMap();
assertFormatterResult();
}
} }

View file

@ -212,6 +212,8 @@ final class FormatterMessages extends NLS {
public static String LineWrappingTabPage_parameters; public static String LineWrappingTabPage_parameters;
public static String LineWrappingTabPage_arguments; public static String LineWrappingTabPage_arguments;
public static String LineWrappingTabPage_throws_clause; public static String LineWrappingTabPage_throws_clause;
public static String LineWrappingTabPage_enum_decls;
public static String LineWrappingTabPage_enumerator_list;
public static String LineWrappingTabPage_initializer_list; public static String LineWrappingTabPage_initializer_list;
public static String LineWrappingTabPage_conditionals; public static String LineWrappingTabPage_conditionals;
// public static String LineWrappingTabPage_binary_exprs; // public static String LineWrappingTabPage_binary_exprs;

View file

@ -242,16 +242,18 @@ LineWrappingTabPage_parameters=Parameters
LineWrappingTabPage_arguments=Arguments LineWrappingTabPage_arguments=Arguments
LineWrappingTabPage_throws_clause=Exception specification LineWrappingTabPage_throws_clause=Exception specification
#LineWrappingTabPage_object_allocation=Object allocation arguments #LineWrappingTabPage_object_allocation=Object allocation arguments
LineWrappingTabPage_initializer_list=Initializer List LineWrappingTabPage_enum_decls='enum' declaration
LineWrappingTabPage_enumerator_list=Enumerator list
LineWrappingTabPage_initializer_list=Initializer list
LineWrappingTabPage_conditionals=Conditionals LineWrappingTabPage_conditionals=Conditionals
#LineWrappingTabPage_binary_exprs=Binary expressions #LineWrappingTabPage_binary_exprs=Binary expressions
LineWrappingTabPage_indentation_default=Default indentation LineWrappingTabPage_indentation_default=Default indentation
LineWrappingTabPage_indentation_on_column=Indent on column LineWrappingTabPage_indentation_on_column=Indent on column
LineWrappingTabPage_indentation_by_one=Indent by one LineWrappingTabPage_indentation_by_one=Indent by one
LineWrappingTabPage_class_decls=Class Declarations LineWrappingTabPage_class_decls=Class declarations
LineWrappingTabPage_method_decls=Function Declarations LineWrappingTabPage_method_decls=Function declarations
#LineWrappingTabPage_constructor_decls=Constructor declarations #LineWrappingTabPage_constructor_decls=Constructor declarations
LineWrappingTabPage_function_calls=Function Calls LineWrappingTabPage_function_calls=Function calls
LineWrappingTabPage_expressions=Expressions LineWrappingTabPage_expressions=Expressions
#LineWrappingTabPage_statements=Statements #LineWrappingTabPage_statements=Statements
LineWrappingTabPage_wrapping_policy_label_text=Lin&e wrapping policy: LineWrappingTabPage_wrapping_policy_label_text=Lin&e wrapping policy:

View file

@ -455,14 +455,12 @@ public class LineWrappingTabPage extends FormatterTabPage {
// FormatterMessages.LineWrappingTabPage_enum_superinterfaces // FormatterMessages.LineWrappingTabPage_enum_superinterfaces
// ); // );
// //
// private final Category fEnumConstantsCategory= new Category( private final Category fEnumeratorsCategory= new Category(
// DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ENUM_CONSTANTS, DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ENUMERATOR_LIST,
// "enum Example {" + //$NON-NLS-1$ "enum Example {" + //$NON-NLS-1$
// "CANCELLED, RUNNING, WAITING, FINISHED }" + //$NON-NLS-1$ "CANCELLED, RUNNING, WAITING, FINISHED };", //$NON-NLS-1$
// "enum Example {" + //$NON-NLS-1$ FormatterMessages.LineWrappingTabPage_enumerator_list
// "GREEN(0, 255, 0), RED(255, 0, 0) }", //$NON-NLS-1$ );
// FormatterMessages.LineWrappingTabPage_enum_constants
// );
// //
// private final Category fAssignmentCategory= new Category( // private final Category fAssignmentCategory= new Category(
// DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ASSIGNMENT, // DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ASSIGNMENT,
@ -567,8 +565,8 @@ public class LineWrappingTabPage extends FormatterTabPage {
methodDeclarations.children.add(fMethodDeclarationsParametersCategory); methodDeclarations.children.add(fMethodDeclarationsParametersCategory);
methodDeclarations.children.add(fMethodThrowsClauseCategory); methodDeclarations.children.add(fMethodThrowsClauseCategory);
// final Category enumDeclarations= new Category(FormatterMessages.LineWrappingTabPage_enum_decls); final Category enumDeclarations= new Category(FormatterMessages.LineWrappingTabPage_enum_decls);
// enumDeclarations.children.add(fEnumConstantsCategory); enumDeclarations.children.add(fEnumeratorsCategory);
// enumDeclarations.children.add(fEnumDeclInterfacesCategory); // enumDeclarations.children.add(fEnumDeclInterfacesCategory);
// enumDeclarations.children.add(fEnumConstArgumentsCategory); // enumDeclarations.children.add(fEnumConstArgumentsCategory);
@ -592,7 +590,7 @@ public class LineWrappingTabPage extends FormatterTabPage {
root.add(classDeclarations); root.add(classDeclarations);
// root.add(constructorDeclarations); // root.add(constructorDeclarations);
root.add(methodDeclarations); root.add(methodDeclarations);
// root.add(enumDeclarations); root.add(enumDeclarations);
root.add(functionCalls); root.add(functionCalls);
root.add(expressions); root.add(expressions);
// root.add(statements); // root.add(statements);