Skip to content

Commit 4088d48

Browse files
authored
Fix/issue 228 (#230)
* fix: issue 221 The return control flow was not being processed in two of the dynamic array types. * fixes to deal with nested arrays. Other patterns were tested and it all seems to work.
1 parent 6e9a320 commit 4088d48

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)