blob: 73d628584d5f1fac861effef2c89feff409b0e24 [file] [log] [blame]
/*
TEST_OUTPUT:
---
fail_compilation/diag16977.d(25): Error: undefined identifier `undefined`, did you mean function `undefinedId`?
fail_compilation/diag16977.d(26): Error: cannot implicitly convert expression `"\x01string"` of type `string` to `int`
fail_compilation/diag16977.d(27): Error: none of the overloads of template `diag16977.templ` are callable using argument types `!()(int)`
fail_compilation/diag16977.d(20): Candidate is: `templ(S)(S s)`
with `S = int`
must satisfy the following constraint:
` false`
fail_compilation/diag16977.d(28): Error: cannot implicitly convert expression `5` of type `int` to `string`
fail_compilation/diag16977.d(30): Error: template instance `diag16977.test.funcTemplate!string` error instantiating
---
*/
// when copying the expression of a default argument, location information is
// replaced by the location of the caller to improve debug information
// verify error messages are displayed for the original location only
string templ(S)(S s) if(false) { return null; }
void test()
{
// local functions to defer evaluation into semantic3 pass
void undefinedId(int x, int y = undefined) {}
void badOp(int x, int y = 1 ~ "string") {}
void lazyTemplate(int x, lazy int y = 4.templ) {}
void funcTemplate(T)(T y = 5) {}
funcTemplate!string();
undefinedId(1);
badOp(2);
lazyTemplate(3);
}