| // https://issues.dlang.org/show_bug.cgi?id=23351 |
| enum strings = |
| [ |
| "a[(b).", |
| "[(a)(b).", |
| "a(={@.()(", |
| "a[b,[(c).", |
| "a[b#([(c).", |
| "[a@b[(c).", |
| "[((a).", |
| "[a)b[(c).", |
| "a[b)[(c).", |
| "a(b[(c).", |
| "a[b()c[(d).", |
| "a[(b[(c).", |
| "a(b[(c).", |
| "[(@@a b[(c).", |
| "a[(!b)c[(d).", |
| "[(^a)b[(c).", |
| "a(b[(c).", |
| "~[a.b[(c).", |
| "[a).[(b c d(e[(f).", |
| "[((a).", |
| "[a}b[(c).", |
| "a[b[c..(d).", |
| "[1a.[(b).", |
| "a[({in){,", |
| "a[^in(b[c=])S....,", |
| "a[({in[({)){," |
| ]; |
| template KidNamedFinger(T) |
| { |
| |
| } |
| void dummy() |
| { |
| static foreach(str; strings) |
| { |
| /* |
| The above strings are all gibberish, they should |
| fail to parse but not segfault the compiler. |
| */ |
| { |
| enum exp = __traits(compiles, mixin(str)); |
| static assert(!exp); |
| enum t = __traits(compiles, KidNamedFinger!(mixin(str))); |
| static assert(!t); |
| } |
| } |
| } |