mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-22 14:12:10 +02:00
Bug 535331: Rewriting sizeof...() drops the parenthesis
Fix and test. Change-Id: If54f24d833724f3c51ae0b6e7f325493e5110719 Signed-off-by: Hansruedi Patzen <hansruedi.patzen@hsr.ch> Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
This commit is contained in:
parent
3f98811f73
commit
a9988957f6
4 changed files with 29 additions and 5 deletions
|
@ -241,3 +241,12 @@ struct S
|
|||
;
|
||||
}
|
||||
};
|
||||
|
||||
//!Operator sizeofParameterPack
|
||||
//%CPP
|
||||
template<typename... T>
|
||||
void f(T... a)
|
||||
{
|
||||
if (sizeof...(a)){
|
||||
}
|
||||
}
|
|
@ -71,7 +71,7 @@ public class ExpressionWriter extends NodeWriter{
|
|||
private static final String TYPEID_OP = "typeid ("; //$NON-NLS-1$
|
||||
private static final String OPEN_BRACKET_OP = "("; //$NON-NLS-1$
|
||||
private static final String SIZEOF_OP = "sizeof "; //$NON-NLS-1$
|
||||
private static final String SIZEOF_PARAMETER_PACK_OP = "sizeof..."; //$NON-NLS-1$
|
||||
private static final String SIZEOF_PARAMETER_PACK_OP = "sizeof...("; //$NON-NLS-1$
|
||||
private static final String NOEXCEPT_OP = "noexcept ("; //$NON-NLS-1$
|
||||
private static final String NOT_OP = "!"; //$NON-NLS-1$
|
||||
private static final String TILDE_OP = "~"; //$NON-NLS-1$
|
||||
|
@ -274,6 +274,7 @@ public class ExpressionWriter extends NodeWriter{
|
|||
case ICPPASTUnaryExpression.op_typeid:
|
||||
case ICPPASTUnaryExpression.op_noexcept:
|
||||
case IASTUnaryExpression.op_alignOf:
|
||||
case IASTUnaryExpression.op_sizeofParameterPack:
|
||||
return true;
|
||||
|
||||
default:
|
||||
|
@ -333,6 +334,7 @@ public class ExpressionWriter extends NodeWriter{
|
|||
case ICPPASTUnaryExpression.op_noexcept:
|
||||
case IASTUnaryExpression.op_bracketedPrimary:
|
||||
case IASTUnaryExpression.op_alignOf:
|
||||
case IASTUnaryExpression.op_sizeofParameterPack:
|
||||
return CLOSING_BRACKET_OP;
|
||||
default:
|
||||
System.err.println("Unkwown unaryExpressionType " + unaryExpressionType); //$NON-NLS-1$
|
||||
|
@ -519,7 +521,7 @@ public class ExpressionWriter extends NodeWriter{
|
|||
case IASTTypeIdExpression.op_typeof:
|
||||
return TYPEOF_OP;
|
||||
case IASTTypeIdExpression.op_sizeofParameterPack:
|
||||
return SIZEOF_PARAMETER_PACK_OP + "("; //$NON-NLS-1$
|
||||
return SIZEOF_PARAMETER_PACK_OP;
|
||||
}
|
||||
throw new IllegalArgumentException("Unknown TypeId Type"); //$NON-NLS-1$
|
||||
}
|
||||
|
|
|
@ -2669,9 +2669,7 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
|
|||
case IASTUnaryExpression.op_sizeofParameterPack:
|
||||
scribe.printNextToken(Token.t_sizeof, scribe.printComment());
|
||||
scribe.printNextToken(Token.tELIPSE, scribe.printComment());
|
||||
if (peekNextToken() != Token.tLPAREN) {
|
||||
scribe.space();
|
||||
}
|
||||
scribe.printNextToken(Token.tLPAREN);
|
||||
operand.accept(this);
|
||||
break;
|
||||
case IASTUnaryExpression.op_throw:
|
||||
|
|
|
@ -3405,4 +3405,19 @@ public class CodeFormatterTest extends BaseUITestCase {
|
|||
public void testFormatAttributedLabelStatements_Bug535266() throws Exception {
|
||||
assertFormatterResult();
|
||||
}
|
||||
|
||||
//template<typename ... T>
|
||||
//void f(T ... a) {
|
||||
// if (sizeof...(a)) {
|
||||
// }
|
||||
//}
|
||||
|
||||
//template<typename ... T>
|
||||
//void f(T ... a) {
|
||||
// if (sizeof...(a)) {
|
||||
// }
|
||||
//}
|
||||
public void testIndendtionSizeofParampack_535331() throws Exception {
|
||||
assertFormatterResult();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue