Skip to content

Commit 8679cb5

Browse files
committed
for loop inside of if
1 parent eeb8525 commit 8679cb5

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

atest/testdata/running/if/complex_if.robot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ For loop inside if
3939
FOR ${var} IN 1 2 3
4040
${value}= Set Variable ${var}
4141
END
42-
ELSE IF 'ei tanne'
42+
ELSE IF 'ei tanne'
4343
${value}= Set Variable 123
4444
END
4545
Should be equal ${value} 3

src/robot/parsing/lexer/blocklexers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,4 +250,4 @@ def input(self, statement):
250250
self._else_seen = True
251251

252252
def lexer_classes(self):
253-
return (IfStatementLexer, ElseIfStatementLexer, ElseLexer, EndLexer, KeywordCallLexer)
253+
return (IfStatementLexer, ElseIfStatementLexer, ElseLexer, EndLexer, ForLoopLexer, KeywordCallLexer)

src/robot/running/builder/transformers.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,11 @@ def visit_Else(self, node):
300300
def visit_IfBlock(self, node):
301301
ifblock = IfExpression(node.value, node.lineno, node._header, node._end)
302302
IfExpressionBuilder(ifblock).build(node)
303-
self.ifblock.add_ifblock(ifblock)
303+
self.ifblock.add_inner_block(ifblock)
304+
305+
def visit_ForLoop(self, node):
306+
# Header and end used only for deprecation purposes. Remove in RF 3.3!
307+
loop = ForLoop(node.variables, node.values, node.flavor, node.lineno,
308+
node._header, node._end)
309+
ForLoopBuilder(loop).visit(node)
310+
self.ifblock.add_inner_block(loop)

src/robot/running/model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ def __init__(self, value, lineno=None, _header='IF', _end='END'):
119119
def create_keyword(self, name='', args=(), assign=(), lineno=None):
120120
self.bodies[-1][1].create(name=name, args=args, assign=assign, lineno=lineno)
121121

122-
def add_ifblock(self, ifblock):
123-
self.bodies[-1][1].append(ifblock)
122+
def add_inner_block(self, inner_block):
123+
self.bodies[-1][1].append(inner_block)
124124

125125
def create_elseif(self, value):
126126
self.bodies.append((value, Keywords(self.keyword_class, self, None)))

0 commit comments

Comments
 (0)