simple if test without else

unveils many a bug that is now fixed
This commit is contained in:
Torsten Ruger
2018-03-12 17:56:44 +05:30
parent d910c02b4a
commit e0f6ba7bcf
3 changed files with 45 additions and 8 deletions

View File

@ -8,18 +8,26 @@ module Mom
@condition = cond
@if_true = if_true
@if_false = if_false
raise if_true.class unless if_true.is_a? Statement
end
def flatten
head = hoisted.flatten
def flatten(options = {})
true_label = Label.new( "true_label_#{object_id}")
false_label = Label.new( "false_label_#{object_id}")
merge_label = Label.new( "merge_label_#{object_id}")
head.append condition.flatten( true_label: true_label , false_label: false_label)
first = condition.flatten( true_label: true_label , false_label: false_label)
if hoisted
head = hoisted.flatten
head.append first
else
head = first
end
head.append true_label
head.append if_true.flatten( merge_label: merge_label)
head.append false_label
head.append if_false.flatten( merge_label: merge_label)
if( if_false)
head.append false_label
head.append if_false.flatten( merge_label: merge_label)
end
head.append merge_label
head
end