Closure parameters for constructor invocations

This commit is contained in:
Andrey Breslav
2011-03-25 16:07:07 +03:00
parent b4a453ddb7
commit badf79aee5
4 changed files with 111 additions and 116 deletions
+7 -3
View File
@@ -174,12 +174,16 @@ prefixUnaryOperation
postfixUnaryOperation postfixUnaryOperation
: "++" : "--" : "++" : "--"
: typeArguments? valueArguments (label? functionLiteral) : callSuffix
: typeArguments (label? functionLiteral)
: arrayAccess : arrayAccess
: memberAccessOperation postfixUnaryOperation // TODO: Review : memberAccessOperation postfixUnaryOperation // TODO: Review
; ;
callSuffix
: typeArguments? valueArguments (label? functionLiteral)
: typeArguments (label? functionLiteral)
;
memberAccessOperation memberAccessOperation
: "." : "?." : "#" : "?" : "." : "?." : "#" : "?"
; ;
@@ -221,7 +225,7 @@ expressions
; ;
constructorInvocation constructorInvocation
: userType valueArguments : userType callSuffix
; ;
arrayAccess arrayAccess
@@ -374,7 +374,10 @@ public class JetExpressionParsing extends AbstractJetParsing {
} }
/* /*
* typeParameters? valueParameters? functionLiteral* * callSuffix
* : typeArguments? valueArguments (label? functionLiteral*)
* : typeArguments (label? functionLiteral*)
* ;
*/ */
private boolean parseCallSuffix() { private boolean parseCallSuffix() {
if (parseCallWithClosure()) { if (parseCallWithClosure()) {
@@ -1361,7 +1364,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
* "new" constructorInvocation // identical to new functionCall * "new" constructorInvocation // identical to new functionCall
* *
* constructorInvocation * constructorInvocation
* : userType valueArguments * : userType callSuffix
*/ */
private void parseNew() { private void parseNew() {
assert _at(NEW_KEYWORD); assert _at(NEW_KEYWORD);
@@ -1370,7 +1373,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
advance(); // NEW_KEYWORD advance(); // NEW_KEYWORD
myJetParsing.parseTypeRef(); myJetParsing.parseTypeRef();
parseValueArgumentList(); parseCallSuffix();
creation.done(NEW); creation.done(NEW);
} }
@@ -11,12 +11,11 @@ enum class List<out T>(theSize : Int) : IList<T> {
get() = this == Nil get() = this == Nil
override fun iterator() = new IIterator() { override fun iterator() = object IIterator() {
private var current = List.this private var current = List.this
override val hasNext { override val hasNext
get() = current == Nil get() = current == Nil
}
override fun next() { override fun next() {
val result = current.value val result = current.value
@@ -225,10 +225,11 @@ JetFile: List.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
CALL_EXPRESSION OBJECT_LITERAL
NEW PsiElement(object)('object')
PsiElement(new)('new')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
DELEGATION_SPECIFIER_LIST
DELEGATOR_SUPER_CALL
TYPE_REFERENCE TYPE_REFERENCE
USER_TYPE USER_TYPE
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
@@ -237,10 +238,9 @@ JetFile: List.jet
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
PsiElement(RPAR)(')') PsiElement(RPAR)(')')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
FUNCTION_LITERAL CLASS_BODY
PsiElement(LBRACE)('{') PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BODY
PROPERTY PROPERTY
MODIFIER_LIST MODIFIER_LIST
PsiElement(private)('private') PsiElement(private)('private')
@@ -258,7 +258,6 @@ JetFile: List.jet
THIS_EXPRESSION THIS_EXPRESSION
PsiElement(this)('this') PsiElement(this)('this')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
CALL_EXPRESSION
PROPERTY PROPERTY
MODIFIER_LIST MODIFIER_LIST
PsiElement(override)('override') PsiElement(override)('override')
@@ -266,20 +265,12 @@ JetFile: List.jet
PsiElement(val)('val') PsiElement(val)('val')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('hasNext') PsiElement(IDENTIFIER)('hasNext')
PsiWhiteSpace(' ')
FUNCTION_LITERAL
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ') PsiWhiteSpace('\n ')
BODY PROPERTY_ACCESSOR
BINARY_EXPRESSION PsiElement(get)('get')
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(') PsiElement(LPAR)('(')
PsiElement(RPAR)(')') PsiElement(RPAR)(')')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=') PsiElement(EQ)('=')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
@@ -291,8 +282,6 @@ JetFile: List.jet
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
REFERENCE_EXPRESSION REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Nil') PsiElement(IDENTIFIER)('Nil')
PsiWhiteSpace('\n ')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ') PsiWhiteSpace('\n\n ')
FUN FUN
MODIFIER_LIST MODIFIER_LIST