Parser: allow function types as receiver type for function

This commit is contained in:
Pavel V. Talanov
2014-10-30 14:35:50 +03:00
parent 632bceef26
commit 951ce827a6
20 changed files with 3151 additions and 1649 deletions
@@ -1,12 +1,11 @@
fun {[a] T<T>.(A<B>) : ()}.foo()
fun {[a] T<T>.(A<B>) : ()}.foo();
fun {[a] T<T>.(A<B>) : ()}.foo() {}
fun [a] {[a] T<T>.(A<B>) : ()}.foo() {}
fun <A, B> [a] {() : Unit}.foo()
fun ([a] T<T>.(A<B>) -> Unit).foo()
fun ([a] T<T>.(A<B>) -> C<D, E>).foo();
fun [a] ([a] T<T>.(A<B>) -> R).foo() {}
fun <A, B> [a] ((B.(A ->B)) -> Unit).foo()
fun <A, B> [a] ((A, B) -> Unit).foo()
fun ((T) -> G)?.foo()
fun ((T) -> G)??.foo()
// And tuples, too
fun (A, B).foo() : Unit {}
// Recovery
fun fun [a] T<T>.(A<B>) : ().-()
//--------------
fun f<T>()
a.b class C