1 /*
2 TEST_OUTPUT:
3 ---
4 fail_compilation/diag15713.d(18): Error: no property 'widthSign' for type 'Data'
5 fail_compilation/diag15713.d(38): Error: template instance test.conwritefImpl!("parse-int", "width", "\x0a", Data()) error instantiating
6 fail_compilation/diag15713.d(43):        instantiated from here: conwritefImpl!("main", "\x0a", Data())
7 fail_compilation/diag15713.d(48):        instantiated from here: fdwritef!()
8 ---
9 */
10 
wrWriteWidthChar()11 void wrWriteWidthChar() {}
12 
WrData(int,int)13 auto WrData(int , int )
14 {
15     struct Data
16     {
17         auto initInt(string name)()
18         {
19             __traits(getMember, this, name ~ "Sign");
20         }
21     }
22     return Data();
23 }
24 
25 template conwritefImpl(string state, string field, string fmt, alias data, AA...)
26 if (state == "parse-int")
27 {
28     enum conwritefImpl = data.initInt!field;
29 }
30 
baz(string state,string fmt,alias data,AA...)31 template baz(string state, string fmt, alias data, AA...) {}
bar(string state,string fmt,alias data,AA...)32 template bar(string state, string fmt, alias data, AA...) {}
33 
34     enum a = "parse-format";
35 
36 template conwritefImpl(string state, string fmt, alias data, AA...)
37 if (state == "main")
38 {
39     enum conwritefImpl = conwritefImpl!("parse-int", "width", fmt, data);
40 }
41 
fdwritef()42 void fdwritef()()
43 {
44     conwritefImpl!("main", "\n", WrData(0, 0));
45 }
46 
conwriteln()47 void conwriteln()
48 {
49     fdwritef();
50 }
51