digitalmars.D.bugs - DMD 0.122: Cross-module multiply nested template instantiation with
- Burton Radons (106/106) May 10 2005 This requires two modules.
- Walter (1/1) May 18 2005 I couldn't reproduce the fault, but I put it in the test suite anyway.
- Thomas Kuehne (30/31) May 19 2005 -----BEGIN PGP SIGNED MESSAGE-----
- Walter (3/4) May 19 2005 Doesn't happen for me, either on windows or linux.
- Thomas Kuehne (16/20) May 19 2005 -----BEGIN PGP SIGNED MESSAGE-----
This requires two modules. [a.d] struct TC(T) { void method() { void inline_function() { } } } template TB(T) { alias TC!(T) tc_instance; } struct TA(T) { mixin TB!(T); } [b.d] import a; void main() { TA!(int) variable; } Attempting to compile this causes the compiler to do an access violation; it should be acceptable code. The following are variants known to cause the problem to disappear. First variant, to remove the inline function: [a.d] struct TC(T) { void method() { -- void inline_function() -- { -- } } } template TB(T) { alias TC!(T) tc_instance; } struct TA(T) { mixin TB!(T); } [b.d] import a; void main() { TA!(int) variable; } Second variant, to remove an abstraction stage: [a.d] struct TC(T) { void method() { void inline_function() { } } } -- template TB(T) -- { -- alias TC!(T) tc_instance; -- } struct TA(T) { -- mixin TB!(T); ++ alias TC!(T) tc_instance; } [b.d] import a; void main() { TA!(int) variable; } Third variant, instantiate the template outside of the "main" function: [a.d] struct TC(T) { void method() { void inline_function() { } } } template TB(T) { alias TC!(T) tc_instance; } struct TA(T) { mixin TB!(T); } [b.d] import a; ++ alias TA!(int) TA_int; void main() { -- TA!(int) variable; ++ TA_int variable; }
May 10 2005
I couldn't reproduce the fault, but I put it in the test suite anyway.
May 18 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter schrieb am Wed, 18 May 2005 22:52:41 -0700:I couldn't reproduce the fault, but I put it in the test suite anyway.(gdb) run -v a.d b.d Starting program: dmd-0.123 -v a.d b.d parse a parse b semantic a semantic b semantic2 a semantic2 b semantic3 a semantic3 b code a generating code for function 'method' Program received signal SIGSEGV, Segmentation fault. 0x080a9d16 in FuncDeclaration::toObjFile() () (gdb) bt Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFCjFR+3w+/yD4P9tIRAkN6AKCvNyVgjHJdpne+ldeqzCueVM2uLwCeKLP0 37AVAbol2yLhZm4Ssim9GTI= =r3O2 -----END PGP SIGNATURE-----
May 19 2005
"Thomas Kuehne" <thomas-dloop kuehne.this-is.spam.cn> wrote in message news:d8ol3u.43o.thomas-dloop laermschleuder.kuehne.cn...Program received signal SIGSEGV, Segmentation fault.Doesn't happen for me, either on windows or linux.
May 19 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter schrieb am Thu, 19 May 2005 14:46:00 -0700:"Thomas Kuehne" <thomas-dloop kuehne.this-is.spam.cn> wrote in message news:d8ol3u.43o.thomas-dloop laermschleuder.kuehne.cn...The files are http://dstress.kuehne.cn/run/b/bug_20050510_A2.d http://dstress.kuehne.cn/compile/b/bug_20050510_A1.d no bug: dmd run/b/bug_20050510_A2.d compile/b/bug_20050510_A1.d bug: dmd compile/b/bug_20050510_A1.d run/b/bug_20050510_A2.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFCjS6v3w+/yD4P9tIRAmIrAJ9qgxh72kss+rOMpjjVdorC0AgiBgCeML3L Akf2qcyY9dE5wEHstM+mx7w= =tNEF -----END PGP SIGNATURE-----Program received signal SIGSEGV, Segmentation fault.Doesn't happen for me, either on windows or linux.
May 19 2005