diff --git a/source/mir/deser/low_level.d b/source/mir/deser/low_level.d index 79a3dbb..7d44861 100644 --- a/source/mir/deser/low_level.d +++ b/source/mir/deser/low_level.d @@ -289,7 +289,7 @@ $(TABLE ) +/ IonErrorCode deserializeValueImpl(T)(scope IonDescribedValue data, scope ref T value) - pure @safe nothrow @nogc + pure @trusted nothrow @nogc if (isFloatingPoint!T) { if (_expect(data != null, true)) diff --git a/source/mir/deser/text/package.d b/source/mir/deser/text/package.d index 9d6143e..8fe0bfd 100644 --- a/source/mir/deser/text/package.d +++ b/source/mir/deser/text/package.d @@ -841,7 +841,7 @@ private: } @(IonTokenType.TokenNumber) - void onNumber() @safe pure + void onNumber() @trusted pure { import mir.bignum.integer; import mir.bignum.decimal; diff --git a/source/mir/ion/value.d b/source/mir/ion/value.d index b4f6710..1417de7 100644 --- a/source/mir/ion/value.d +++ b/source/mir/ion/value.d @@ -1344,7 +1344,7 @@ struct IonDescribedDecimal +/ // deprecated("Use inout(T) get(T)(scope out IonErrorCode)") IonErrorCode get(T)(scope ref T value) - @safe pure nothrow @nogc scope const + @trusted pure nothrow @nogc scope const if (isFloatingPoint!T && isMutable!T) { Decimal!128 decimal = void; diff --git a/source/mir/ser/package.d b/source/mir/ser/package.d index d4a9238..dc7864d 100644 --- a/source/mir/ser/package.d +++ b/source/mir/ser/package.d @@ -493,31 +493,31 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V foreach(member; aliasSeqOf!(SerializableMembers!V)) {{ - enum key = serdeGetKeyOut!(__traits(getMember, value, member)); + enum key = serdeGetKeyOut!(V, member); static if (key !is null) { - static if (hasUDA!(__traits(getMember, value, member), serdeIgnoreDefault)) + static if (hasUDA!(V, member, serdeIgnoreDefault)) { if (__traits(getMember, value, member) == __traits(getMember, V.init, member)) continue; } - static if(hasUDA!(__traits(getMember, value, member), serdeIgnoreOutIf)) + static if(hasUDA!(V, member, serdeIgnoreOutIf)) { alias pred = serdeGetIgnoreOutIf!(__traits(getMember, value, member)); if (pred(__traits(getMember, value, member))) continue; } - static if(hasUDA!(__traits(getMember, value, member), serdeIgnoreIfAggregate)) + static if(hasUDA!(V, member, serdeIgnoreIfAggregate)) { alias pred = serdeGetIgnoreIfAggregate!(__traits(getMember, value, member)); if (pred(value)) continue; } - static if(hasUDA!(__traits(getMember, value, member), serdeIgnoreOutIfAggregate)) + static if(hasUDA!(V, member, serdeIgnoreOutIfAggregate)) { alias pred = serdeGetIgnoreOutIfAggregate!(__traits(getMember, value, member)); if (pred(value)) @@ -536,7 +536,7 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V continue; } - static if(hasUDA!(__traits(getMember, value, member), serdeTransformOut)) + static if(hasUDA!(V, member, serdeTransformOut)) { alias f = serdeGetTransformOut!(__traits(getMember, value, member)); auto val = f(__traits(getMember, value, member)); @@ -569,12 +569,12 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V serializer.putKey(key); } - static if(hasUDA!(__traits(getMember, value, member), serdeLikeList)) + static if(hasUDA!(V, member, serdeLikeList)) { static assert(0); } else - static if(hasUDA!(__traits(getMember, value, member), serdeLikeStruct)) + static if(hasUDA!(V, member, serdeLikeStruct)) { static if(is(W == interface) || is(W == class) || is(W : E[T], E, T)) { @@ -604,7 +604,7 @@ private void serializeValueImpl(S, V)(scope ref S serializer, scope ref const V serializer.structEnd(valState); } else - static if(hasUDA!(__traits(getMember, value, member), serdeProxy)) + static if(hasUDA!(V, member, serdeProxy)) { serializeProxyCastImpl!(S, __traits(getMember, value, member))(serializer, val); }