From 7c5a05c77a2dcae199fd767a5a2f320cc4ae5310 Mon Sep 17 00:00:00 2001 From: sigod Date: Wed, 26 Aug 2015 00:11:42 +0300 Subject: [PATCH] use hasUDA from 2.068.0 version --- source/gcm.d | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/source/gcm.d b/source/gcm.d index 8b82816..8173c26 100644 --- a/source/gcm.d +++ b/source/gcm.d @@ -238,6 +238,19 @@ template isISOExtStringSerializable(T) is(typeof(T.init.toISOExtString()) == string) && is(typeof(T.fromISOExtString("")) == T); } +static if (__VERSION__ < 2068) { + //TODO: remove in future versions of compiler + template hasUDA(alias symbol, alias attribute) + { + import std.typetuple : staticIndexOf; + + enum bool hasUDA = staticIndexOf!(attribute, __traits(getAttributes, symbol)) != -1; + } +} +else { + import std.traits : hasUDA; +} + //TODO: support classes JSONValue convert(T)(T value) { @@ -277,10 +290,7 @@ JSONValue convert(T)(T value) else static assert(false, FieldN.stringof ~ " not supported"); - //TODO: use hasUDA from 2.068 - static if (__traits(getAttributes, __traits(getMember, value, field_name)).length > 0 - && __traits(isSame, __traits(getAttributes, __traits(getMember, value, field_name))[0], asString)) - { + static if (hasUDA!(Field, asString)) { json = JSONValue(json.toString()); }