From ac0576fac5b64c34bb6bac8275882861308a51a2 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Sun, 8 Nov 2020 18:21:57 +0100 Subject: More unit tests. --- src/core/src/tonkadur/fate/v1/parser/FateParser.g4 | 8 ++++---- .../wyrd/v1/compiler/util/IndexedFilterLambda.java | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index 62f5e4b..2ea8bc4 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -3715,7 +3715,7 @@ returns [Computation result] | FOLDL_KW fun=non_text_value WS+ init=value WS+ - inr=value_reference WS* + inr=non_text_value WS* R_PAREN { $result = @@ -3737,7 +3737,7 @@ returns [Computation result] | FOLDL_KW fun=non_text_value WS+ init=value WS+ - inr=value_reference WS+ + inr=non_text_value WS+ value_list WS* R_PAREN { @@ -3760,7 +3760,7 @@ returns [Computation result] | FOLDR_KW fun=non_text_value WS+ init=value WS+ - inr=value_reference WS* + inr=non_text_value WS* R_PAREN { $result = @@ -3782,7 +3782,7 @@ returns [Computation result] | FOLDR_KW fun=non_text_value WS+ init=value WS+ - inr=value_reference WS+ + inr=non_text_value WS+ value_list WS* R_PAREN { diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java index 68166a8..620f06b 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java @@ -41,17 +41,20 @@ public class IndexedFilterLambda { final List result, while_body, remove_instructions; final Register iterator, index_storage, collection_size, storage; + final Register index_counter; result = new ArrayList(); while_body = new ArrayList(); remove_instructions = new ArrayList(); iterator = registers.reserve(Type.INT, result); + index_counter = registers.reserve(Type.INT, result); index_storage = registers.reserve(Type.INT, result); collection_size = registers.reserve(Type.INT, result); storage = registers.reserve(Type.BOOL, result); result.add(new SetValue(iterator.get_address(), Constant.ZERO)); + result.add(new SetValue(index_counter.get_address(), Constant.ZERO)); result.add ( new SetValue(collection_size.get_address(), new Size(collection)) @@ -71,7 +74,7 @@ public class IndexedFilterLambda ) ); - extra_params.add(0, iterator.get_value()); + extra_params.add(0, index_counter.get_value()); remove_instructions.add ( @@ -130,6 +133,15 @@ public class IndexedFilterLambda ) ); + while_body.add + ( + new SetValue + ( + index_counter.get_address(), + Operation.plus(index_counter.get_value(), Constant.ONE) + ) + ); + result.add ( While.generate @@ -147,6 +159,7 @@ public class IndexedFilterLambda registers.release(iterator, result); registers.release(index_storage, result); + registers.release(index_counter, result); registers.release(collection_size, result); registers.release(storage, result); -- cgit v1.2.3-70-g09d2