www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 7424] New: Segfault when trying to call a templated property with inout.

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

           Summary: Segfault when trying to call a templated property with
                    inout.
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: ice
          Severity: regression
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: kennytm gmail.com



Test case:

-----------------
struct S7424
{
     property inout(int) g()() inout
    {
        return 0;
    }
    void test()
    {
        int f = g;
    }
}
-----------------

The  property is optional. Compile with 'dmd -c bug7424.d'.

The expression 'this.g()' has a NULL 'type', so the statement at
expression.c:10112

        Type *t2 = e2->type->toBasetype();

caused SEGFAULT.

The regression is introduced in commit
1d4438f151143fcdcb807e257959dd1d588f9048.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 02 2012
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7424


kennytm gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Segfault when trying to     |Segfault when trying to
                   |call a templated property   |call a templated property
                   |with inout.                 |with different const-ancy.



Further test cases:

--------------------------------------------------
// Should compile:
struct S7424a
{
     property inout(int) g()() inout { return 0; }
    void test1() { int f = g; }
    void test2() const { int f = g; }
    void test3() immutable { int f = g; }
}
--------------------------------------------------
// Should fail:
struct S7424b
{
     property int g()() { return 0; }
    void test() const { int f = g; }
}

struct S7424c
{
     property int g()() { return 0; }
    void test() immutable { int f = g; }
}

struct S7424d
{
     property int g()() immutable { return 0; }
    void test() const { int f = g; }
}

struct S7424e
{
     property int g()() immutable { return 0; }
    void test() { int f = g; }
}

struct S7424f
{
     property int g()() shared { return 0; }
    void test() { int f = g; }
}

struct S7424g
{
     property int g()() { return 0; }
    void test() shared { int f = g; }
}
--------------------------------------------------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 05 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7424


kennytm gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull





https://github.com/D-Programming-Language/dmd/pull/698

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 05 2012
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7424


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: -------
Feb 06 2012