From ffe9a5d98638ad5898fbdb4fdab832a76ee46a1c Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Wed, 19 Feb 2014 16:38:02 -0800 Subject: [PATCH] Fix #113 --- analysis/range.d | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/analysis/range.d b/analysis/range.d index 556acf8..286afe2 100644 --- a/analysis/range.d +++ b/analysis/range.d @@ -50,8 +50,8 @@ class BackwardsRangeCheck : BaseAnalyzer } hasLeft = false; hasRight = false; - foreachStatement.accept(this); } + foreachStatement.accept(this); } override void visit(UnaryExpression unary) @@ -83,22 +83,24 @@ class BackwardsRangeCheck : BaseAnalyzer override void visit(SliceExpression sliceExpression) { - import std.stdio; - state = State.left; - sliceExpression.lower.accept(this); - state = State.right; - sliceExpression.upper.accept(this); - state = State.ignore; - if (hasLeft && hasRight && left > right) + if (sliceExpression.lower !is null && sliceExpression.upper !is null) { - import std.string; - string message = format( - "%d is larger than %d. This slice is likely incorrect.", - left, right); - addErrorMessage(line, this.column, message); + state = State.left; + sliceExpression.lower.accept(this); + state = State.right; + sliceExpression.upper.accept(this); + state = State.ignore; + if (hasLeft && hasRight && left > right) + { + import std.string; + string message = format( + "%d is larger than %d. This slice is likely incorrect.", + left, right); + addErrorMessage(line, this.column, message); + } + hasLeft = false; + hasRight = false; } - hasLeft = false; - hasRight = false; sliceExpression.accept(this); } }