On Friday, 6 May 2016 at 09:06:59 UTC, Dmitry Olshansky wrote:
On 06-May-2016 05:37, Jeremy DeHaan wrote:
On Wednesday, 4 May 2016 at 12:42:30 UTC, jmh530 wrote:
On Wednesday, 4 May 2016 at 02:50:08 UTC, Jeremy DeHaan wrote:
You can identify safe functions with
https://dlang.org/phobos/std_traits.html#isSafe
or
https://dlang.org/phobos/std_traits.html#functionAttributes
All I meant was that I don't know enough about what the
compiler does
with built in types to make this work. It almost sounds like
we would
need a safe union and unsafe union type and do some extra
stuff for the
unsafe union, but I'm just starting to learn about this stuff.
I'd note that a union without pointers doesn't hurt precise
scanner, it's only the ones with pointers that are bad.
Union is an user-defined-kind value and only user codes can tell
the difference. I believe this will also effect the reference
count implementation. I suggest that when a type has a union
member, it should create a function such as gcValues with a
parameter of output range of record (offset: size_t, type:
typeid). the function should return that info based on whatever
the actual value of those pointer types. If that function is
missing, use conservative approach as before
Cheers
Pham