Conversation
|
@Shaikh-Ubaid I am repurposing the Another way I think is to handle both the cases in one single function. We can call the I request you to guide me on this. |
|
@Shaikh-Ubaid , the tests for |
|
|
||
| enum class IntrinsicElementalFunctions : int64_t { | ||
| ObjectType, | ||
| Reversed, |
There was a problem hiding this comment.
Reversed returns an iterator, but does not actually reverse a list. I think we do not have support for iterators yet in LPython.
The approach in this PR reverses the entire list, which I think is not the correct approach.
There was a problem hiding this comment.
@Shaikh-Ubaid I return a reversed list using the approach used for dict.keys (#1881 (comment)) as we do not support iterators now.
|
The current approach in this PR reverses the original list which we should not be doing. As a result, it fails for the following: % git diff
diff --git a/integration_tests/test_builtin_reversed.py b/integration_tests/test_builtin_reversed.py
index 51cf3607f..2f38e2e09 100644
--- a/integration_tests/test_builtin_reversed.py
+++ b/integration_tests/test_builtin_reversed.py
@@ -15,6 +15,7 @@ def test_builtin_reversed():
reversed_numbers: list[i32] = reversed(numbers)
print(reversed_numbers)
assert reversed_numbers == [5, 4, 3, 2, 1]
+ assert numbers == [1, 2, 3, 4, 5]
# list returned through function call
alphabet_dictionary: dict[str, i32] = {% lpython integration_tests/test_builtin_reversed.py
['e', 'd', 'c', 'b', 'a']
[5, 4, 3, 2, 1]
AssertionError |
Thank you very much for catching this @Shaikh-Ubaid ! I totally missed that I was modifying the original list. I think we can create a new function in |
I think we should not do that. Iterators do not make a copy. They simply work like a pointer which can be used to traverse an object. I would not implement |
|
I think it is correct to either implement support for an iterator or wait for it. 👍 |
Working