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'?)
Comment #1 by k.hara.pg — 2011-10-27T05:08:39Z
Comment #2 by bugzilla — 2011-11-25T00:29:00Z