re PR c++/16603 (Incorrect enumerator type before enumeration's closing brace)
/cp 2012-01-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/16603 * decl.c (build_enumerator): Don't call perform_integral_promotions on the value. /testsuite 2012-01-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/16603 * g++.dg/parse/enum8.C: New. From-SVN: r182776
This commit is contained in:
parent
9f88ff5a1f
commit
11cc5f49dd
|
@ -1,3 +1,9 @@
|
|||
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/16603
|
||||
* decl.c (build_enumerator): Don't call perform_integral_promotions
|
||||
on the value.
|
||||
|
||||
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/51379
|
||||
|
|
|
@ -12369,14 +12369,11 @@ build_enumerator (tree name, tree value, tree enumtype, location_t loc)
|
|||
{
|
||||
value = cxx_constant_value (value);
|
||||
|
||||
if (TREE_CODE (value) == INTEGER_CST
|
||||
&& INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)))
|
||||
if (TREE_CODE (value) != INTEGER_CST
|
||||
|| ! INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value)))
|
||||
{
|
||||
value = perform_integral_promotions (value);
|
||||
}
|
||||
else
|
||||
{
|
||||
error ("enumerator value for %qD is not an integer constant", name);
|
||||
error ("enumerator value for %qD is not an integer constant",
|
||||
name);
|
||||
value = NULL_TREE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/16603
|
||||
* g++.dg/parse/enum8.C: New.
|
||||
|
||||
2012-01-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/51379
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// PR c++/16603
|
||||
|
||||
char const c = 'q';
|
||||
|
||||
enum
|
||||
{
|
||||
x = c,
|
||||
y = sizeof(x)
|
||||
};
|
||||
|
||||
int test[y == sizeof(char) ? 1 : -1];
|
Loading…
Reference in New Issue