@@ -179,7 +179,8 @@ import mir.algorithm.iteration: uniq;
179179import mir.array.allocation;
180180import mir.math.common;
181181import mir.ndslice.sorting: sort;
182- import std.traits : Unqual, getUDAs, hasUDA, isPointer, PointerTarget;
182+ import std.traits : Unqual, isPointer, PointerTarget;
183+ import mir.internal.meta: getUDAs, hasUDA;
183184
184185@fmamath:
185186
@@ -405,9 +406,9 @@ template Dependencies(T)
405406 string [] variables;
406407 static foreach (member; __traits (allMembers , T))
407408 {
408- static if (hasUDA! (__traits(getMember, T, member) , Derivative))
409+ static if (hasUDA! (T, member, Derivative))
409410 {
410- variables ~= getUDAs! (__traits(getMember, T, member) , Derivative)[0 ].variables;
411+ variables ~= getUDAs! (T, member, Derivative)[0 ].variables;
411412 }
412413 }
413414 return variables.sort.uniq.array.DependsOn;
@@ -478,8 +479,8 @@ template getDerivative(string[] variables, bool strict = true)
478479 alias V = T;
479480 template hasDerivative (string member)
480481 {
481- static if (hasUDA! (__traits(getMember, V, member) , Derivative))
482- enum hasDerivative = variables == getUDAs! (__traits(getMember, V, member) , Derivative)[0 ].variables;
482+ static if (hasUDA! (V, member, Derivative))
483+ enum hasDerivative = variables == getUDAs! (V, member, Derivative)[0 ].variables;
483484 else
484485 enum hasDerivative = false ;
485486 }
@@ -489,7 +490,7 @@ template getDerivative(string[] variables, bool strict = true)
489490 {
490491 static if (hasDerivative! member)
491492 {
492- static if (hasUDA! (__traits(getMember, V, member) , Minus))
493+ static if (hasUDA! (V, member, Minus))
493494 return - __traits(getMember, value, member);
494495 else
495496 return __traits (getMember, value, member);
@@ -530,16 +531,16 @@ void setDerivatives(bool strict = true, D, E)(scope ref D derivatives, E express
530531 return derivatives.setDerivatives! strict(expression);
531532 else
532533 {
533- import std.traits : getUDAs, hasUDA, isPointer, PointerTarget;
534+ import std.traits : isPointer, PointerTarget;
534535
535536 static foreach (member; __traits (allMembers , D))
536537 {
537- static if (hasUDA! (__traits(getMember, D, member) , Derivative))
538+ static if (hasUDA! (D, member, Derivative))
538539 {
539- static if (hasUDA! (__traits(getMember, derivatives, member) , Minus))
540- __traits (getMember , derivatives, member) = - expression.getDerivative! (getUDAs! (__traits(getMember, derivatives, member) , Derivative)[0 ].variables, strict);
540+ static if (hasUDA! (D, member, Minus))
541+ __traits (getMember , derivatives, member) = - expression.getDerivative! (getUDAs! (D, member, Derivative)[0 ].variables, strict);
541542 else
542- __traits (getMember , derivatives, member) = expression.getDerivative! (getUDAs! (__traits(getMember, derivatives, member) , Derivative)[0 ].variables, strict);
543+ __traits (getMember , derivatives, member) = expression.getDerivative! (getUDAs! (D, member, Derivative)[0 ].variables, strict);
543544 }
544545 }
545546 }
0 commit comments