diff --git a/vlib/datatypes/linked_list.v b/vlib/datatypes/linked_list.v index 98673c4aea..2416c78a32 100644 --- a/vlib/datatypes/linked_list.v +++ b/vlib/datatypes/linked_list.v @@ -207,7 +207,7 @@ pub fn (mut iter ListIter[T]) next() ?T { if iter.node == unsafe { nil } { return none } - res := iter.node.data + res := unsafe { iter.node.data } iter.node = iter.node.next return res } diff --git a/vlib/datatypes/linked_list_test.v b/vlib/datatypes/linked_list_test.v index b295edf78e..8d37b4c310 100644 --- a/vlib/datatypes/linked_list_test.v +++ b/vlib/datatypes/linked_list_test.v @@ -168,3 +168,26 @@ fn test_linked_list_separate_iterators() { } assert res == [1, 2, 3] } + +struct Foo { +mut: + field LinkedList[map[string]int] +} + +fn test_linked_list_map() { + mut foo := Foo{} + foo.field.push({ + 'one': 1 + }) + foo.field.push({ + 'two': 2 + }) + println(foo) + mut iter := foo.field.iterator() + assert iter.next()! == { + 'one': 1 + } + assert iter.next()! == { + 'two': 2 + } +}