Support custom accessors for top-level properties in scripts.

This commit is contained in:
Dmitry Petrov
2017-01-24 10:29:34 +03:00
parent ab2448307e
commit a974ed1049
25 changed files with 750 additions and 47 deletions
+3 -3
View File
@@ -1,4 +1,4 @@
public var inc: Int = 0;
public var inc: Int = 0
public var propInc: Int = 0
get() {++inc; return field}
@@ -7,9 +7,9 @@ public var propInc: Int = 0
field = a
}
public var dec: Int = 0;
public var dec: Int = 0
public var propDec: Int = 0;
public var propDec: Int = 0
get() { --dec; return field}
set(a: Int) {
--dec
@@ -9,7 +9,7 @@ public var propInc: Int = 0
public var dec: Int = 0;
public var propDec: Int = 0;
public var propDec: Int = 0
get() { dec--; return field}
set(a: Int) {
dec--
+3 -3
View File
@@ -10,7 +10,7 @@ class A {
var holder: String = ""
var r2: Int = 1;
var r2: Int = 1
get() {
holder += "getR2"
return field
@@ -22,7 +22,7 @@ class A {
return r2
}
var r3: Int = 1;
var r3: Int = 1
set(p: Int) {
holder += "setR3"
field = p
@@ -34,7 +34,7 @@ class A {
return r3
}
var r4: Int = 1;
var r4: Int = 1
get() {
holder += "getR4"
return field
+3 -3
View File
@@ -9,7 +9,7 @@ object A {
var holder: String = ""
var r2: Int = 1;
var r2: Int = 1
get() {
holder += "getR2"
return field
@@ -21,7 +21,7 @@ object A {
return r2
}
var r3: Int = 1;
var r3: Int = 1
set(p: Int) {
holder += "setR3"
field = p
@@ -33,7 +33,7 @@ object A {
return r3
}
var r4: Int = 1;
var r4: Int = 1
get() {
holder += "getR4"
return field
@@ -7,7 +7,7 @@ annotation class Accessor(val value: String)
interface Z {
@Property("OK")
val z: String;
val z: String
@Accessor("OK")
get() = "OK"
}
@@ -7,7 +7,7 @@ annotation class Accessor(val value: String)
interface Z {
@Property("OK")
val z: String;
val z: String
@Accessor("OK")
get() = "OK"
}
@@ -2,7 +2,7 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.JVM8_TARGET_WITH_DEFAULTS
interface Z {
val z: String;
val z: String
get() = "OK"
}
+1 -1
View File
@@ -1,7 +1,7 @@
// JVM_TARGET: 1.8
interface Z {
val z: String;
val z: String
get() = "OK"
}
@@ -0,0 +1,25 @@
var log = "begin"
fun append(msg: String) {
log = "$log;$msg"
}
val test1 get() = run {
append("test1.get")
"1"
}
val test2 get() = run {
append("test2.get")
test1
}
var test3: String = "Z"
set(value) {
append("test3.set")
field = value
}
test3 = "3"
val r = "$test1;$test2;$test3|$log"
// expected: r: 1;1;3|begin;test3.set;test1.get;test2.get;test1.get
@@ -0,0 +1,39 @@
val testVal: Int get() = 42
val testValNoType get() = 42
val String.testExtVal: Int get() = 42
val String.testExtValNoType get() = 42
var testVar: Int get() = 42; set(value) {}
var String.testExtVar: Int get() = 42; set(value) {}
val testValLineBreak: Int
get() = 42
val testValLineBreakNoType
get() = 42
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val testValLineBreakSemi: Int<!>;
<!UNRESOLVED_REFERENCE!>get<!>() = 42
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>val testValLineBreakSemiNoType<!>;
<!UNRESOLVED_REFERENCE!>get<!>() = 42
var testVarLineBreak: Int
get() = 42
set(value) {}
var String.testExtVarLineBreak: Int
get() = 42
set(value) {}
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var testVarLineBreakSemi: Int<!>;
<!UNRESOLVED_REFERENCE!>get<!>() = 42
<!UNRESOLVED_REFERENCE!>set<!>(<!UNRESOLVED_REFERENCE!>value<!>) {}
<!MUST_BE_INITIALIZED_OR_BE_ABSTRACT!>var String.testExtVarLineBreakSemi: Int<!>;
<!UNRESOLVED_REFERENCE!>get<!>() = 42
<!UNRESOLVED_REFERENCE!>set<!>(<!UNRESOLVED_REFERENCE!>value<!>) {}
@@ -0,0 +1,23 @@
package
public final class TopLevelPropertiesWithGetSet : kotlin.script.templates.standard.ScriptTemplateWithArgs {
public constructor TopLevelPropertiesWithGetSet(/*0*/ args: kotlin.Array<kotlin.String>)
public final override /*1*/ /*fake_override*/ val args: kotlin.Array<kotlin.String>
public final val testVal: kotlin.Int
public final val testValLineBreak: kotlin.Int
public final val testValLineBreakNoType: kotlin.Int
public final val testValLineBreakSemi: kotlin.Int
public final val testValLineBreakSemiNoType: [ERROR : No type, no body]
public final val testValNoType: kotlin.Int
public final var testVar: kotlin.Int
public final var testVarLineBreak: kotlin.Int
public final var testVarLineBreakSemi: kotlin.Int
public final val kotlin.String.testExtVal: kotlin.Int
public final val kotlin.String.testExtValNoType: kotlin.Int
public final var kotlin.String.testExtVar: kotlin.Int
public final var kotlin.String.testExtVarLineBreak: kotlin.Int
public final var kotlin.String.testExtVarLineBreakSemi: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,54 @@
val testVal: Int get() = 42
val testValSemiSameLine: Int; get() = 42
val testValNoType get() = 42
val String.testExtVal: Int get() = 42
val String.testExtValNoType get() = 42
var testVar: Int get() = 42; set(value) {}
var String.testExtVar: Int get() = 42; set(value) {}
val testValLineBreak: Int
get() = 42
val testValLineBreakNoType
get() = 42
val testValLineBreakSemi: Int;
get() = 42
val testValLineBreakSemiComment1: Int; // this IS NOT an accessor:
get() = 42
val testValLineBreakSemiComment2: Int; /*
this IS NOT an accessor either:
*/
get() = 42
val testValLineBreakSemiComment3: Int; /*
this IS an accessor!
*/ get() = 42
val testValLineBreakSemiNoType;
get() = 42
var testVarLineBreak: Int
get() = 42
set(value) {}
var String.testExtVarLineBreak: Int
get() = 42
set(value) {}
var testVarLineBreakSemi: Int;
get() = 42
set(value) {}
var String.testExtVarLineBreakSemi: Int;
get() = 42
set(value) {}
@@ -0,0 +1,517 @@
JetFile: topLevelPropertiesWithGetSet.kts
PACKAGE_DIRECTIVE
<empty list>
IMPORT_LIST
<empty list>
SCRIPT
BLOCK
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testVal')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValSemiSameLine')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValNoType')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('String')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('testExtVal')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('String')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('testExtValNoType')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(var)('var')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testVar')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(set)('set')
PsiElement(LPAR)('(')
VALUE_PARAMETER_LIST
VALUE_PARAMETER
PsiElement(IDENTIFIER)('value')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(var)('var')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('String')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('testExtVar')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(set)('set')
PsiElement(LPAR)('(')
VALUE_PARAMETER_LIST
VALUE_PARAMETER
PsiElement(IDENTIFIER)('value')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreak')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreakNoType')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreakSemi')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
BINARY_EXPRESSION
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreakSemiComment1')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ')
PsiComment(EOL_COMMENT)('// this IS NOT an accessor:')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
BINARY_EXPRESSION
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreakSemiComment2')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ')
PsiComment(BLOCK_COMMENT)('/*\nthis IS NOT an accessor either:\n*/')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
BINARY_EXPRESSION
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreakSemiComment3')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ')
PsiComment(BLOCK_COMMENT)('/*\nthis IS an accessor!\n*/')
PsiWhiteSpace(' ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testValLineBreakSemiNoType')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
BINARY_EXPRESSION
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(var)('var')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testVarLineBreak')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
PsiElement(set)('set')
PsiElement(LPAR)('(')
VALUE_PARAMETER_LIST
VALUE_PARAMETER
PsiElement(IDENTIFIER)('value')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(var)('var')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('String')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('testExtVarLineBreak')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
PsiElement(get)('get')
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n ')
PROPERTY_ACCESSOR
PsiElement(set)('set')
PsiElement(LPAR)('(')
VALUE_PARAMETER_LIST
VALUE_PARAMETER
PsiElement(IDENTIFIER)('value')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
BLOCK
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(var)('var')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('testVarLineBreakSemi')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
BINARY_EXPRESSION
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('set')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
VALUE_ARGUMENT
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('value')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
LAMBDA_ARGUMENT
LAMBDA_EXPRESSION
FUNCTION_LITERAL
PsiElement(LBRACE)('{')
BLOCK
<empty list>
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(var)('var')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('String')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('testExtVarLineBreakSemi')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Int')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
BINARY_EXPRESSION
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('get')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('42')
PsiWhiteSpace('\n ')
SCRIPT_INITIALIZER
CALL_EXPRESSION
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('set')
VALUE_ARGUMENT_LIST
PsiElement(LPAR)('(')
VALUE_ARGUMENT
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('value')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
LAMBDA_ARGUMENT
LAMBDA_EXPRESSION
FUNCTION_LITERAL
PsiElement(LBRACE)('{')
BLOCK
<empty list>
PsiElement(RBRACE)('}')