diff --git a/dastworx/src/halstead.d b/dastworx/src/halstead.d index 4e8dfb32..8719c9aa 100644 --- a/dastworx/src/halstead.d +++ b/dastworx/src/halstead.d @@ -271,6 +271,15 @@ private final class HalsteadMetric: ASTVisitor expr.accept(this); } + override void visit(const(TernaryExpression) expr) + { + if (expr.orOrExpression) + ++operators["if"]; + if (expr.expression) + ++operators["else"]; + expr.accept(this); + } + override void visit(const(TypeidExpression) expr) { ++operators["typeid"]; @@ -869,6 +878,19 @@ unittest assert(r.operatorsKinds == 4); } +unittest +{ + Function r = + q{ + void foo() + { + a = true ? 0 : 1; + } + }.test; + assert(r.operandsKinds == 4); + assert(r.operatorsKinds == 3); +} + version(none) unittest { // TODO: detect function call w/o parens