Bug 7424 – Segfault when trying to call a templated property with different const-ancy.

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-02-02T09:45:00Z
Last change time
2012-02-06T00:39:09Z
Keywords
ice, pull
Assigned to
nobody
Creator
kennytm

Comments

Comment #0 by kennytm — 2012-02-02T09:45:27Z
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.
Comment #1 by kennytm — 2012-02-05T13:55:34Z
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; } } --------------------------------------------------
Comment #2 by kennytm — 2012-02-05T15:01:11Z