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) fun f1(t : T) : X = something(t)
val f1 = {(t : T) => something(t)} val f1 = {(t : T) => something(t)}
val f1 = {(T) : X => something(it)}
val f1 = {t => something(t)} val f1 = {t => something(t)}
val f1 = {something(it)} val f1 = {something(it)}
+3 -1
View File
@@ -26,7 +26,9 @@ tupleLiteral
; ;
functionLiteral functionLiteral
: "{" (parameter | SimpleName)* "=>" expression "}" : "{" SimpleName "=>" expression "}"
: "{" functionTypeContents "=>" expression "}"
: "{" "(" parameter{","} ")" "=>" expression "}"
; ;
constructorInvocation constructorInvocation
+15 -3
View File
@@ -15,15 +15,27 @@ type
; ;
userType userType
: name ("<" type{","} ">")? : name ("<" (projectionSpecifier type){","} ">")?
;
projectionSpecifier
: "in"
: "out"
: empty
; ;
functionType functionType
: "{" type{","} "=>" type "}" : "{" functionTypeContents "}"
;
functionTypeContents
: "(" (parameter | type){","} ")" ":" type
; ;
tupleType tupleType
: "(" type"{","} ")" : "(" type{","} ")"
; ;
////////////////////////////////////////