digitalmars.D.bugs - [Issue 7980] New: Stack overflow / recursive expansion with alias this
- d-bugmail puremagic.com (71/71) Apr 24 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7980
- d-bugmail puremagic.com (12/12) Jun 27 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7980
- d-bugmail puremagic.com (9/9) Mar 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=7980
- d-bugmail puremagic.com (10/10) Mar 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=7980
http://d.puremagic.com/issues/show_bug.cgi?id=7980 Summary: Stack overflow / recursive expansion with alias this Product: D Version: D2 Platform: All OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: rswhite4 googlemail.com The code below prints "not_null2.d(45): Error: template instance not_null2.assumeNotNull!(Foo) recursive expansion". If i write in line 45 "return NotNull!(Foo)(this);", instead of "return assumeNotNull(this);", i'm getting this error: "Stack overflow". In my opinion it should work. import std.stdio; struct NotNull(T : Object) { private: T _obj; public: disable this(); disable this(typeof(null)); this(T obj) { assert(obj !is null); this._obj = obj; } inout(T) get() inout { return this._obj; } alias get this; } NotNull!(T) assumeNotNull(T : Object)(T t) { return NotNull!(T)(t); } property NotNull!(T) createNotNull(T : Object)() { T t = new T(); return assumeNotNull(t); } class Foo { public: void say() { writeln("Foo"); } NotNull!(Foo) get() { return assumeNotNull(this); } alias get this; } void foo(Foo f) { f.say(); } void bar(NotNull!(Foo) nf) { nf.say(); } void main() { Foo f1 = new Foo(); NotNull!(Foo) nf1 = new Foo(); foo(f1); bar(nf1); foo(nf1); bar(f1); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 24 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7980 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice, pull OS/Version|Windows |All Severity|normal |major https://github.com/D-Programming-Language/dmd/pull/1028 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 27 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7980 Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/ef9a73ca6719172c51b1abf0b94d238d1df87674 Issue 7437,7980,8053 - Partial fix for stack overflow with recursive alias this -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2013
http://d.puremagic.com/issues/show_bug.cgi?id=7980 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2013