212 changes: 91 additions & 121 deletions src/object_.d

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions src/rt/typeinfo/ti_AC.d
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,22 @@ class TypeInfo_AC : TypeInfo
return c < 0 ? -1 : c > 0 ? 1 : 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (Object[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(Object);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (Object[]).alignof;
}
Expand Down
8 changes: 4 additions & 4 deletions src/rt/typeinfo/ti_Acdouble.d
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ class TypeInfo_Ar : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (cdouble[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(cdouble);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (cdouble[]).alignof;
}
Expand Down
8 changes: 4 additions & 4 deletions src/rt/typeinfo/ti_Acfloat.d
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ class TypeInfo_Aq : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (cfloat[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(cfloat);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (cfloat[]).alignof;
}
Expand Down
8 changes: 4 additions & 4 deletions src/rt/typeinfo/ti_Acreal.d
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ class TypeInfo_Ac : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (creal[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(creal);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (real[]).alignof;
}
Expand Down
10 changes: 5 additions & 5 deletions src/rt/typeinfo/ti_Adouble.d
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ class TypeInfo_Ad : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (double[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(double);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (double[]).alignof;
}
Expand All @@ -98,7 +98,7 @@ class TypeInfo_Ap : TypeInfo_Ad
{
override string toString() { return "idouble[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(idouble);
}
Expand Down
10 changes: 5 additions & 5 deletions src/rt/typeinfo/ti_Afloat.d
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ class TypeInfo_Af : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (float[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(float);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (float[]).alignof;
}
Expand All @@ -98,7 +98,7 @@ class TypeInfo_Ao : TypeInfo_Af
{
override string toString() { return "ifloat[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(ifloat);
}
Expand Down
18 changes: 9 additions & 9 deletions src/rt/typeinfo/ti_Ag.d
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,22 @@ class TypeInfo_Ag : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (byte[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(byte);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (byte[]).alignof;
}
Expand Down Expand Up @@ -101,7 +101,7 @@ class TypeInfo_Ah : TypeInfo_Ag
return dstrcmp(s1, s2);
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(ubyte);
}
Expand All @@ -113,7 +113,7 @@ class TypeInfo_Av : TypeInfo_Ah
{
override string toString() { return "void[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(void);
}
Expand All @@ -125,7 +125,7 @@ class TypeInfo_Ab : TypeInfo_Ah
{
override string toString() { return "bool[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(bool);
}
Expand Down Expand Up @@ -186,7 +186,7 @@ else
return hash;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(char);
}
Expand All @@ -198,7 +198,7 @@ class TypeInfo_Aya : TypeInfo_Aa
{
override string toString() { return "immutable(char)[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(immutable(char));
}
Expand Down
12 changes: 6 additions & 6 deletions src/rt/typeinfo/ti_Aint.d
Original file line number Diff line number Diff line change
Expand Up @@ -57,22 +57,22 @@ class TypeInfo_Ai : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (int[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(int);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (int[]).alignof;
}
Expand Down Expand Up @@ -123,7 +123,7 @@ class TypeInfo_Ak : TypeInfo_Ai
return 0;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(uint);
}
Expand All @@ -135,7 +135,7 @@ class TypeInfo_Aw : TypeInfo_Ak
{
override string toString() { return "dchar[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(dchar);
}
Expand Down
10 changes: 5 additions & 5 deletions src/rt/typeinfo/ti_Along.d
Original file line number Diff line number Diff line change
Expand Up @@ -58,22 +58,22 @@ class TypeInfo_Al : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (long[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(long);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (long[]).alignof;
}
Expand Down Expand Up @@ -115,7 +115,7 @@ class TypeInfo_Am : TypeInfo_Al
return 0;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(ulong);
}
Expand Down
10 changes: 5 additions & 5 deletions src/rt/typeinfo/ti_Areal.d
Original file line number Diff line number Diff line change
Expand Up @@ -64,22 +64,22 @@ class TypeInfo_Ae : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (real[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(real);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (real[]).alignof;
}
Expand All @@ -98,7 +98,7 @@ class TypeInfo_Aj : TypeInfo_Ae
{
override string toString() { return "ireal[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(ireal);
}
Expand Down
12 changes: 6 additions & 6 deletions src/rt/typeinfo/ti_Ashort.d
Original file line number Diff line number Diff line change
Expand Up @@ -57,22 +57,22 @@ class TypeInfo_As : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (short[]).sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(short);
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return (short[]).alignof;
}
Expand Down Expand Up @@ -112,7 +112,7 @@ class TypeInfo_At : TypeInfo_As
return 0;
}

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(ushort);
}
Expand All @@ -124,7 +124,7 @@ class TypeInfo_Au : TypeInfo_At
{
override string toString() { return "wchar[]"; }

override TypeInfo next()
@property override TypeInfo next() nothrow pure
{
return typeid(wchar);
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_C.d
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ class TypeInfo_C : TypeInfo
return c;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return Object.sizeof;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}
Expand Down
2 changes: 1 addition & 1 deletion src/rt/typeinfo/ti_byte.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_g : TypeInfo
return *cast(byte *)p1 - *cast(byte *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return byte.sizeof;
}
Expand Down
6 changes: 3 additions & 3 deletions src/rt/typeinfo/ti_cdouble.d
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class TypeInfo_r : TypeInfo
return _compare(*cast(cdouble *)p1, *cast(cdouble *)p2);
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return cdouble.sizeof;
}
Expand All @@ -71,13 +71,13 @@ class TypeInfo_r : TypeInfo
*cast(cdouble *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable cdouble r;

return (cast(cdouble *)&r)[0 .. 1];
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return cdouble.alignof;
}
Expand Down
6 changes: 3 additions & 3 deletions src/rt/typeinfo/ti_cfloat.d
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class TypeInfo_q : TypeInfo
return _compare(*cast(cfloat *)p1, *cast(cfloat *)p2);
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return cfloat.sizeof;
}
Expand All @@ -71,13 +71,13 @@ class TypeInfo_q : TypeInfo
*cast(cfloat *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable cfloat r;

return (cast(cfloat *)&r)[0 .. 1];
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return cfloat.alignof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_char.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_a : TypeInfo
return *cast(char *)p1 - *cast(char *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return char.sizeof;
}
Expand All @@ -48,7 +48,7 @@ class TypeInfo_a : TypeInfo
*cast(char *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable char c;

return (cast(char *)&c)[0 .. 1];
Expand Down
6 changes: 3 additions & 3 deletions src/rt/typeinfo/ti_creal.d
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class TypeInfo_c : TypeInfo
return _compare(*cast(creal *)p1, *cast(creal *)p2);
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return creal.sizeof;
}
Expand All @@ -71,13 +71,13 @@ class TypeInfo_c : TypeInfo
*cast(creal *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable creal r;

return (cast(creal *)&r)[0 .. 1];
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return creal.alignof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_dchar.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_w : TypeInfo
return *cast(dchar *)p1 - *cast(dchar *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return dchar.sizeof;
}
Expand All @@ -48,7 +48,7 @@ class TypeInfo_w : TypeInfo
*cast(dchar *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable dchar c;

return (cast(dchar *)&c)[0 .. 1];
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_delegate.d
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class TypeInfo_D : TypeInfo
return *cast(dg *)p1 == *cast(dg *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return dg.sizeof;
}
Expand All @@ -45,7 +45,7 @@ class TypeInfo_D : TypeInfo
*cast(dg *)p2 = t;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}
Expand Down
6 changes: 3 additions & 3 deletions src/rt/typeinfo/ti_double.d
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class TypeInfo_d : TypeInfo
return _compare(*cast(double *)p1, *cast(double *)p2);
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return double.sizeof;
}
Expand All @@ -70,13 +70,13 @@ class TypeInfo_d : TypeInfo
*cast(double *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable double r;

return (cast(double *)&r)[0 .. 1];
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return double.alignof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_float.d
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class TypeInfo_f : TypeInfo
return _compare(*cast(float *)p1, *cast(float *)p2);
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return float.sizeof;
}
Expand All @@ -68,7 +68,7 @@ class TypeInfo_f : TypeInfo
*cast(float *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable float r;

return (cast(float *)&r)[0 .. 1];
Expand Down
2 changes: 1 addition & 1 deletion src/rt/typeinfo/ti_int.d
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class TypeInfo_i : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return int.sizeof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_long.d
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class TypeInfo_l : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return long.sizeof;
}
Expand All @@ -54,7 +54,7 @@ class TypeInfo_l : TypeInfo
*cast(long *)p2 = t;
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return long.alignof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_ptr.d
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class TypeInfo_P : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return (void*).sizeof;
}
Expand All @@ -51,7 +51,7 @@ class TypeInfo_P : TypeInfo
*cast(void* *)p2 = t;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}
Expand Down
6 changes: 3 additions & 3 deletions src/rt/typeinfo/ti_real.d
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class TypeInfo_e : TypeInfo
return _compare(*cast(real *)p1, *cast(real *)p2);
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return real.sizeof;
}
Expand All @@ -70,13 +70,13 @@ class TypeInfo_e : TypeInfo
*cast(real *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable real r;

return (cast(real *)&r)[0 .. 1];
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return real.alignof;
}
Expand Down
2 changes: 1 addition & 1 deletion src/rt/typeinfo/ti_short.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_s : TypeInfo
return *cast(short *)p1 - *cast(short *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return short.sizeof;
}
Expand Down
2 changes: 1 addition & 1 deletion src/rt/typeinfo/ti_ubyte.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_h : TypeInfo
return *cast(ubyte *)p1 - *cast(ubyte *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return ubyte.sizeof;
}
Expand Down
2 changes: 1 addition & 1 deletion src/rt/typeinfo/ti_uint.d
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class TypeInfo_k : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return uint.sizeof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_ulong.d
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class TypeInfo_m : TypeInfo
return 0;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return ulong.sizeof;
}
Expand All @@ -54,7 +54,7 @@ class TypeInfo_m : TypeInfo
*cast(ulong *)p2 = t;
}

override size_t talign()
@property override size_t talign() nothrow pure
{
return ulong.alignof;
}
Expand Down
2 changes: 1 addition & 1 deletion src/rt/typeinfo/ti_ushort.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_t : TypeInfo
return *cast(ushort *)p1 - *cast(ushort *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return ushort.sizeof;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_void.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_v : TypeInfo
return *cast(byte *)p1 - *cast(byte *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return void.sizeof;
}
Expand All @@ -48,7 +48,7 @@ class TypeInfo_v : TypeInfo
*cast(byte *)p2 = t;
}

override uint flags()
@property override uint flags() nothrow pure
{
return 1;
}
Expand Down
4 changes: 2 additions & 2 deletions src/rt/typeinfo/ti_wchar.d
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TypeInfo_u : TypeInfo
return *cast(wchar *)p1 - *cast(wchar *)p2;
}

override size_t tsize()
@property override size_t tsize() nothrow pure
{
return wchar.sizeof;
}
Expand All @@ -48,7 +48,7 @@ class TypeInfo_u : TypeInfo
*cast(wchar *)p2 = t;
}

override void[] init()
override void[] init() nothrow pure
{ static immutable wchar c;

return (cast(wchar *)&c)[0 .. 1];
Expand Down