[Issue 4197] __error iso assert failure in struct function in/out statement

2011-04-28 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4197


Don  changed:

   What|Removed |Added

   Keywords||ice-on-invalid-code
 CC||clugd...@yahoo.com.au
Version|unspecified |D1 & D2
 OS/Version|Windows |All
   Severity|normal  |major


--- Comment #4 from Don  2011-04-28 13:12:33 PDT ---
Original title was:
"__error iso assert failure in struct function in/out statement"

A reduced test case shows it is a very general ICE.
*Any* error inside an in() or out() contract in a function that is has its
semantic run through CTFE, has all errors gagged. This can result in a cryptic
error message (as in the original test case), or an ICE. This one is
ICE(glue.c), but I've also seen ICE(toir.c). It fails on both D1 and D2.

const Bug4197 s4197 = Bug4197();

int func4197()
in { undefined; }
body { return 0; }

struct Bug4197 {
  static const int S2 = func4197();
}

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


[Issue 4197] __error iso assert failure in struct function in/out statement

2010-05-16 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4197



--- Comment #3 from st...@despam.it 2010-05-16 14:11:22 PDT ---
(In reply to comment #1)
> 
> The second argument to assert() - if present - is supposed to be a string
> describing the condition. The error message without the second parameter or
> with a string there instead is correct.

I was expecting something like :
Error: cannot implicitly cast "random" of type unknown to string
Or 
Error: "random" not defined

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


[Issue 4197] __error iso assert failure in struct function in/out statement

2010-05-16 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4197


bearophile_h...@eml.cc changed:

   What|Removed |Added

 CC||bearophile_h...@eml.cc


--- Comment #2 from bearophile_h...@eml.cc 2010-05-16 11:03:13 PDT ---
This can be a simplified version of the same problem:


enum Foo F1 = Foo();
struct Foo {
const Foo F2 = func();
}
Foo func() {
assert(false, random);
return Foo();
}
void main() {}

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


[Issue 4197] __error iso assert failure in struct function in/out statement

2010-05-16 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=4197


Justin Spahr-Summers  changed:

   What|Removed |Added

 CC||justin.spahrsumm...@gmail.c
   ||om


--- Comment #1 from Justin Spahr-Summers  
2010-05-16 12:48:17 CDT ---
(In reply to comment #0)
> module main;
> 
> const S S1 = S();
> 
> struct S 
> {
>   static S func( S s_ )
>   in{ assert(false,random); }
>   out(result){ assert(false,random); }
>   body{ return s_; }
> 
>   const S S2 = func(S());
> }
> void main(){}
> --
> main.d(8): Error: __error <---# should be assert failure #
> main.d(12): Error: cannot evaluate func((S())) at compile time

The second argument to assert() - if present - is supposed to be a string
describing the condition. The error message without the second parameter or
with a string there instead is correct.

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