www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 378] New: Assertion failure: '0' on line 216 in file 'init.c'

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=378

           Summary: Assertion failure: '0' on line 216 in file 'init.c'
           Product: D
           Version: 0.167
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: h3r3tic mat.uni.torun.pl


struct Ranged(T){
        T value, min, max, range;
}

typedef Ranged!(float) Degree = {0f, 0f, 360f, 360f};


void main() {
        Degree a;
}


-- 
Sep 27 2006
next sibling parent Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

d-bugmail puremagic.com schrieb am 2006-09-27:
 http://d.puremagic.com/issues/show_bug.cgi?id=378
 struct Ranged(T){
         T value, min, max, range;
 }

 typedef Ranged!(float) Degree = {0f, 0f, 360f, 360f};


 void main() {
         Degree a;
 }
Added to DStress as http://dstress.kuehne.cn/run/t/typedef_20_A.d http://dstress.kuehne.cn/run/t/typedef_20_B.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFHMd8LK5blCcjpWoRAoQ/AJ9Gv/sORwzEnqpR2YiKjmxrigh/YQCfVSeD BQVrBzlnFXjwU41CBz1QUB0= =nbYK -----END PGP SIGNATURE-----
Sep 29 2006
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=378






Adding 'static' before Degree a eliminates the error.  A reduced test case that
shows the same behavior:

struct Ranged {
    float value, min, max, range;
}

void main() {
    Ranged a = {0f, 0f, 360f, 360f};
} 

Changing the line in main to "static Ranged ..." also removes the error.  Is
the original test case actually valid code?  Struct initializers, by spec, are
only allowed for static instances.  The syntax for default initialization for
structs is like this:

    struct X { int a; int b; int c; int d = 7; }

I'm not sure that it's possible to give struct's new default initializations
when typedef'ing them like this.  Walter?  Language lawyer?  For reference, the
typedef part of the spec is fairly anemic and only gives this one example:

    typedef int myint = 7;
    myint m;        // initialized to 7


-- 
Oct 16 2006
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=378






With dmd 167 it reported this:
  378-a.d(8): variable foo.main.a is not a static and cannot have static
initializer

If I had to guess, I'd say the problem is related to the stack variable
initialization changes in 168.


-- 
Oct 16 2006
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=378


h3r3tic mat.uni.torun.pl changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|ice-on-valid-code           |ice-on-invalid-code





You're probably right... Too bad, as default initialization for non-static
struct instances or struct ctors would be very handy. Sorry for the
misinformation.

I guess I'll let the bug stay because of the assertion...


-- 
Oct 16 2006
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=378


braddr puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wbaxter gmail.com





*** Bug 452 has been marked as a duplicate of this bug. ***


-- 
Oct 24 2006
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=378


bugzilla digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED





Fixed DMD 0.175


-- 
Nov 25 2006