Function types and literals

This commit is contained in:
Andrey Breslav
2010-11-15 17:06:30 +03:00
parent 3f6d1740ee
commit 050f7c661b
3 changed files with 19 additions and 4 deletions
+1
View File
@@ -26,6 +26,7 @@ val f1 = {(t : T) : X => something(t)}
fun f1(t : T) : X = something(t)
val f1 = {(t : T) => something(t)}
val f1 = {(T) : X => something(it)}
val f1 = {t => something(t)}
val f1 = {something(it)}
+3 -1
View File
@@ -26,7 +26,9 @@ tupleLiteral
;
functionLiteral
: "{" (parameter | SimpleName)* "=>" expression "}"
: "{" SimpleName "=>" expression "}"
: "{" functionTypeContents "=>" expression "}"
: "{" "(" parameter{","} ")" "=>" expression "}"
;
constructorInvocation
+15 -3
View File
@@ -15,15 +15,27 @@ type
;
userType
: name ("<" type{","} ">")?
: name ("<" (projectionSpecifier type){","} ">")?
;
projectionSpecifier
: "in"
: "out"
: empty
;
functionType
: "{" type{","} "=>" type "}"
: "{" functionTypeContents "}"
;
functionTypeContents
: "(" (parameter | type){","} ")" ":" type
;
tupleType
: "(" type"{","} ")"
: "(" type{","} ")"
;
////////////////////////////////////////