Bug 5899 – auto-return function cannot match 'null' with reference type.
Status
RESOLVED
Resolution
FIXED
Severity
minor
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2011-04-27T08:46:00Z
Last change time
2011-11-25T00:29:00Z
Keywords
patch, rejects-valid
Assigned to
nobody
Creator
kennytm
Comments
Comment #0 by kennytm — 2011-04-27T08:46:39Z
Test code 1:
---------------------------
class K {}
auto f(bool b) {
if (b)
return new K;
else
return null;
}
---------------------------
x.d(6): Error: mismatched function return type inference of void* and x.K
---------------------------
Test code 2:
---------------------------
auto f(bool b) {
if (b)
return new int;
else
return null;
}
---------------------------
x.d(5): Error: mismatched function return type inference of void* and int*
---------------------------
DMD should know that 'null' is a valid value for any reference types.
A workaround is to give an exact type, e.g.
---------------------------
auto f(bool b) {
if (b)
return new int; // or new K;
else {
typeof(return) n = null;
return n;
}
}
---------------------------
but this should not be necessary.
(Perhaps the D spec should give a specific type e.g. 'nullptr_t' for 'null'?)