[fine] Generic garbage
This commit is contained in:
parent
692af9f93d
commit
aac5c6257f
2 changed files with 40 additions and 1 deletions
39
fine/tests/expression/generic_class.fine
Normal file
39
fine/tests/expression/generic_class.fine
Normal file
|
|
@ -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<f64>
|
||||||
|
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
|
||||||
|
|
@ -6,6 +6,6 @@ fun test() {
|
||||||
generic_add(10, 10)
|
generic_add(10, 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ignore Feature is undesigned, this is tentative garbage
|
// @ignore undesigned garbage, like all generics
|
||||||
// @no-errors
|
// @no-errors
|
||||||
// @eval: 20
|
// @eval: 20
|
||||||
Loading…
Add table
Add a link
Reference in a new issue