diff --git a/source/dub/recipe/packagerecipe.d b/source/dub/recipe/packagerecipe.d index d32578e..14bb983 100644 --- a/source/dub/recipe/packagerecipe.d +++ b/source/dub/recipe/packagerecipe.d @@ -465,6 +465,7 @@ private T clone(T)(ref const(T) val) { + import std.sumtype; import std.traits : isSomeString, isDynamicArray, isAssociativeArray, isBasicType, ValueType; static if (is(T == immutable)) return val; @@ -484,6 +485,8 @@ foreach (k, ref f; val) ret[k] = clone!V(f); return ret; + } else static if (is(T == SumType!A, A...)) { + return val.match!((any) => T(clone(any))); } else static if (is(T == struct)) { T ret; foreach (i, M; typeof(T.tupleof))