[Issue 2816] Sudden-death static assert is not very useful

2014-04-18 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=2816

Walter Bright  changed:

   What|Removed |Added

Version|1.042   |D1

--


[Issue 2816] Sudden-death static assert is not very useful

2010-01-03 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816


Don  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 2816] Sudden-death static assert is not very useful

2009-12-31 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816



--- Comment #13 from Walter Bright  2009-12-31 
11:11:36 PST ---
Fixed dmd 1.054 and 2.038

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 2816] Sudden-death static assert is not very useful

2009-12-15 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816


Leandro Lucarella  changed:

   What|Removed |Added

 CC||llu...@gmail.com


--- Comment #12 from Leandro Lucarella  2009-12-15 07:14:58 
PST ---
http://www.dsource.org/projects/dmd/changeset/294

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 2816] Sudden-death static assert is not very useful

2009-04-18 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #11 from clugd...@yahoo.com.au  2009-04-18 17:13 ---
Found another bug in this patch.  Should start the count from 0, not 1.
Otherwise you can get a segfault when the out-by-1 error shows up in the "only
show first and last iterations" case.

in TemplateInstance::printInstantiationTrace()

// determine instantiation depth and number of recursive instantiations
int n_instantiations = 0;


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #10 from shro8...@vandals.uidaho.edu  2009-04-09 12:33 ---

(In reply to comment #9)

> Note that it detects the recursive instantiation in foo!(), even though it is
> instantiated from three different places.

it would be nice to have (maybe as an "even more verbose" option) a breakdown
of recursive invocations:

bug.d(14):100 recursive instantiations from here: foo!(196) [50 at
bug.d(7), 50 at bug.d(8)]


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #9 from clugd...@yahoo.com.au  2009-04-09 04:24 ---
Error messages generated from my patch for the code below:
bug.d(2): Error: static assert  (0) is false
bug.d(9):instantiatied from here: bar!()
bug.d(14):100 recursive instantiations from here: foo!(196)
bug.d(19):253 recursive instantiations from here: baz!(300)

(Oops -- just realised I there's a typo in "instantiated" in the non-recursive
messages. That's easy to fix).
Note that it detects the recursive instantiation in foo!(), even though it is
instantiated from three different places.


template bar() {
   static assert(0);
}

template foo(int N) {
  static if (N>0) {
 static if (N&1) alias foo!(N-3) foo;
 else alias foo!(N-1) foo;
  } else alias bar!() foo; 
}

template baz(int M) {
   static if (M<50) {
 alias foo!(M*4) baz;
   } else alias baz!(M-1) baz;
}

void main() {
  int x = baz!(300);
}


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #8 from clugd...@yahoo.com.au  2009-04-09 04:18 ---
Created an attachment (id=319)
 --> (http://d.puremagic.com/issues/attachment.cgi?id=319&action=view)
patch for dmd2.028

I've adjusted the backtrace in two ways:
(1) displays line numbers in what I believe is a more IDE-friendly manner;
(2) detects recursive template instantiations and collapses them into a single
line.
I've made no changes other than to the InstantiationTrace function.


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #7 from clugd...@yahoo.com.au  2009-04-09 02:43 ---
Christian -- Thanks, this is fantastic!
I've modified it so that it detects recursive template instantiations -- this
dramatically reduces the size of the trace. A patch will follow shortly.


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-08 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #6 from kamm-removet...@incasoftware.de  2009-04-08 07:43 
---
Created an attachment (id=318)
 --> (http://d.puremagic.com/issues/attachment.cgi?id=318&action=view)
template instantiation trace patch

patch against DMD 1.043, superficially tested

Note that this originated as a hack and might have been possible without adding
tinst to Scope and TemplateInstance. There were discussions about including
only certain template instantiations in such a trace:
http://www.mail-archive.com/digitalmar...@puremagic.com/msg03614.html


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #5 from shro8...@vandals.uidaho.edu  2009-04-07 11:07 ---

For that matter, if template errors could all be given optional (some flag?)
stack traces (not just chained errors) that would be cool.

I'm thinking somthing like:

template error foo bla bla bla.
invoked at file.d:7235 from TBar
invoked at file.d:752 from TBaz
invoked at code.d:7235 from Bling
...

maybe (another flag?) some formatted printing of the args to (limited to 80
columns)


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #4 from clugd...@yahoo.com.au  2009-04-07 10:47 ---
(In reply to comment #3)
> Don, LDC already implemented template instantiation traces. Check
> StaticAssert::semantic2 and TemplateInstance::printInstantiationTrace. I
> emailed Walter about them at the time. If desired, I can provide a patch
> against DMD.

That'd be great!


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816


kamm-removet...@incasoftware.de changed:

   What|Removed |Added

   Keywords||patch




--- Comment #3 from kamm-removet...@incasoftware.de  2009-04-07 10:21 
---
Don, LDC already implemented template instantiation traces. Check
StaticAssert::semantic2 and TemplateInstance::printInstantiationTrace. I
emailed Walter about them at the time. If desired, I can provide a patch
against DMD.


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816


clugd...@yahoo.com.au changed:

   What|Removed |Added

   Keywords|patch   |




--- Comment #2 from clugd...@yahoo.com.au  2009-04-07 05:55 ---
(In reply to comment #1)
> The static assert does give you file/line, so it does give context. But I'll
> add the expression print, too.
> 
> But I think static assert errors should be fatal. They usually involve
> misconfigured code, it is pointless to continue.
> 

Yes, there will not be any more meaningful errors. But you still need a back
trace.
If the static assert occurs in (say) a library template, knowing that it
happened in std.functional at line 92 doesn't help very much -- you want to
know where the problem is in _your_ code. (That's a real example, BTW).

Actually, I'll have another try, and see if I can create a backtrace, and THEN
make it a fatal error. So I'm retracting this patch.


-- 



[Issue 2816] Sudden-death static assert is not very useful

2009-04-07 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=2816





--- Comment #1 from bugzi...@digitalmars.com  2009-04-07 04:21 ---
The static assert does give you file/line, so it does give context. But I'll
add the expression print, too.

But I think static assert errors should be fatal. They usually involve
misconfigured code, it is pointless to continue.


--