diff --git a/src/dscanner/analysis/unused.d b/src/dscanner/analysis/unused.d index 890a764..9934a37 100644 --- a/src/dscanner/analysis/unused.d +++ b/src/dscanner/analysis/unused.d @@ -434,7 +434,8 @@ abstract class UnusedStorageCheck : UnusedIdentifierCheck // enum name = "abc"; // __traits(hasMember, S, name); ignoreDeclarations++; - traitsExp.templateArgumentList.accept(this); + if (traitsExp.templateArgumentList) + traitsExp.templateArgumentList.accept(this); ignoreDeclarations--; } diff --git a/src/dscanner/analysis/unused_variable.d b/src/dscanner/analysis/unused_variable.d index e5e67ee..c3b3689 100644 --- a/src/dscanner/analysis/unused_variable.d +++ b/src/dscanner/analysis/unused_variable.d @@ -117,6 +117,12 @@ final class UnusedVariableCheck : UnusedStorageCheck __traits(compiles, { int i = 2; }); } + // segfault with null templateArgumentList + void nullTest() + { + __traits(isPOD); + } + }c, sac); stderr.writeln("Unittest for UnusedVariableCheck passed."); }