// PERMUTE_ARGS: // EXTRA_SOURCES: imports/testkwd_file.d module testkeyword; import imports.testkwd; /****************************************/ // calee test static assert(getCalleeFile() == thatFile); static assert(getCalleeLine() == thatLine); static assert(getCalleeMod() == thatMod); static assert(getCalleeFunc() == thatFunc); static assert(getCalleeFunc2() == thatFunc2); void testCallee() { static assert(getCalleeFile() == thatFile); static assert(getCalleeLine() == thatLine); static assert(getCalleeMod() == thatMod); static assert(getCalleeFunc() == thatFunc); static assert(getCalleeFunc2() == thatFunc2); } /****************************************/ // caller test version(Windows) enum sep = "\\"; else enum sep = "/"; enum thisFile = "runnable"~sep~"testkeyword.d"; enum thisMod = "testkeyword"; static assert(getFuncArgFile() == thisFile); static assert(getFuncArgLine() == 33); static assert(getFuncArgMod() == thisMod); static assert(getFuncArgFunc() == ""); static assert(getFuncArgFunc2() == ""); static assert(getFuncTiargFile() == thisFile); static assert(getFuncTiargLine() == 39); static assert(getFuncTiargMod() == thisMod); static assert(getFuncTiargFunc() == ""); static assert(getFuncTiargFunc2() == ""); static assert(getInstTiargFile!() == thisFile); static assert(getInstTiargLine!() == 45); static assert(getInstTiargMod!() == thisMod); static assert(getInstTiargFunc!() == ""); static assert(getInstTiargFunc2!() == ""); void main(string[] args) nothrow { enum thisFunc = "testkeyword.main"; enum thisFunc2 = "void testkeyword.main(string[] args) nothrow"; static assert(getFuncArgFile() == thisFile); static assert(getFuncArgLine() == 56); static assert(getFuncArgMod() == thisMod); static assert(getFuncArgFunc() == thisFunc); static assert(getFuncArgFunc2() == thisFunc2); static assert(getFuncTiargFile() == thisFile); static assert(getFuncTiargLine() == 62); static assert(getFuncTiargMod() == thisMod); static assert(getFuncTiargFunc() == thisFunc); static assert(getFuncTiargFunc2() == thisFunc2); static assert(getInstTiargFile!() == thisFile); static assert(getInstTiargLine!() == 68); static assert(getInstTiargMod!() == thisMod); static assert(getInstTiargFunc!() == thisFunc); static assert(getInstTiargFunc2!() == thisFunc2); void nested(int x, float y) nothrow { enum thisFunc = "testkeyword.main.nested"; enum thisFunc2 = "void testkeyword.main.nested(int x, float y) nothrow"; static assert(getFuncArgFile() == thisFile); static assert(getFuncArgLine() == 79); static assert(getFuncArgMod() == thisMod); static assert(getFuncArgFunc() == thisFunc); static assert(getFuncArgFunc2() == thisFunc2); static assert(getFuncTiargFile() == thisFile); static assert(getFuncTiargLine() == 85); static assert(getFuncTiargMod() == thisMod); static assert(getFuncTiargFunc() == thisFunc); static assert(getFuncTiargFunc2() == thisFunc2); static assert(getInstTiargFile!() == thisFile); static assert(getInstTiargLine!() == 91); static assert(getInstTiargMod!() == thisMod); static assert(getInstTiargFunc!() == thisFunc); static assert(getInstTiargFunc2!() == thisFunc2); } nested(1, 1.0); auto funcLiteral = (int x, int y) { enum thisFunc = "testkeyword.main.__lambda5"; enum thisFunc2 = "testkeyword.main.__lambda5(int x, int y)"; static assert(getFuncArgFile() == thisFile); static assert(getFuncArgLine() == 104); static assert(getFuncArgMod() == thisMod); static assert(getFuncArgFunc() == thisFunc); static assert(getFuncArgFunc2() == thisFunc2); static assert(getFuncTiargFile() == thisFile); static assert(getFuncTiargLine() == 110); static assert(getFuncTiargMod() == thisMod); static assert(getFuncTiargFunc() == thisFunc); static assert(getFuncTiargFunc2() == thisFunc2); static assert(getInstTiargFile!() == thisFile); static assert(getInstTiargLine!() == 116); static assert(getInstTiargMod!() == thisMod); static assert(getInstTiargFunc!() == thisFunc); static assert(getInstTiargFunc2!() == thisFunc2); }; funcLiteral(1, 2); static struct S { void func(string cs, T1, alias T2, T...)(int x) const { enum thisFunc = `testkeyword.main.S.func!("foo", int, symbol, int[], float[]).func`; enum thisFunc2 = `void testkeyword.main.S.func!("foo", int, symbol, int[], float[]).func(int x) const`; static assert(getFuncArgFile() == thisFile); static assert(getFuncArgLine() == 131); static assert(getFuncArgMod() == thisMod); static assert(getFuncArgFunc() == thisFunc); static assert(getFuncArgFunc2() == thisFunc2); static assert(getFuncTiargFile() == thisFile); static assert(getFuncTiargLine() == 137); static assert(getFuncTiargMod() == thisMod); static assert(getFuncTiargFunc() == thisFunc); static assert(getFuncTiargFunc2() == thisFunc2); static assert(getInstTiargFile!() == thisFile); static assert(getInstTiargLine!() == 143); static assert(getInstTiargMod!() == thisMod); static assert(getInstTiargFunc!() == thisFunc); static assert(getInstTiargFunc2!() == thisFunc2); } } static int symbol; S s; s.func!("foo", int, symbol, int[], float[])(1); }