Basic implementation of UnreachableCode rule

This commit is contained in:
Vitalii Elenhaupt 2018-11-05 20:56:54 +02:00
parent d7952204a2
commit 67d76116f7
No known key found for this signature in database
GPG key ID: 7558EF3A4056C706
7 changed files with 415 additions and 0 deletions

View file

@ -0,0 +1,66 @@
require "../../../spec_helper"
module Ameba::AST
source = Source.new ""
describe FlowExpressionVisitor do
it "creates an expression for return" do
rule = FlowExpressionRule.new
FlowExpressionVisitor.new rule, Source.new %(
def foo
return :bar
end
)
rule.expressions.size.should eq 1
end
it "can create multiple expressions" do
rule = FlowExpressionRule.new
FlowExpressionVisitor.new rule, Source.new %(
def foo
if bar
return :baz
else
return :foobar
end
end
)
rule.expressions.size.should eq 2
end
it "properly creates nested flow expressions" do
rule = FlowExpressionRule.new
FlowExpressionVisitor.new rule, Source.new %(
def foo
return(
loop do
break if a > 1
return a
end
)
end
)
rule.expressions.size.should eq 3
end
it "creates an expression for break" do
rule = FlowExpressionRule.new
FlowExpressionVisitor.new rule, Source.new %(
while true
break
end
)
rule.expressions.size.should eq 1
end
it "creates an expression for next" do
rule = FlowExpressionRule.new
FlowExpressionVisitor.new rule, Source.new %(
while true
next if something
end
)
rule.expressions.size.should eq 1
end
end
end