www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 9739] New: DMD not considering ctor with default args as default ctor

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739

           Summary: DMD not considering ctor with default args as default
                    ctor
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: regression
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: puneet coverify.org


--- Comment #0 from Puneet Goel <puneet coverify.org> 2013-03-16 20:06:54 PDT
---
Compiles with 2.062. But with the latest github snapshot, gives me an error:

$ rdmd --force test.d
test.d(5): Error: class test.Bar Cannot implicitly generate a default ctor when
base class test.Foo is missing a default ctor
Failed: 'dmd' '-v' '-o-' 'test.d' '-I.'


class Foo {
  this(int arg=0) { }
}

class Bar: Foo { }

void main() {
  Bar test = new Bar;
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 16 2013
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrej.mitrovich gmail.com,
                   |                            |k.hara.pg gmail.com


--- Comment #1 from Andrej Mitrovic <andrej.mitrovich gmail.com> 2013-03-16
20:46:04 PDT ---
This is caused by:
https://github.com/D-Programming-Language/dmd/pull/1439

I think I've already tried to change how the 'defaultCtor' field is set, but I
think that change got rejected, or maybe it was part of a pull that wasn't yet
merged.

In hindsight I should have written more elaborate tests.

 Kenji: Do you know why the code which sets `ad->defaultCtor = this;` doesn't
check for defaulted parameters? That code is at the end of
`CtorDeclaration::semantic`

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 16 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739



--- Comment #2 from Kenji Hara <k.hara.pg gmail.com> 2013-04-03 18:27:10 PDT ---
(In reply to comment #1)
 This is caused by:
 https://github.com/D-Programming-Language/dmd/pull/1439
 
 I think I've already tried to change how the 'defaultCtor' field is set, but I
 think that change got rejected, or maybe it was part of a pull that wasn't yet
 merged.
 
 In hindsight I should have written more elaborate tests.
 
  Kenji: Do you know why the code which sets `ad->defaultCtor = this;` doesn't
 check for defaulted parameters? That code is at the end of
 `CtorDeclaration::semantic`

Because ad->defaultCtor should not have any parameters. Its function pointer will be stored in TypeInfo_Class.defaultConstructor, so storing `this(int arg=0)` in it would cause access violation in runtime. https://github.com/D-Programming-Language/druntime/blob/master/src/object_.d#L853 https://github.com/D-Programming-Language/dmd/blob/master/src/toobj.c#L585 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 03 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739


Kenji Hara <k.hara.pg gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull, rejects-valid


--- Comment #3 from Kenji Hara <k.hara.pg gmail.com> 2013-04-03 19:22:21 PDT ---
https://github.com/D-Programming-Language/dmd/pull/1833

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 03 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739



--- Comment #4 from github-bugzilla puremagic.com 2013-04-03 21:47:58 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/7ab0211e68815663cf84aa0cf98425f0f6e4bade
fix Issue 9739 - DMD not considering ctor with default args as default ctor

https://github.com/D-Programming-Language/dmd/commit/8a2a36894eecb96f32eee7db377308e277791032
Merge pull request #1833 from 9rnsr/fix9739

[REG2.063a] Issue 9739 - DMD not considering ctor with default args as default
ctor

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 03 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739


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: -------
Apr 03 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739


Andrej Mitrovic <andrej.mitrovich gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |leandro.lucarella sociomant
                   |                            |ic.com


--- Comment #5 from Andrej Mitrovic <andrej.mitrovich gmail.com> 2013-04-12
08:49:18 PDT ---
*** Issue 9925 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 12 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739


Leandro Lucarella <leandro.lucarella sociomantic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
            Version|D2                          |D1
         Resolution|FIXED                       |


--- Comment #6 from Leandro Lucarella <leandro.lucarella sociomantic.com>
2013-04-12 08:53:30 PDT ---
This is still present in D1.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 12 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739



--- Comment #7 from Leandro Lucarella <leandro.lucarella sociomantic.com>
2013-04-12 08:59:47 PDT ---
https://github.com/D-Programming-Language/dmd/pull/1892

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 12 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739



--- Comment #8 from Leandro Lucarella <leandro.lucarella sociomantic.com>
2013-04-12 09:04:06 PDT ---
(In reply to comment #7)
 https://github.com/D-Programming-Language/dmd/pull/1892

Nope, doesn't work, it was a literal backport of D2 fix but D1 doesn't have resolveFuncCall(). So I guess something else needs to be done. Would probably be even better to revert the change that caused it in D1 if a better solution is hard to implement (see issue 9925). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 12 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739



--- Comment #9 from Leandro Lucarella <leandro.lucarella sociomantic.com>
2013-04-12 09:24:08 PDT ---
Pull updated with a fixed fix :P

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 12 2013
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739



--- Comment #10 from github-bugzilla puremagic.com 2013-04-13 10:22:29 PDT ---
Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/9ba9925641f224ae33c756791de12eab656f04a0
Merge pull request #1892 from leandro-lucarella-sociomantic/fix9739-d1

[D1] fix Issue 9739 - DMD not considering ctor with default args as default
ctor

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 13 2013
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=9739


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 13 2013