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