Thread overview
Assertion failure: module.c 470 - recursive/circular struct containment
Jan 12, 2005
Stewart Gordon
Jan 12, 2005
Thomas Kuehne
Jan 12, 2005
Russ Lewis
Jan 13, 2005
Thomas Kuehne
Jan 14, 2005
Simon Buchan
Jan 14, 2005
Thomas Kuehne
Jan 14, 2005
Simon Buchan
Jan 14, 2005
Stewart Gordon
Re: Assertion failure: module.c 470 - recursive/circular struct containment: Totally Off-Topic
Jan 14, 2005
Simon Buchan
Jan 14, 2005
Russ Lewis
January 12, 2005
Using DMD 0.110, Windows 98SE.

The compiler isn't properly catching structs that recursively contain themselves.

----------
struct Qwert {
    Qwert asdfg;
}
----------
Assertion failure: '!deferred.dim' on line 470 in file 'module.c'
----------

after which the compiler hangs.  The same happens if two structs circularly contain each other:

----------
struct Qwert {
    Yuiop asdfg;
}

struct Yuiop {
    Qwert hjkl;
}
----------

DMD should detect the error and deliver an appropriate message.

Stewart.

-- 
My e-mail is valid but not my primary mailbox.  Please keep replies on the 'group where everyone may benefit.
January 12, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Added to DStress as http://dstress.kuehne.cn/compile/struct_19.d http://dstress.kuehne.cn/compile/struct_20.d

Stewart Gordon schrieb am Wed, 12 Jan 2005 10:29:57 +0000:
> The compiler isn't properly catching structs that recursively contain themselves.

<snip>

> after which the compiler hangs.  The same happens if two structs circularly contain each other:

<snip>

> DMD should detect the error and deliver an appropriate message.

Why should this be an error?

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFB5SU23w+/yD4P9tIRApbAAKDNXnPh/04+hD5l3V3/6cEVCAKB1ACdFVGy
2IUt4Sd9CHbFUGzEkh18+zM=
=/uCw
-----END PGP SIGNATURE-----
January 12, 2005
Thomas Kuehne wrote:
> Why should this be an error?

Because structs are included by value.  Thus, the size of the two structs would be infinite.  That's probably why the compiler is hanging - an infinite loop, trying to determine the size of the struct.

January 13, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Russ Lewis schrieb am Wed, 12 Jan 2005 08:28:48 -0700:
> Thomas Kuehne wrote:
>> Why should this be an error?
>
> Because structs are included by value.

http://www.digitalmars.com/d/struct.html
#
# They work like they do in C.
#

...

moved test cases: http://dstress.kuehne.cn/nocompile/struct_19.d http://dstress.kuehne.cn/nocompile/struct_20.d

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFB5cWQ3w+/yD4P9tIRAtjtAJ4jSaJTNVVS6/HEwW4DajKT5w2ZvgCgir0v
s7zq/Y8wICwCGoHFxY+3MjA=
=6M6y
-----END PGP SIGNATURE-----
January 14, 2005
On Thu, 13 Jan 2005 01:49:20 +0100, Thomas Kuehne <thomas-dloop@kuehne.thisisspam.cn> wrote:

>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Russ Lewis schrieb am Wed, 12 Jan 2005 08:28:48 -0700:
>> Thomas Kuehne wrote:
>>> Why should this be an error?
>>
>> Because structs are included by value.
>
> http://www.digitalmars.com/d/struct.html
> #
> # They work like they do in C.
> #
>
> ...
>
> moved test cases:
> http://dstress.kuehne.cn/nocompile/struct_19.d
> http://dstress.kuehne.cn/nocompile/struct_20.d
>
> Thomas
>
>
> -----BEGIN PGP SIGNATURE-----
>
> iD8DBQFB5cWQ3w+/yD4P9tIRAtjtAJ4jSaJTNVVS6/HEwW4DajKT5w2ZvgCgir0v
> s7zq/Y8wICwCGoHFxY+3MjA=
> =6M6y
> -----END PGP SIGNATURE-----

Have you tried it in C lately? (You're probabaly thinking of something
like:
struct node {
	node* next;
	// something
};
, forgive me if I'm being an idiot.)

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
January 14, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Simon Buchan schrieb am Fri, 14 Jan 2005 21:23:39 +1300:
> On Thu, 13 Jan 2005 01:49:20 +0100, Thomas Kuehne
><thomas-dloop@kuehne.thisisspam.cn> wrote:
>
>> Russ Lewis schrieb am Wed, 12 Jan 2005 08:28:48 -0700:
>>> Thomas Kuehne wrote:
>>>> Why should this be an error?
>>>
>>> Because structs are included by value.
>>
>> moved test cases: http://dstress.kuehne.cn/nocompile/struct_19.d http://dstress.kuehne.cn/nocompile/struct_20.d
>>
> Have you tried it in C lately? (You're probabaly thinking of something like:

> struct node {
> 	node* next;
> 	// something
> };

mind the asterix?

struct node{
	node next;
};

Thomas

-----BEGIN PGP SIGNATURE-----

iD8DBQFB544i3w+/yD4P9tIRAkj+AJ4kq3lvuoENSXqLLpM02+LAV/dB7ACgibZu
6eUPhpOipgJV06AqvTuhDZg=
=8aCM
-----END PGP SIGNATURE-----
January 14, 2005
On Fri, 14 Jan 2005 10:17:22 +0100, Thomas Kuehne <thomas-dloop@kuehne.thisisspam.cn> wrote:

>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Simon Buchan schrieb am Fri, 14 Jan 2005 21:23:39 +1300:
>> On Thu, 13 Jan 2005 01:49:20 +0100, Thomas Kuehne
>> <thomas-dloop@kuehne.thisisspam.cn> wrote:
>>
>>> Russ Lewis schrieb am Wed, 12 Jan 2005 08:28:48 -0700:
>>>> Thomas Kuehne wrote:
>>>>> Why should this be an error?
>>>>
>>>> Because structs are included by value.
>>>
>>> moved test cases:
>>> http://dstress.kuehne.cn/nocompile/struct_19.d
>>> http://dstress.kuehne.cn/nocompile/struct_20.d
>>>
>> Have you tried it in C lately? (You're probabaly thinking of something
>> like:
>
>> struct node {
>> 	node* next;
>> 	// something
>> };
>
> mind the asterix?
>
> struct node{
> 	node next;
> };
>
> Thomas
>
> -----BEGIN PGP SIGNATURE-----
>
> iD8DBQFB544i3w+/yD4P9tIRAkj+AJ4kq3lvuoENSXqLLpM02+LAV/dB7ACgibZu
> 6eUPhpOipgJV06AqvTuhDZg=
> =8aCM
> -----END PGP SIGNATURE-----

Err... the asterix was the whole point.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
January 14, 2005
Simon Buchan wrote:
<snip>
> Err... the asterix was the whole point.

What has René Goscinny's character to do with anything?

Stewart.

-- 
My e-mail is valid but not my primary mailbox.  Please keep replies on the 'group where everyone may benefit.
January 14, 2005
On Fri, 14 Jan 2005 11:18:54 +0000, Stewart Gordon <smjg_1998@yahoo.com> wrote:

> Simon Buchan wrote:
> <snip>
>> Err... the asterix was the whole point.
>
> What has René Goscinny's character to do with anything?
>
> Stewart.
>

:P That would be _the_ Asterix. (Note capital letter)
Not quite sure why the two main characters were named after a marker for
special explination/emphasis and a phalic symbol of constructive skills.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
January 14, 2005
Thomas Kuehne wrote:
> mind the asterix?
> 
> struct node{
> 	node next;
> };

Thomas, your last two messages in this thread have been (almost) impossible for me to understand.

However, guys, I think we can all conclude that Thomas understands the problem now.  He *did*, after all, move the testcases to the "nocompile" set.  Can we end this?