From 3428a0f567f2b2978022f4fc34b68669d0591c5d Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Wed, 21 Dec 2016 00:24:31 +0100 Subject: [PATCH] #104, add support for ternary expressions --- dastworx/src/halstead.d | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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