digitalmars.D.bugs - [Issue 5450] New: no match for implicit super() call in constructor
- d-bugmail puremagic.com (38/38) Jan 13 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (28/35) Jan 13 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (7/23) Jan 13 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (12/12) Jan 23 2012 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (18/19) Jan 07 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (11/11) Jan 07 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (12/12) Mar 07 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5450
- d-bugmail puremagic.com (9/9) Mar 07 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5450
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Summary: no match for implicit super() call in constructor Product: D Version: D1 & D2 Platform: Other OS/Version: All Status: NEW Keywords: rejects-valid, spec Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: mrmocool gmx.de class Foo { this(float f) {} } class Bar : Foo { this(int i) {} } -> foo.d(8): Error: constructor foo.Bar.this no match for implicit super() call in constructor Adhering to the spec, dmd silently inserts a super() call in Bar's constructor as soon as its base class Foo has *a* constructor. But there is no this() without arguments in Foo. This always requires me to put a bugging this() {} into Foo. Why can't dmd just generate an empty this(){} in this case? I mean it also does it the other way around: "If there is no constructor for a class, but there is a constructor for the base class, a default constructor of the form: this() { } is implicitly generated." (Though the spec could be clearer here, does this also mean that a super() call is inserted into this newly generated this()?) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 13 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug yahoo.com.au As soon as you add a constructor to Foo, you disable the implicit constructor. So it's correct for the compiler to complain. Probably the wording of the error message could be improved, but I don't think this is a rejects-valid bug.I mean it also does it the other way around:No, it doesn't. See below:"If there is no constructor for a class, but there is a constructor for the base class, a default constructor of the form: this() { } is implicitly generated." (Though the spec could be clearer here, does this also mean that a super() call is inserted into this newly generated this()?)Yes. And look what it does: class Foo { this(float f) {} } class Bar : Foo { } -> foo.d(7): Error: constructor foo.Bar.this no match for implicit super() call in constructor Actually it shouldn't insert an implicit this() unless the base class has a this(). Instead, it should complain that Bar needs a constructor, because Foo has one. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 13 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5450class Foo { this(float f) {} } class Bar : Foo { } -> foo.d(7): Error: constructor foo.Bar.this no match for implicit super() call in constructor Actually it shouldn't insert an implicit this() unless the base class has a this(). Instead, it should complain that Bar needs a constructor, because Foo has one.Then this bug report's focus should move to your example I think. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 13 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|rejects-valid, spec | CC| |bugzilla digitalmars.com Severity|normal |minor 23:52:25 PST --- The only bug here is it could be a better error message. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 23 2012
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich gmail.com 18:37:59 PST ---The only bug here is it could be a better error message.A shame I haven't noticed this report before fixing Issue 8928. The error is now: "Error: constructor foo.Bar.this no match for implicit super() call in implicitly generated constructor" But I could revert the fix for 8298 and instead avoid generating the ctor at all and printing: "Error: class foo.Bar cannot implicitly generate a default ctor when base class foo.Foo is missing a default ctor" -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 07 2013
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull AssignedTo|nobody puremagic.com |andrej.mitrovich gmail.com 18:45:54 PST --- https://github.com/D-Programming-Language/dmd/pull/1439 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 07 2013
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/291dfade1750cd297491e8d17332036d75c23897 Fixes Issue 5450 - Don't generate default ctor if base class lacks default ctor. https://github.com/D-Programming-Language/dmd/commit/14d466438f3e2714dbda6672645653d472c7bcd2 Issue 5450 - Don't generate default ctor if base class lacks default ctor -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 07 2013
http://d.puremagic.com/issues/show_bug.cgi?id=5450 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 07 2013