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 TYPEID_OP = "typeid ("; //$NON-NLS-1$
|
||||||
private static final String OPEN_BRACKET_OP = "("; //$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_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 NOEXCEPT_OP = "noexcept ("; //$NON-NLS-1$
|
||||||
private static final String NOT_OP = "!"; //$NON-NLS-1$
|
private static final String NOT_OP = "!"; //$NON-NLS-1$
|
||||||
private static final String TILDE_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_typeid:
|
||||||
case ICPPASTUnaryExpression.op_noexcept:
|
case ICPPASTUnaryExpression.op_noexcept:
|
||||||
case IASTUnaryExpression.op_alignOf:
|
case IASTUnaryExpression.op_alignOf:
|
||||||
|
case IASTUnaryExpression.op_sizeofParameterPack:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -333,6 +334,7 @@ public class ExpressionWriter extends NodeWriter{
|
||||||
case ICPPASTUnaryExpression.op_noexcept:
|
case ICPPASTUnaryExpression.op_noexcept:
|
||||||
case IASTUnaryExpression.op_bracketedPrimary:
|
case IASTUnaryExpression.op_bracketedPrimary:
|
||||||
case IASTUnaryExpression.op_alignOf:
|
case IASTUnaryExpression.op_alignOf:
|
||||||
|
case IASTUnaryExpression.op_sizeofParameterPack:
|
||||||
return CLOSING_BRACKET_OP;
|
return CLOSING_BRACKET_OP;
|
||||||
default:
|
default:
|
||||||
System.err.println("Unkwown unaryExpressionType " + unaryExpressionType); //$NON-NLS-1$
|
System.err.println("Unkwown unaryExpressionType " + unaryExpressionType); //$NON-NLS-1$
|
||||||
|
@ -519,7 +521,7 @@ public class ExpressionWriter extends NodeWriter{
|
||||||
case IASTTypeIdExpression.op_typeof:
|
case IASTTypeIdExpression.op_typeof:
|
||||||
return TYPEOF_OP;
|
return TYPEOF_OP;
|
||||||
case IASTTypeIdExpression.op_sizeofParameterPack:
|
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$
|
throw new IllegalArgumentException("Unknown TypeId Type"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
|
@ -2669,9 +2669,7 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
|
||||||
case IASTUnaryExpression.op_sizeofParameterPack:
|
case IASTUnaryExpression.op_sizeofParameterPack:
|
||||||
scribe.printNextToken(Token.t_sizeof, scribe.printComment());
|
scribe.printNextToken(Token.t_sizeof, scribe.printComment());
|
||||||
scribe.printNextToken(Token.tELIPSE, scribe.printComment());
|
scribe.printNextToken(Token.tELIPSE, scribe.printComment());
|
||||||
if (peekNextToken() != Token.tLPAREN) {
|
scribe.printNextToken(Token.tLPAREN);
|
||||||
scribe.space();
|
|
||||||
}
|
|
||||||
operand.accept(this);
|
operand.accept(this);
|
||||||
break;
|
break;
|
||||||
case IASTUnaryExpression.op_throw:
|
case IASTUnaryExpression.op_throw:
|
||||||
|
|
|
@ -3405,4 +3405,19 @@ public class CodeFormatterTest extends BaseUITestCase {
|
||||||
public void testFormatAttributedLabelStatements_Bug535266() throws Exception {
|
public void testFormatAttributedLabelStatements_Bug535266() throws Exception {
|
||||||
assertFormatterResult();
|
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