diff --git a/fine/tests/expression/generic_class.fine b/fine/tests/expression/generic_class.fine new file mode 100644 index 00000000..3b8372e8 --- /dev/null +++ b/fine/tests/expression/generic_class.fine @@ -0,0 +1,39 @@ +class MyIterator { + list: MyList<$0>; + index: i64; + + fun next(self) -> $0 or nothing { + if self.index < list.len() { + let result = self.list[self.index]; + self.index += 1; + result + } else { + nothing + } + } +} + +class MyList { + list: list<$0>; + + fun get_iterator(self) -> MyIterator { + new MyIterator { + list: self.list, + index: 0, + } + } +} + +fun test() -> f64 { + // Type needs to be inferred as MyList + let x = MyList { list: [1, 2, 3] }; + + let sum = 0; + for v in x { // Pick up the iterator methods + sum = sum + v; + } + sum +} + +// @ignore undesigned garbage, like all generics +// @no-errors \ No newline at end of file diff --git a/fine/tests/expression/generic_function.fine b/fine/tests/expression/generic_function.fine index 3633ac60..908ca336 100644 --- a/fine/tests/expression/generic_function.fine +++ b/fine/tests/expression/generic_function.fine @@ -6,6 +6,6 @@ fun test() { generic_add(10, 10) } -// @ignore Feature is undesigned, this is tentative garbage +// @ignore undesigned garbage, like all generics // @no-errors // @eval: 20 \ No newline at end of file