digitalmars.D.bugs - [Issue 215] New: static initialization problem - invalid code, bogus error message
- d-bugmail puremagic.com (50/50) Jun 21 2006 http://d.puremagic.com/issues/show_bug.cgi?id=215
- Thomas Kuehne (20/56) Jul 07 2006 -----BEGIN PGP SIGNED MESSAGE-----
- d-bugmail puremagic.com (9/9) Nov 15 2006 http://d.puremagic.com/issues/show_bug.cgi?id=215
http://d.puremagic.com/issues/show_bug.cgi?id=215
Summary: static initialization problem - invalid code, bogus
error message
Product: D
Version: 0.161
Platform: PC
OS/Version: Windows
Status: NEW
Keywords: rejects-valid, wrong-code
Severity: critical
Priority: P2
Component: DMD
AssignedTo: bugzilla digitalmars.com
ReportedBy: h3r3tic mat.uni.torun.pl
The folowing code:
// tmp11.d:
template Foo() {
template nothing(int i = 0) {
}
int foo = 1;
}
struct Bar {
mixin Foo f;
}
// ----
Causes DMD to output the following error:
tmp11.d(9): struct tmp11.Bar overlapping initialization for struct Bar.foo
Yet this is still nothing compared to:
// ----
template Foo() {
template nothing(int i = 0) {
}
struct Blah {
int foo = 1;
}
Blah blah;
}
struct Bar {
mixin Foo f;
}
void main()
{
Bar y;
printf("%d\n", y.f.blah.foo);
assert (y.f.blah.foo == 1);
}
// ----
Which compiles, and when ran, prints '0' and reports a failed assertion error
:(
--
Jun 21 2006
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 d-bugmail puremagic.com schrieb am 2006-06-21:http://d.puremagic.com/issues/show_bug.cgi?id=215The folowing code: // tmp11.d: template Foo() { template nothing(int i = 0) { } int foo = 1; } struct Bar { mixin Foo f; } // ---- Causes DMD to output the following error: tmp11.d(9): struct tmp11.Bar overlapping initialization for struct Bar.fooAdded to DStress as http://dstress.kuehne.cn/run/t/template_38_A.d http://dstress.kuehne.cn/run/t/template_38_B.d http://dstress.kuehne.cn/run/t/template_38_C.d http://dstress.kuehne.cn/run/t/template_38_D.dYet this is still nothing compared to: // ---- template Foo() { template nothing(int i = 0) { } struct Blah { int foo = 1; } Blah blah; } struct Bar { mixin Foo f; } void main() { Bar y; printf("%d\n", y.f.blah.foo); assert (y.f.blah.foo == 1); } // ---- Which compiles, and when ran, prints '0' and reports a failed assertion error :(Added to DStress as http://dstress.kuehne.cn/run/t/template_39_A.d http://dstress.kuehne.cn/run/t/template_39_B.d http://dstress.kuehne.cn/run/t/template_39_C.d http://dstress.kuehne.cn/run/t/template_39_D.d http://dstress.kuehne.cn/run/t/template_39_E.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFErk9CLK5blCcjpWoRAq14AKCNCVe7JyujSum1Vf0/I9nAEfsWQACfdzwe 0FsCLozB3iX4hnpNAV8dFd8= =/SFJ -----END PGP SIGNATURE-----
Jul 07 2006
http://d.puremagic.com/issues/show_bug.cgi?id=215
deewiant gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |WORKSFORME
Works in DMD 0.174.
--
Nov 15 2006









Thomas Kuehne <thomas-dloop kuehne.cn> 