diff --git a/src/ddmd/traits.d b/src/ddmd/traits.d index a2d5979fc2dd..3c1cdf0d7fb7 100644 --- a/src/ddmd/traits.d +++ b/src/ddmd/traits.d @@ -1021,9 +1021,9 @@ extern (C++) Expression semanticTraits(TraitsExp e, Scope* sc) } ex = ex.ctfeInterpret(); auto ii = ex.toUInteger(); - if (ii >= fparams.dim) + if (ii >= Parameter.dim(fparams)) { - e.error("parameter index must be in range 0..%u not %s", cast(uint)fparams.dim, ex.toChars()); + e.error("parameter index must be in range 0..%u not %s", cast(uint)Parameter.dim(fparams), ex.toChars()); return new ErrorExp(); } diff --git a/test/runnable/traits.d b/test/runnable/traits.d index d6f301d4088a..ef23e9f32bef 100644 --- a/test/runnable/traits.d +++ b/test/runnable/traits.d @@ -1514,6 +1514,19 @@ void test12237() /********************************************************/ +void async(ARGS...)(ARGS) +{ + static void compute(ARGS) + { + } + + auto x = __traits(getParameterStorageClasses, compute, 1); +} + +alias test17495 = async!(int, int); + +/********************************************************/ + int main() { test1();