digitalmars.D.bugs - [Issue 5365] New: Regression (2.051) alias this causes segfault
- d-bugmail puremagic.com (51/51) Dec 23 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5365
- d-bugmail puremagic.com (13/13) Dec 23 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5365
- d-bugmail puremagic.com (37/42) Dec 23 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5365
- d-bugmail puremagic.com (6/6) Dec 23 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5365
- d-bugmail puremagic.com (16/16) Dec 26 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5365
- d-bugmail puremagic.com (11/18) Dec 27 2010 http://d.puremagic.com/issues/show_bug.cgi?id=5365
http://d.puremagic.com/issues/show_bug.cgi?id=5365
Summary: Regression (2.051) alias this causes segfault
Product: D
Version: D2
Platform: Other
OS/Version: Linux
Status: NEW
Severity: regression
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: samukha voliacable.com
PST ---
The following compiles and runs correctly with dmd 2.050, but segfaults with
dmd 2.051
interface IFactory
{
void foo();
}
class A
{
protected static class Factory : IFactory
{
void foo()
{
}
}
this()
{
_factory = createFactory();
}
protected IFactory createFactory()
{
return new Factory;
}
private IFactory _factory;
property final IFactory factory()
{
return _factory;
}
alias factory this;
}
void main()
{
IFactory f = new A;
f.foo(); // segfault
}
Critical for QtD.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 23 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5365
bearophile_hugs eml.cc changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bearophile_hugs eml.cc
It works with DMD 2.051 if I replace this line of the main():
IFactory f = new A;
With:
A f = new A;
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 23 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5365 PST ---It works with DMD 2.051 if I replace this line of the main(): IFactory f = new A; With: A f = new A;We still need the implicit cast to work correctly. For example, we cannot pass an A to a function taking an IFactory: void bar(IFactory f) { f.foo(); // segfault } auto a = new A; bar(a); Here is a simplified test-case: class B { } class A { B _b; this() { _b = new B; } B b() { return _b; } alias b this; } void main() { auto a = new A; B b = a; // b is null assert(a._b is b); // fails } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 23 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5365 PST --- Changed subject to something arguably more relevant. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 23 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5365
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
18:32:51 PST ---
This was broken by the fix for 5094. The fix for 5094 was good, it just exposed
another problem that needed fixing.
http://www.dsource.org/projects/dmd/changeset/818
QtD is an important project for D; please consider trying out the beta
compilers as they come out to head off regresssions in the future.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 26 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5365 PST ---This was broken by the fix for 5094. The fix for 5094 was good, it just exposed another problem that needed fixing. http://www.dsource.org/projects/dmd/changeset/818This fixes the issue. Thanks! There is yet another issue that prevents us from implementing multiple inheritance in a satisfactory way http://d.puremagic.com/issues/show_bug.cgi?id=5380QtD is an important project for D; please consider trying out the beta compilers as they come out to head off regresssions in the future.We usually do but not this particular version. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 27 2010









d-bugmail puremagic.com 