mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 22:51:06 +08:00
parser.c (cp_parser_cast_expression): Add target type of cast to diagnostic.
* parser.c (cp_parser_cast_expression): Add target type of cast to diagnostic. * error.c (type_to_string): Add '{enum}' suffix to enumeration types. * g++.dg/cpp1z/direct-enum-init1.C: Adjust for more verbose enum diagnostics. * g++.dg/warn/pr12242.C: Likewise. From-SVN: r247347
This commit is contained in:
parent
4ca4927ac6
commit
8211c4a299
@ -1,3 +1,9 @@
|
||||
2017-04-27 Volker Reichelt <v.reichelt@netcologne.de>
|
||||
|
||||
* parser.c (cp_parser_cast_expression): Add target type of cast to
|
||||
diagnostic.
|
||||
* error.c (type_to_string): Add '{enum}' suffix to enumeration types.
|
||||
|
||||
2017-04-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* decl.c (grok_ctor_properties, ambi_op_p, unary_op_p): Change
|
||||
|
@ -3134,6 +3134,10 @@ type_to_string (tree typ, int verbose)
|
||||
if (len == aka_len && memcmp (p, p+aka_start, len) == 0)
|
||||
p[len] = '\0';
|
||||
}
|
||||
|
||||
if (typ && TYPE_P (typ) && TREE_CODE (typ) == ENUMERAL_TYPE)
|
||||
pp_string (cxx_pp, M_(" {enum}"));
|
||||
|
||||
return pp_ggc_formatted_text (cxx_pp);
|
||||
}
|
||||
|
||||
|
@ -8763,7 +8763,8 @@ cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p,
|
||||
&& !in_system_header_at (input_location)
|
||||
&& !VOID_TYPE_P (type)
|
||||
&& current_lang_name != lang_name_c)
|
||||
warning (OPT_Wold_style_cast, "use of old-style cast");
|
||||
warning (OPT_Wold_style_cast,
|
||||
"use of old-style cast to %qT", type);
|
||||
|
||||
/* Only type conversions to integral or enumeration types
|
||||
can be used in constant-expressions. */
|
||||
|
@ -1,3 +1,9 @@
|
||||
2017-04-27 Volker Reichelt <v.reichelt@netcologne.de>
|
||||
|
||||
* g++.dg/cpp1z/direct-enum-init1.C: Adjust for more verbose enum
|
||||
diagnostics.
|
||||
* g++.dg/warn/pr12242.C: Likewise.
|
||||
|
||||
2017-04-27 David Edelsohn <dje.gcc@gmail.com>
|
||||
|
||||
* gcc.c-torture/execute/alias-3.c: Skip on AIX.
|
||||
|
@ -17,121 +17,121 @@ void bar (E);
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
A a1 { 5 }; // { dg-error "invalid conversion from 'int' to 'A'" }
|
||||
B b1 { 7 }; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
A a1 { 5 }; // { dg-error "invalid conversion from 'int' to 'A {enum}'" }
|
||||
B b1 { 7 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
C c1 { s };
|
||||
D d1 { D(t) }; // { dg-error "invalid cast from type 'T' to type 'D'" }
|
||||
D d2 { t }; // { dg-error "cannot convert 'T' to 'D' in initialization" "" { target c++14_down } }
|
||||
D d1 { D(t) }; // { dg-error "invalid cast from type 'T' to type 'D {enum}'" }
|
||||
D d2 { t }; // { dg-error "cannot convert 'T' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++1z } .-1 }
|
||||
D d3 { 9 }; // { dg-error "cannot convert 'int' to 'D' in initialization" "" { target c++14_down } }
|
||||
D d4 { l }; // { dg-error "cannot convert 'long int' to 'D' in initialization" "" { target c++14_down } }
|
||||
D d3 { 9 }; // { dg-error "cannot convert 'int' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
D d4 { l }; // { dg-error "cannot convert 'long int' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
D d5 { D(l) };
|
||||
D d6 { G }; // { dg-error "cannot convert 'A' to 'D' in initialization" "" { target c++14_down } }
|
||||
E e1 { 5 }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
E e2 { -1 }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
D d6 { G }; // { dg-error "cannot convert 'A {enum}' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
E e1 { 5 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
E e2 { -1 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
E e3 { 5.0 }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
E e3 { 5.0 }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
E e4 { 5.2 }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
E e4 { 5.2 }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
B b2 = { 7 }; // { dg-error "invalid conversion from 'int' to 'B'" }
|
||||
C c2 = { C { 8 } }; // { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
|
||||
B b2 = { 7 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" }
|
||||
C c2 = { C { 8 } }; // { dg-error "cannot convert 'int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
|
||||
D *d7 = new D { 9 }; // { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target c++14_down } }
|
||||
E *e5 = new E { -4 }; // { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
D *d7 = new D { 9 }; // { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
E *e5 = new E { -4 }; // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
bar ({ 10 }); // { dg-error "cannot convert \[^\n\r]* to 'E' for argument" }
|
||||
bar (E { 9 }); // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
V v1 = { { 11 } }; // { dg-error "braces around scalar initializer for type 'E'" }
|
||||
V v2 = { E { 12 } }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
V v3 = { E { 5.0 } }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
bar ({ 10 }); // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' for argument" }
|
||||
bar (E { 9 }); // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
V v1 = { { 11 } }; // { dg-error "braces around scalar initializer for type 'E {enum}'" }
|
||||
V v2 = { E { 12 } }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
V v3 = { E { 5.0 } }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
V v4 = { 13 }; // { dg-error "cannot convert 'int' to 'E' in initialization" }
|
||||
if (B b3 { 5 }) // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
V v4 = { 13 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" }
|
||||
if (B b3 { 5 }) // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
;
|
||||
if (B b4 { 4.0 }) // { dg-error "cannot convert 'double' to 'B' in initialization" "" { target c++14_down } }
|
||||
if (B b4 { 4.0 }) // { dg-error "cannot convert 'double' to 'B {enum}' in initialization" "" { target c++14_down } }
|
||||
; // { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++1z } .-1 }
|
||||
C c3 { 8L }; // { dg-error "cannot convert 'long int' to 'C' in initialization" "" { target c++14_down } }
|
||||
B b4 {short (c + 5)}; // { dg-error "invalid conversion from 'short int' to 'B'" "" { target c++14_down } }
|
||||
B b5 {c + 5}; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
C c3 { 8L }; // { dg-error "cannot convert 'long int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
B b4 {short (c + 5)}; // { dg-error "invalid conversion from 'short int' to 'B {enum}'" "" { target c++14_down } }
|
||||
B b5 {c + 5}; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++1z } .-1 }
|
||||
C c4 { ll }; // { dg-error "cannot convert 'long long int' to 'C' in initialization" "" { target c++14_down } }
|
||||
C c4 { ll }; // { dg-error "cannot convert 'long long int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++1z } .-1 }
|
||||
C c5 {short (c + 5)}; // { dg-error "cannot convert 'short int' to 'C' in initialization" "" { target c++14_down } }
|
||||
C c6 {c + 5}; // { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
|
||||
C c5 {short (c + 5)}; // { dg-error "cannot convert 'short int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
C c6 {c + 5}; // { dg-error "cannot convert 'int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
}
|
||||
|
||||
struct U
|
||||
{
|
||||
U () : e { 5 } {} // { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
U (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
U () : e { 5 } {} // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
U (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
U (float) : e({ 6 }) {}// { dg-error "list-initializer for non-class type must not be parenthesized" }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target *-*-* } .-1 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target *-*-* } .-1 }
|
||||
E e;
|
||||
};
|
||||
|
||||
struct W
|
||||
{
|
||||
A a { 5 }; // { dg-error "invalid conversion from 'int' to 'A'" }
|
||||
B b { 6 }; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
C c { 3.0f }; // { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } }
|
||||
A a { 5 }; // { dg-error "invalid conversion from 'int' to 'A {enum}'" }
|
||||
B b { 6 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
C c { 3.0f }; // { dg-error "cannot convert \[^\n\r]* to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-1 }
|
||||
D d = { 7 }; // { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" }
|
||||
D d = { 7 }; // { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" }
|
||||
};
|
||||
|
||||
template <int N>
|
||||
void
|
||||
foo2 ()
|
||||
{
|
||||
A a1 { 5 }; // { dg-error "invalid conversion from 'int' to 'A'" }
|
||||
B b1 { 7 }; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
A a1 { 5 }; // { dg-error "invalid conversion from 'int' to 'A {enum}'" }
|
||||
B b1 { 7 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
C c1 { s };
|
||||
D d1 { D(t) }; // { dg-error "invalid cast from type 'T' to type 'D'" }
|
||||
D d2 { t }; // { dg-error "cannot convert 'T' to 'D' in initialization" "" { target c++14_down } }
|
||||
D d1 { D(t) }; // { dg-error "invalid cast from type 'T' to type 'D {enum}'" }
|
||||
D d2 { t }; // { dg-error "cannot convert 'T' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++1z } .-1 }
|
||||
D d3 { 9 }; // { dg-error "cannot convert 'int' to 'D' in initialization" "" { target c++14_down } }
|
||||
D d4 { l }; // { dg-error "cannot convert 'long int' to 'D' in initialization" "" { target c++14_down } }
|
||||
D d3 { 9 }; // { dg-error "cannot convert 'int' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
D d4 { l }; // { dg-error "cannot convert 'long int' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
D d5 { D(l) };
|
||||
D d6 { G }; // { dg-error "cannot convert 'A' to 'D' in initialization" "" { target c++14_down } }
|
||||
E e1 { 5 }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
E e2 { -1 }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
D d6 { G }; // { dg-error "cannot convert 'A {enum}' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
E e1 { 5 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
E e2 { -1 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
E e3 { 5.0 }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
E e3 { 5.0 }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
E e4 { 5.2 }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
E e4 { 5.2 }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
B b2 = { 7 }; // { dg-error "invalid conversion from 'int' to 'B'" }
|
||||
C c2 = { C { 8 } }; // { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
|
||||
D *d7 = new D { 9 }; // { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target c++14_down } }
|
||||
E *e5 = new E { -4 }; // { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
B b2 = { 7 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" }
|
||||
C c2 = { C { 8 } }; // { dg-error "cannot convert 'int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
D *d7 = new D { 9 }; // { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
E *e5 = new E { -4 }; // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
bar ({ 10 }); // { dg-error "cannot convert \[^\n\r]* to 'E' for argument" }
|
||||
bar (E { 9 }); // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
V v1 = { { 11 } }; // { dg-error "braces around scalar initializer for type 'E'" }
|
||||
V v2 = { E { 12 } }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
V v3 = { E { 5.0 } }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
bar ({ 10 }); // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' for argument" }
|
||||
bar (E { 9 }); // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
V v1 = { { 11 } }; // { dg-error "braces around scalar initializer for type 'E {enum}'" }
|
||||
V v2 = { E { 12 } }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
V v3 = { E { 5.0 } }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
V v4 = { 13 }; // { dg-error "cannot convert 'int' to 'E' in initialization" }
|
||||
if (B b3 { 5 }) // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
V v4 = { 13 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" }
|
||||
if (B b3 { 5 }) // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
;
|
||||
if (B b4 { 4.0 }) // { dg-error "cannot convert 'double' to 'B' in initialization" "" { target c++14_down } }
|
||||
if (B b4 { 4.0 }) // { dg-error "cannot convert 'double' to 'B {enum}' in initialization" "" { target c++14_down } }
|
||||
; // { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++1z } .-1 }
|
||||
C c3 { 8L }; // { dg-error "cannot convert 'long int' to 'C' in initialization" "" { target c++14_down } }
|
||||
B b4 {short (c + 5)}; // { dg-error "invalid conversion from 'short int' to 'B'" "" { target c++14_down } }
|
||||
B b5 {c + 5}; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
C c3 { 8L }; // { dg-error "cannot convert 'long int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
B b4 {short (c + 5)}; // { dg-error "invalid conversion from 'short int' to 'B {enum}'" "" { target c++14_down } }
|
||||
B b5 {c + 5}; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++1z } .-1 }
|
||||
C c4 { ll }; // { dg-error "cannot convert 'long long int' to 'C' in initialization" "" { target c++14_down } }
|
||||
C c4 { ll }; // { dg-error "cannot convert 'long long int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++1z } .-1 }
|
||||
C c5 {short (c + 5)}; // { dg-error "cannot convert 'short int' to 'C' in initialization" "" { target c++14_down } }
|
||||
C c6 {c + 5}; // { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
|
||||
C c5 {short (c + 5)}; // { dg-error "cannot convert 'short int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
C c6 {c + 5}; // { dg-error "cannot convert 'int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
}
|
||||
|
||||
template <int N>
|
||||
struct U2
|
||||
{
|
||||
U2 () : e { 5 } {} // { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
U2 (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
U2 () : e { 5 } {} // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
U2 (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
U2 (float) : e({ 6 }) {}
|
||||
E e;
|
||||
@ -140,11 +140,11 @@ struct U2
|
||||
template <int N>
|
||||
struct W2
|
||||
{
|
||||
A a { 5 }; // { dg-error "invalid conversion from 'int' to 'A'" "" { target *-*-* } .-2 }
|
||||
B b { 6 }; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } .-3 }
|
||||
C c { 3.0f }; // { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } .-4 }
|
||||
A a { 5 }; // { dg-error "invalid conversion from 'int' to 'A {enum}'" "" { target *-*-* } .-2 }
|
||||
B b { 6 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } .-3 }
|
||||
C c { 3.0f }; // { dg-error "cannot convert \[^\n\r]* to 'C {enum}' in initialization" "" { target c++14_down } .-4 }
|
||||
// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-5 }
|
||||
D d = { 7 }; // { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target *-*-* } .-6 }
|
||||
D d = { 7 }; // { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target *-*-* } .-6 }
|
||||
};
|
||||
|
||||
template <typename H, typename I, typename J, typename K, typename L, typename M>
|
||||
@ -152,54 +152,54 @@ void
|
||||
foo3 ()
|
||||
{
|
||||
void bar3 (L);
|
||||
H a1 { 5 }; // { dg-error "invalid conversion from 'int' to 'A'" }
|
||||
I b1 { 7 }; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
H a1 { 5 }; // { dg-error "invalid conversion from 'int' to 'A {enum}'" }
|
||||
I b1 { 7 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
J c1 { s };
|
||||
K d1 { K(t) }; // { dg-error "invalid cast from type 'T' to type 'D'" }
|
||||
K d2 { t }; // { dg-error "cannot convert 'T' to 'D' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "invalid cast from type 'T' to type 'D'" "" { target c++1z } .-1 }
|
||||
K d3 { 9 }; // { dg-error "cannot convert 'int' to 'D' in initialization" "" { target c++14_down } }
|
||||
K d4 { l }; // { dg-error "cannot convert 'long int' to 'D' in initialization" "" { target c++14_down } }
|
||||
K d1 { K(t) }; // { dg-error "invalid cast from type 'T' to type 'D {enum}'" }
|
||||
K d2 { t }; // { dg-error "cannot convert 'T' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "invalid cast from type 'T' to type 'D {enum}'" "" { target c++1z } .-1 }
|
||||
K d3 { 9 }; // { dg-error "cannot convert 'int' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
K d4 { l }; // { dg-error "cannot convert 'long int' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
K d5 { K(l) };
|
||||
K d6 { G }; // { dg-error "cannot convert 'A' to 'D' in initialization" "" { target c++14_down } }
|
||||
L e1 { 5 }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
L e2 { -1 }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
K d6 { G }; // { dg-error "cannot convert 'A {enum}' to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
L e1 { 5 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
L e2 { -1 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '-1' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
L e3 { 5.0 }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
L e3 { 5.0 }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
L e4 { 5.2 }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
L e4 { 5.2 }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.\[0-9]*e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
I b2 = { 7 }; // { dg-error "invalid conversion from 'int' to 'B'" }
|
||||
J c2 = { J { 8 } }; // { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
|
||||
K *d7 = new K { 9 }; // { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target c++14_down } }
|
||||
L *e5 = new L { -4 }; // { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
I b2 = { 7 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" }
|
||||
J c2 = { J { 8 } }; // { dg-error "cannot convert 'int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
K *d7 = new K { 9 }; // { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target c++14_down } }
|
||||
L *e5 = new L { -4 }; // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '-4' from 'int' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
bar3 ({ 10 }); // { dg-error "cannot convert \[^\n\r]* to 'E' for argument" }
|
||||
bar3 (E { 9 }); // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
M v1 = { { 11 } }; // { dg-error "braces around scalar initializer for type 'E'" }
|
||||
M v2 = { L { 12 } }; // { dg-error "cannot convert 'int' to 'E' in initialization" "" { target c++14_down } }
|
||||
M v3 = { L { 5.0 } }; // { dg-error "cannot convert 'double' to 'E' in initialization" "" { target c++14_down } }
|
||||
bar3 ({ 10 }); // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' for argument" }
|
||||
bar3 (E { 9 }); // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
M v1 = { { 11 } }; // { dg-error "braces around scalar initializer for type 'E {enum}'" }
|
||||
M v2 = { L { 12 } }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
M v3 = { L { 5.0 } }; // { dg-error "cannot convert 'double' to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
M v4 = { 13 }; // { dg-error "cannot convert 'int' to 'E' in initialization" }
|
||||
if (I b3 { 5 }) // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
M v4 = { 13 }; // { dg-error "cannot convert 'int' to 'E {enum}' in initialization" }
|
||||
if (I b3 { 5 }) // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
;
|
||||
if (I b4 { 4.0 }) // { dg-error "cannot convert 'double' to 'B' in initialization" "" { target c++14_down } }
|
||||
if (I b4 { 4.0 }) // { dg-error "cannot convert 'double' to 'B {enum}' in initialization" "" { target c++14_down } }
|
||||
; // { dg-error "narrowing conversion of '4.0e.0' from 'double' to 'short int' inside" "" { target c++1z } .-1 }
|
||||
J c3 { 8L }; // { dg-error "cannot convert 'long int' to 'C' in initialization" "" { target c++14_down } }
|
||||
I b4 {short (c + 5)}; // { dg-error "invalid conversion from 'short int' to 'B'" "" { target c++14_down } }
|
||||
I b5 {c + 5}; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } }
|
||||
J c3 { 8L }; // { dg-error "cannot convert 'long int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
I b4 {short (c + 5)}; // { dg-error "invalid conversion from 'short int' to 'B {enum}'" "" { target c++14_down } }
|
||||
I b5 {c + 5}; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of \[^\n\r]* from 'int' to 'short int' inside" "" { target c++1z } .-1 }
|
||||
J c4 { ll }; // { dg-error "cannot convert 'long long int' to 'C' in initialization" "" { target c++14_down } }
|
||||
J c4 { ll }; // { dg-error "cannot convert 'long long int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of 'll' from 'long long int' to 'int' inside" "" { target c++1z } .-1 }
|
||||
J c5 {short (c + 5)}; // { dg-error "cannot convert 'short int' to 'C' in initialization" "" { target c++14_down } }
|
||||
J c6 {c + 5}; // { dg-error "cannot convert 'int' to 'C' in initialization" "" { target c++14_down } }
|
||||
J c5 {short (c + 5)}; // { dg-error "cannot convert 'short int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
J c6 {c + 5}; // { dg-error "cannot convert 'int' to 'C {enum}' in initialization" "" { target c++14_down } }
|
||||
}
|
||||
|
||||
template <typename L>
|
||||
struct U3
|
||||
{
|
||||
U3 () : e { 5 } {} // { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
U3 (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E' in initialization" "" { target c++14_down } }
|
||||
U3 () : e { 5 } {} // { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
U3 (int) : e { 5.0 } {}// { dg-error "cannot convert \[^\n\r]* to 'E {enum}' in initialization" "" { target c++14_down } }
|
||||
// { dg-error "narrowing conversion of '5.0e.0' from 'double' to 'unsigned char' inside" "" { target c++1z } .-1 }
|
||||
U3 (float) : e({ 6 }) {}
|
||||
L e;
|
||||
@ -208,11 +208,11 @@ struct U3
|
||||
template <typename H, typename I, typename J, typename K>
|
||||
struct W3
|
||||
{
|
||||
H a { 5 }; // { dg-error "invalid conversion from 'int' to 'A'" "" { target *-*-* } .-2 }
|
||||
I b { 6 }; // { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } .-3 }
|
||||
J c { 3.0f }; // { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } .-4 }
|
||||
H a { 5 }; // { dg-error "invalid conversion from 'int' to 'A {enum}'" "" { target *-*-* } .-2 }
|
||||
I b { 6 }; // { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } .-3 }
|
||||
J c { 3.0f }; // { dg-error "cannot convert \[^\n\r]* to 'C {enum}' in initialization" "" { target c++14_down } .-4 }
|
||||
// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-5 }
|
||||
K d = { 7 }; // { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target *-*-* } .-6 }
|
||||
K d = { 7 }; // { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target *-*-* } .-6 }
|
||||
};
|
||||
|
||||
void
|
||||
@ -221,17 +221,17 @@ test ()
|
||||
foo2<0> ();
|
||||
U2<0> u20;
|
||||
U2<1> u21 (5);
|
||||
W2<0> w2; // { dg-error "invalid conversion from 'int' to 'A'" }
|
||||
// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } .-1 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } .-2 }
|
||||
W2<0> w2; // { dg-error "invalid conversion from 'int' to 'A {enum}'" }
|
||||
// { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } .-1 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'C {enum}' in initialization" "" { target c++14_down } .-2 }
|
||||
// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-3 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target *-*-* } .-4 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target *-*-* } .-4 }
|
||||
foo3<A, B, C, D, E, V> ();
|
||||
U3<E> u30;
|
||||
U3<E> u31 (5);
|
||||
W3<A, B, C, D> w3; // { dg-error "invalid conversion from 'int' to 'A'" }
|
||||
// { dg-error "invalid conversion from 'int' to 'B'" "" { target c++14_down } .-1 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'C' in initialization" "" { target c++14_down } .-2 }
|
||||
W3<A, B, C, D> w3; // { dg-error "invalid conversion from 'int' to 'A {enum}'" }
|
||||
// { dg-error "invalid conversion from 'int' to 'B {enum}'" "" { target c++14_down } .-1 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'C {enum}' in initialization" "" { target c++14_down } .-2 }
|
||||
// { dg-error "narrowing conversion of '3.0e.0f' from 'float' to 'int' inside" "" { target c++1z } .-3 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'D' in initialization" "" { target *-*-* } .-4 }
|
||||
// { dg-error "cannot convert \[^\n\r]* to 'D {enum}' in initialization" "" { target *-*-* } .-4 }
|
||||
}
|
||||
|
@ -10,14 +10,14 @@ void example ()
|
||||
X x;
|
||||
Y y;
|
||||
|
||||
x = 10; // { dg-warning "invalid conversion from .int. to .X." "invalid" }
|
||||
x = 10; // { dg-warning "invalid conversion from .int. to .X {enum}." "invalid" }
|
||||
// { dg-warning "unspecified" "unspecified" { target *-*-* } .-1 }
|
||||
x = 1; // { dg-warning "invalid conversion from .int. to .X." }
|
||||
x = C; // { dg-error "cannot convert .Y. to .X. in assignment" }
|
||||
x = D; // { dg-error "cannot convert .Y. to .X. in assignment" }
|
||||
y = A; // { dg-error "cannot convert .X. to .Y. in assignment" }
|
||||
x = y; // { dg-error "cannot convert .Y. to .X. in assignment" }
|
||||
x = i; // { dg-warning "invalid conversion from .int. to .X." }
|
||||
x = 1; // { dg-warning "invalid conversion from .int. to .X {enum}." }
|
||||
x = C; // { dg-error "cannot convert .Y {enum}. to .X {enum}. in assignment" }
|
||||
x = D; // { dg-error "cannot convert .Y {enum}. to .X {enum}. in assignment" }
|
||||
y = A; // { dg-error "cannot convert .X {enum}. to .Y {enum}. in assignment" }
|
||||
x = y; // { dg-error "cannot convert .Y {enum}. to .X {enum}. in assignment" }
|
||||
x = i; // { dg-warning "invalid conversion from .int. to .X {enum}." }
|
||||
}
|
||||
|
||||
void foo ()
|
||||
|
Loading…
x
Reference in New Issue
Block a user