digitalmars.D.bugs - [Issue 4018] New: Line Number not set at instatiation point
- d-bugmail puremagic.com (50/50) Mar 27 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (15/15) Mar 27 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (37/37) Mar 27 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (10/10) Mar 20 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (20/20) Mar 20 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (12/12) Oct 02 2013 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (6/6) Oct 02 2013 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (14/14) Oct 03 2013 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (10/10) Oct 03 2013 http://d.puremagic.com/issues/show_bug.cgi?id=4018
- d-bugmail puremagic.com (8/9) Oct 03 2013 http://d.puremagic.com/issues/show_bug.cgi?id=4018
http://d.puremagic.com/issues/show_bug.cgi?id=4018
Summary: Line Number not set at instatiation point
Product: D
Version: 2.041
Platform: Other
URL: http://digitalmars.com/d/2.0/template.html#TemplateVal
ueParameter
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: Jesse.K.Phillips+D gmail.com
CC: Jesse.K.Phillips+D gmail.com
09:30:37 PDT ---
The specification states that:
The __FILE__ and __LINE__ expand to the source file name and line number at the
point of instantiation.
This is not the case for the code below:
-------------------
import std.stdio;
void ODSfd(alias n)() {
writefln("%s:%s | %s = %d", __FILE__, __LINE__, n.stringof, n);
}
void ODSfs(alias n)() {
writefln("%s:%s | %s = %s", __FILE__, __LINE__, n.stringof, n);
}
void ODSfx(alias n)() {
writefln("%s:%s | %s = 0x%08x", __FILE__, __LINE__, n.stringof, n);
}
void main() {
int zbar = 5;
string foo = "hi";
ODSfd!(zbar);
ODSfs!(foo);
ODSfx!(zbar);
}
-------------------
Expected output:
file.d:17 | zbar = 5
file.d:18 | foo = hi
file.d:19 | zbar = 0x00000005
Actual output:
file.d:4 | zbar = 5
file.d:7 | foo = hi
file.d:10 | zbar = 0x00000005
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 27 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4018
Justin Spahr-Summers <Justin.SpahrSummers gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |Justin.SpahrSummers gmail.c
| |om
2010-03-27 11:44:50 CDT ---
Note that the docs say that referring to template value parameters. The code
you posted is intended behavior; you would have to add a couple value
parameters to each one that default to __FILE__ and __LINE__ and print those
out.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 27 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4018
Jesse Phillips <Jesse.K.Phillips+D gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
OS/Version|Linux |All
09:55:31 PDT ---
In that case, the below has the same result.
------------
import std.stdio;
void ODSfd(alias n, string file = __FILE__, int line = __LINE__)() {
writefln("%s:%s | %s = %d", file, line, n.stringof, n);
}
void ODSfs(alias n, string file = __FILE__, int line = __LINE__)() {
writefln("%s:%s | %s = %s", file, line, n.stringof, n);
}
void ODSfx(alias n, string file = __FILE__, int line = __LINE__)() {
writefln("%s:%s | %s = 0x%08x", file, line, n.stringof, n);
}
void main() {
int zbar = 5;
string foo = "hi";
ODSfd!(zbar);
ODSfs!(foo);
ODSfx!(zbar);
}
-----------------
Expected Output:
linefile.d:17 | zbar = 5
linefile.d:18 | foo = hi
linefile.d:19 | zbar = 0x00000005
Actual Output:
linefile.d:3 | zbar = 5
linefile.d:6 | foo = hi
linefile.d:9 | zbar = 0x00000005
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 27 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4018
dawg dawgfoto.de changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |changlon gmail.com
*** Issue 5686 has been marked as a duplicate of this issue. ***
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 20 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4018
dawg dawgfoto.de changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dawg dawgfoto.de
This only happens with explicit instantiations foo!(targs)(args).
In that case semantic is run in a different scope.
A workaround for functions is to split the parameters into explicit
and default parameters.
template foo(T)
{
void foo(size_t line = __LINE__)()
{
pragma(msg, line);
}
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 20 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4018
Kenji Hara <k.hara.pg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |pull
Platform|Other |All
Version|2.041 |D2
https://github.com/D-Programming-Language/dmd/pull/2617
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 02 2013
http://d.puremagic.com/issues/show_bug.cgi?id=4018 19:07:11 PDT --- *** Issue 11158 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 02 2013
http://d.puremagic.com/issues/show_bug.cgi?id=4018 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/7c4ef3310168fd6f30f704e005845c197df9cc7f fix Issue 4018 - __FILE__ and __LINE__ as default template parameters not set to instantiation point per spec Also fixes __MODULE__, __FUNCITON__, and __PRETTY_FUNCTION__ https://github.com/D-Programming-Language/dmd/commit/6c8f9ffe16a19a1ba81eef0b645b1d755329f1d9 Issue 4018 - __FILE__ and __LINE__ as default template parameters not set to instantiation point per spec -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 03 2013
http://d.puremagic.com/issues/show_bug.cgi?id=4018
Andrej Mitrovic <andrej.mitrovich gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |andrej.mitrovich gmail.com
Resolution| |FIXED
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 03 2013
http://d.puremagic.com/issues/show_bug.cgi?id=4018*** Issue 11158 has been marked as a duplicate of this issue. ***Oh, I thought this one was already fixed. Now it is, thanks a lot Kenji. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 03 2013









d-bugmail puremagic.com 