blob: 43fcdf29f61da4a8fd609d10679b0f3e7a3e0fc0 [file] [log] [blame]
// PR c++/25814
// { dg-do compile { target c++11 } }
// { dg-additional-options "-fdiagnostics-show-caret" }
// Test -Wvexing-parse's fix-it hints in C++11.
#include <initializer_list>
struct X { };
struct S {
S(X);
S(std::initializer_list<X>);
int m;
};
struct T {
T(X);
int m;
};
struct W {
W();
W(std::initializer_list<X>);
int m;
};
struct U {
U();
int m;
};
int
main ()
{
/*
Careful what we're suggesting:
S a((X())) -> S(X)
S a({X()}) -> (std::initializer_list<X>)
S a{X()} -> (std::initializer_list<X>)
*/
S a(X()); // { dg-warning "6:parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
S a(X());
^~~~~
{ dg-end-multiline-output "" } */
// { dg-message "6:add parentheses to declare a variable" "" { target *-*-* } 41 }
/* { dg-begin-multiline-output "" }
S a(X());
^~~~~
( )
{ dg-end-multiline-output "" } */
T t(X()); // { dg-warning "6:parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
T t(X());
^~~~~
{ dg-end-multiline-output "" } */
// { dg-message "6:replace parentheses with braces to declare a variable" "" { target *-*-* } 53 }
/* { dg-begin-multiline-output "" }
T t(X());
^~~~~
-
{ -
}
{ dg-end-multiline-output "" } */
int n( ); // { dg-warning "8:empty parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
int n( );
^~~~~
{ dg-end-multiline-output "" } */
// { dg-message "8:remove parentheses to default-initialize a variable" "" { target *-*-* } 67 }
/* { dg-begin-multiline-output "" }
int n( );
^~~~~
-----
{ dg-end-multiline-output "" } */
// { dg-message "8:or replace parentheses with braces to value-initialize a variable" "" { target *-*-* } 67 }
S s(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
S s();
^~
{ dg-end-multiline-output "" } */
X x(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
X x();
^~
{ dg-end-multiline-output "" } */
// { dg-message "6:remove parentheses to default-initialize a variable" "" { target *-*-* } 86 }
/* { dg-begin-multiline-output "" }
X x();
^~
--
{ dg-end-multiline-output "" } */
// { dg-message "6:or replace parentheses with braces to aggregate-initialize a variable" "" { target *-*-* } 86 }
W w(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
W w();
^~
{ dg-end-multiline-output "" } */
// { dg-message "6:remove parentheses to default-initialize a variable" "" { target *-*-* } 99 }
/* { dg-begin-multiline-output "" }
W w();
^~
--
{ dg-end-multiline-output "" } */
T t2(); // { dg-warning "7:empty parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
T t2();
^~
{ dg-end-multiline-output "" } */
U u(); // { dg-warning "6:empty parentheses were disambiguated as a function declaration" }
/* { dg-begin-multiline-output "" }
U u();
^~
{ dg-end-multiline-output "" } */
// { dg-message "6:remove parentheses to default-initialize a variable" "" { target *-*-* } 117 }
/* { dg-begin-multiline-output "" }
U u();
^~
--
{ dg-end-multiline-output "" } */
// { dg-message "6:or replace parentheses with braces to value-initialize a variable" "" { target *-*-* } 117 }
}