From bb9d0d02242e8b928b7f9c554d46675bc226312f Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 11 Jun 2017 21:41:52 -0700 Subject: [PATCH] fix Issue 17495 - __traits(getParameterStorageClasses) doesn't work with tuples as parameters --- src/ddmd/traits.d | 4 ++-- test/runnable/traits.d | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) 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();