Skip to content

Commit b4ff41e

Browse files
committed
fixes to deal with nested arrays.
1 parent 4256c29 commit b4ff41e

1 file changed

Lines changed: 18 additions & 10 deletions

File tree

lib/source/pl/core/ast/ast_node_array_variable_decl.cpp

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -334,11 +334,13 @@ namespace pl::core::ast {
334334
addEntries(std::move(patterns));
335335

336336
auto ctrlFlow = evaluator->getCurrentControlFlowStatement();
337-
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
338-
if (ctrlFlow == ControlFlowStatement::Break || ctrlFlow == ControlFlowStatement::Return)
337+
if ( ctrlFlow == ControlFlowStatement::Return) {
339338
break;
340-
else if (ctrlFlow == ControlFlowStatement::Continue) {
341-
339+
} else if (ctrlFlow == ControlFlowStatement::Break) {
340+
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
341+
break;
342+
} else if (ctrlFlow == ControlFlowStatement::Continue) {
343+
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
342344
discardEntries(patternCount);
343345
continue;
344346
}
@@ -366,10 +368,13 @@ namespace pl::core::ast {
366368

367369

368370
auto ctrlFlow = evaluator->getCurrentControlFlowStatement();
369-
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
370-
if (ctrlFlow == ControlFlowStatement::Break || ctrlFlow == ControlFlowStatement::Return)
371+
if ( ctrlFlow == ControlFlowStatement::Return) {
372+
break;
373+
} else if (ctrlFlow == ControlFlowStatement::Break) {
374+
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
371375
break;
372-
else if (ctrlFlow == ControlFlowStatement::Continue) {
376+
} else if (ctrlFlow == ControlFlowStatement::Continue) {
377+
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
373378
discardEntries(patternCount);
374379
continue;
375380
}
@@ -417,10 +422,13 @@ namespace pl::core::ast {
417422
}
418423

419424
auto ctrlFlow = evaluator->getCurrentControlFlowStatement();
420-
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
421-
if (ctrlFlow == ControlFlowStatement::Break || ctrlFlow == ControlFlowStatement::Return)
425+
if ( ctrlFlow == ControlFlowStatement::Return) {
426+
break;
427+
} else if (ctrlFlow == ControlFlowStatement::Break) {
428+
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
422429
break;
423-
else if (ctrlFlow == ControlFlowStatement::Continue) {
430+
} else if (ctrlFlow == ControlFlowStatement::Continue) {
431+
evaluator->setCurrentControlFlowStatement(ControlFlowStatement::None);
424432
discardEntries(1);
425433
continue;
426434
}

0 commit comments

Comments
 (0)