Bug 1913 – Template error message reports correct line # but wrong file

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Linux
Creation time
2008-03-12T10:18:00Z
Last change time
2015-06-09T01:14:37Z
Keywords
diagnostic
Assigned to
nobody
Creator
webmaster

Comments

Comment #0 by webmaster — 2008-03-12T10:18:08Z
The code below actually has two problems with the error messages produced. This bug is to report the fact that the second error message reports the wrong file name (although it reports the right line number). dmd 2.012, Linux BEGIN MODULE "a.d" import b; import std.stdio; template typeof_each(T,TPL...) { static if(TPL.length == 0) alias Tuple!(typeof(T)) typeof_each; else alias Tuple!(typeof(T), typeof_each!(TPL)) typeof_each; } template typeid_each(T,TPL...) { static if(TPL.length == 0) alias Tuple!(typeid(T)) typeid_each; else alias Tuple!(typeid(T), typeid_each!(TPL)) typeid_each; } void foo(ARGS_TPL...)(ARGS_TPL args) { writefln("", typeid_each!(typeof_each!(ARGS_TPL))); } void bar() { foo(',' , ','); } BEGIN MODULE "b.d" template Tuple(TPL...) { alias TPL Tuple; } END CODE COMPILER OUTPUT Error: expression & _D10TypeInfo_a6__initZ is not a valid template value argument b.d(16): template instance b.Tuple!(& _D10TypeInfo_a6__initZ) error instantiating
Comment #1 by simen.kjaras — 2008-03-25T17:25:21Z
Simpler code to showcase the error. Bug is in message #1 BEGIN MODULE "a.d" module a; import b; void main() { int bar; foo!(bar) baz; } BEGIN MODULE "b.d" module b; struct foo(alias T) { mixin T; } END CODE COMPILER OUTPUT a.d(5): mixin T isn't a template a.d(7): template instance a.main.foo!(bar) error instantiating
Comment #2 by webmaster — 2008-07-09T14:32:19Z
The error in question (the one that had the wrong line number) went away. So, I no longer have this problem. However, since the error went away altogether, I cannot confirm that the erroneous filename reporting is actually fixed. It is possible that maybe the problem that exposed it simply vanished.
Comment #3 by k.hara.pg — 2011-07-09T20:13:48Z
As Russ says in comment #2, now Error message is correct (dmd 45cc9c5). ---- b.d(5): Error: mixin T isn't a template a.d(7): Error: template instance a.main.foo!(bar) error instantiating ----