diff --git a/.fleet/run.json b/.fleet/run.json
new file mode 100644
index 000000000..661ea3f8b
--- /dev/null
+++ b/.fleet/run.json
@@ -0,0 +1,18 @@
+{
+ "configurations": [
+ {
+ "type": "gradle",
+ "name": "Build web version",
+ "tasks": [
+ "buildWeb"
+ ]
+ },
+ {
+ "type": "gradle",
+ "name": "Build pdf version",
+ "tasks": [
+ "buildPdf"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.fleet/settings.json b/.fleet/settings.json
new file mode 100644
index 000000000..af76c3445
--- /dev/null
+++ b/.fleet/settings.json
@@ -0,0 +1,3 @@
+{
+ "backend.maxHeapSizeMb": 4096
+}
\ No newline at end of file
diff --git a/.github/actions/upload-spec-artifacts/action.yml b/.github/actions/upload-spec-artifacts/action.yml
index 7d4daf095..34c079c93 100644
--- a/.github/actions/upload-spec-artifacts/action.yml
+++ b/.github/actions/upload-spec-artifacts/action.yml
@@ -3,13 +3,13 @@ runs:
using: 'composite'
steps:
- name: 'Upload Kotlin spec PDF artifacts'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: kotlin-spec-pdf
path: |
build/spec/pdf/
- name: 'Upload Kotlin spec HTML artifacts'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: kotlin-spec-html
path: |
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..1b933e7fe
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,3 @@
+# Code of Conduct
+
+This project and the corresponding community is governed by the [JetBrains Open Source and Community Code of Conduct](https://github.com/JetBrains#code-of-conduct).
diff --git a/README.md b/README.md
index 3fed10755..061b3d713 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
# Kotlin Language Specification
+[](https://github.com/JetBrains#jetbrains-on-github)
[](https://teamcity.jetbrains.com/viewType.html?buildTypeId=Kotlin_Spec_DocsMaster&branch_Kotlin_dev=%3Cdefault%3E&tab=buildTypeStatusDiv)
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://github.com/Kotlin/kotlin-spec/releases)
diff --git a/docs/build.gradle.kts b/docs/build.gradle.kts
index 39264518a..ff463d4b8 100644
--- a/docs/build.gradle.kts
+++ b/docs/build.gradle.kts
@@ -17,29 +17,9 @@ val jsBuildDir = "$resourcesBuildDir/js"
val scriptsDir = "$projectDir/scripts/build"
val ls: String = System.lineSeparator()
-fun getScriptText(scriptName: String): String {
- val disableTODOS = project.findProperty("disableTODOS") != null
- val enableStaticMath = project.findProperty("enableStaticMath") != null
-
- val buildTemplate = File("$scriptsDir/$scriptName.sh").readText()
-
- val res = with(StringBuilder()) {
- append("PROJECT_DIR=$projectDir$ls")
- if (disableTODOS) append("TODO_OPTION=--disable-todos$ls")
- else append("TODO_OPTION=--enable-todos$ls")
-
- if (enableStaticMath) append("STATIC_MATH_OPTION=--enable-static-math$ls")
- else append("STATIC_MATH_OPTION=--disable-static-math$ls")
-
- append(buildTemplate)
- }
-
- return "$res"
-}
-
repositories {
maven {
- url = URI("https://maven.vorpal-research.science")
+ url = URI("https://maven.apal-research.com")
}
mavenCentral()
}
diff --git a/docs/scripts/build/settings.sh b/docs/scripts/build/settings.sh
index 5a9e0a425..eb9235e54 100644
--- a/docs/scripts/build/settings.sh
+++ b/docs/scripts/build/settings.sh
@@ -10,6 +10,7 @@ COMMON_PANDOC_OPTIONS="\
--variable filecolor=cyan \
--syntax-definition=kotlin.xml \
--variable=subparagraph \
+ --variable=math: \
--top-level-division=part"
TOC_PANDOC_OPTIONS="\
@@ -29,5 +30,8 @@ init_settings() {
PREAMBLE_OPTIONS="-H ./preamble.tex"
elif [ "${type}" == "html" ]; then
PREAMBLE_OPTIONS="-H ./preamble.html --include-before-body ./preface.html --include-after-body ./epilogue.html"
+ if [ "${STATIC_MATH_OPTION}" == "--disable-static-math" ]; then
+ PREAMBLE_OPTIONS="$PREAMBLE_OPTIONS -H ./dynamic_math.html"
+ fi
fi
}
diff --git a/docs/src/md/commands.md b/docs/src/md/commands.md
index 697755d79..316e715ea 100644
--- a/docs/src/md/commands.md
+++ b/docs/src/md/commands.md
@@ -1,6 +1,6 @@
<#mode quote>
-\newcommand{\currentKotlinMajorVersion}{\textrm{1.7}}
+\newcommand{\currentKotlinMajorVersion}{\textrm{1.9}}
\newcommand{\opMathTT}[2]{%
\expandafter\newcommand{#1}{\operatorname{\texttt{#2}}}%
@@ -82,6 +82,7 @@
\opMathIT{\nested}{nested}
\opMathIT{\dataClass}{dataClass}
\opMathIT{\dataClassParam}{dp}
+\opMathIT{\dataObject}{dataObject}
\opMathIT{\name}{name}
\opMathIT{\type}{type}
diff --git a/docs/src/md/dynamic_math.html b/docs/src/md/dynamic_math.html
new file mode 100644
index 000000000..d21b5616c
--- /dev/null
+++ b/docs/src/md/dynamic_math.html
@@ -0,0 +1,27 @@
+
diff --git a/docs/src/md/index.md b/docs/src/md/index.md
index f207c4b63..7521a0f4a 100644
--- a/docs/src/md/index.md
+++ b/docs/src/md/index.md
@@ -4,7 +4,7 @@ title: Kotlin language specification
author:
- Marat Akhin
- Mikhail Belyaev
-subtitle: Version 1.7-rfc+0.1
+subtitle: Version 1.9-rfc+0.1
---
<#include "commands.md">
diff --git a/docs/src/md/kotlin.core/annotations.md b/docs/src/md/kotlin.core/annotations.md
index b604d621e..1208d72c1 100644
--- a/docs/src/md/kotlin.core/annotations.md
+++ b/docs/src/md/kotlin.core/annotations.md
@@ -2,7 +2,9 @@
Annotations are a form of syntactically-defined metadata which may be associated with different entities in a Kotlin program.
Annotations are specified in the source code of the program and may be accessed on a particular platform using platform-specific mechanisms both by the compiler (and source-processing tools) and at runtime (using [reflection][Reflection] facilities).
-Values of annotation types cannot be created directly, but can be operated on when accessed using platform-specific facilities.
+Values of annotation types can also be created directly, but are usually operated on using platform-specific facilities.
+
+> Note: before Kotlin 1.6, annotation types could not be created directly.
### Annotation values
@@ -15,6 +17,9 @@ An annotation type is a special kind of class type which is allowed to include r
- Other annotation types;
- [Arrays][Array types] of any type listed above.
+> Important: when we say "other annotation types", we mean an annotation type cannot reference itself, either directly or indirectly.
+> For example, if annotation type `A` references annotation type `B` which references an array of `A`, it is prohibited and reported as a compile-time error.
+
Annotation classes are not allowed to have any member functions, constructors or mutable properties.
They are also not allowed to have declared supertypes and are considered to be implicitly derived from `kotlin.Annotation`.
diff --git a/docs/src/md/kotlin.core/cdfa.md b/docs/src/md/kotlin.core/cdfa.md
index d4d8e7092..9ab300cb3 100644
--- a/docs/src/md/kotlin.core/cdfa.md
+++ b/docs/src/md/kotlin.core/cdfa.md
@@ -1390,7 +1390,7 @@ See the [corresponding section][Smart casts] for details.
#### Function contracts
-> Note: as of Kotlin 1.5.0, contracts for user-defined functions are an experimental feature and, thus, not described here
+> Note: as of Kotlin $\currentKotlinMajorVersion{}$, contracts for user-defined functions are an experimental feature and, thus, not described here
Some standard-library functions in Kotlin are defined in such a way that they adhere to a specific *call contract* that affects the way calls to such functions are analyzed from the perspective of the caller's control flow graph.
A function's call contract consists of one or more *effects*.
diff --git a/docs/src/md/kotlin.core/declarations.md b/docs/src/md/kotlin.core/declarations.md
index 7ec68b57e..59bd6b678 100644
--- a/docs/src/md/kotlin.core/declarations.md
+++ b/docs/src/md/kotlin.core/declarations.md
@@ -38,8 +38,6 @@ There are three kinds of classifier declarations:
> Important: [object literals] are similar to [object declarations][Object declaration] and are considered to be anonymous classifier declarations, despite being [expressions].
-
-
#### Class declaration
A simple class declaration consists of the following parts.
@@ -405,8 +403,8 @@ As such, data classes allow Kotlin to reduce the boilerplate and generate a numb
- `equals(that)` returns true iff:
- `that` has the same runtime type as `this`;
- `this.prop == that.prop` returns `true` for every data property `prop`;
- - `hashCode()` returns the same numbers for objects `A` and `B` if they are equal w.r.t. the generated `equals`;
- - `toString` returns a string representations which is guaranteed to include the class name along with all the data properties' string representations.
+ - `hashCode()` returns the same numbers for values `A` and `B` if they are equal w.r.t. the generated `equals`;
+ - `toString()` returns a string representations which is guaranteed to include the class name along with all the data properties' string representations.
* A `copy()` function for shallow object copying with the following properties:
- It has the same number of parameters as the primary constructor with the same names and types;
- It calls the primary constructor with the corresponding parameters at the corresponding positions;
@@ -501,6 +499,35 @@ Data classes have the following restrictions:
>
> Disclaimer: the implementations of these methods given in this examples are not guaranteed to exactly match the ones generated by kotlin compiler, please refer to the descriptions of these methods above for guarantees
+##### Data object declaration
+
+> Note: as of Kotlin $\currentKotlinMajorVersion{}$, this feature is experimental.
+
+A data object $\dataObject$ is a special kind of [object][Object declaration], which extends the [data class][Data class declaration] abstraction (product type of one or more data properties) to a case of unit type: product type of zero data properties.
+
+> Note: unit type has only one possible value, thus it is also known as singleton type.
+
+Similarly to data classes, there are a number of functions with predefined behaviour generated for data objects.
+
+* `equals() / hashCode() / toString()` functions compliant with [their contracts][`kotlin.Any`-builtins]:
+ - `equals(that)` returns true iff `that` has the same runtime type as `this`;
+ - `hashCode()` returns the same numbers for values `A` and `B` if they are equal w.r.t. the generated `equals`;
+ - `toString()` returns a string representations which is guaranteed to include the object name.
+
+> Note: `copy()` and `componentN()` functions are not generated, as they are not relevant for a unit type.
+>
+> * `copy()` function is not needed as unit type has a single possible value;
+> * `componentN()` functions are not needed as unit type has no data properties.
+
+Unlike data classes, however, for data objects the only generated function which can be exemplified or inherited is `toString()`; `equals()` and `hashCode()` for a data object always work as specified above.
+This is to ensure data objects do not violate the unit type invariant of "being inhabited by only one value", which would be possible if one were to provide a custom `equals()` implementation.
+
+If either `equals()` or `hashCode()` function would be exemplified or inherited by a data object, it is a compile-time error.
+
+Data objects have the same restrictions are regular [objects][Object declaration].
+
+> Note: [companion objects][Class declaration] and [object literals][Object literals] cannot be data objects.
+
#### Enum class declaration
Enum class $E$ is a special kind of class with the following properties:
@@ -512,6 +539,8 @@ Enum class $E$ is a special kind of class with the following properties:
- It cannot have type parameters of any kind;
- It has special syntax to accommodate for the properties described above.
+> Note: for the purposes of overload resolution, enum entries are considered to be [static member callables][Call with an explicit type receiver] of the enum class type
+
Enum class body uses special kind of syntax (see grammar) to declare enum entries in addition to all other declarations inside the class body.
Enum entries have their own bodies that may contain their own declarations, similar to [object declarations][Classifier declaration].
@@ -544,27 +573,41 @@ Every enum entry of class `E` implicitly overrides members of `kotlin.Enum` i
(a member of `kotlin.Any`) defined by default to return the entry name, but may be overridden to have different behaviour both in the enum class declaration and in entry declarations.
-In addition to these, every enum class type `E` has the following **static** member functions declared implicitly:
+In addition to these, every enum class type `E` has the following **static** members declared implicitly:
+
+- ```kotlin
+ public final static val entries: EnumEntries
+ ```
+
+ This property returns an instance of a special immutable `EnumEntries` list of all possible enum values in the order they are declared;
- ```kotlin
public final static fun valueOf(value: String): E
```
- returning an object corresponding to the entry with the name equal to `value` parameter of the call or throws an exception otherwise;
+ This function returns an object corresponding to the entry with the name equal to `value` parameter of the call or throws an exception otherwise.
+
+> Important: `static` is not a valid Kotlin keyword and is only used here for clarity.
+> The static members are handled differently by the [overload resolution][Call with an explicit type receiver].
+
+Kotlin standard library also introduces a function to access all enum values for a specific enum class called `kotlin.enumEntries`.
+Please refer to the standard library documentation for details.
+
+> Note: the `entries` property is available since Kotlin 1.9.
+
+For backwards compatibility, in addition to the `entries` property, every enum class type `E` has the following **static** member function declared implicitly.
- ```kotlin
public final static fun values(): kotlin.Array
```
-
- returning an [array][Array types] of all possible enum values in the order they are declared.
- Every invocation of this function returns a new array to disallow changing its contents.
-> Important: `static` is not a valid Kotlin keyword and is only used here for clarity
+ This function returns an [array][Array types] of all possible enum values in the order they are declared.
+ Every invocation of this function returns a new array to disallow changing its contents.
-> Note: these static member functions are handled differently by the [overload resolution][Overload resolution].
+> Important: `values` function is effectively deprecated and `entries` property should be used instead.
-> Note: Kotlin standard library introduces another function to access all enum values for a specific enum class called `kotlin.enumValues`.
-> Please refer to the standard library documentation for details.
+Kotlin standard library also introduces another function to access all enum values for a specific enum class called `kotlin.enumValues` (which is deprecated for subsequent removal).
+Please refer to the standard library documentation for details.
> Example:
>
@@ -624,10 +667,17 @@ Annotation classes have the following properties:
- Other annotation types;
- Arrays of any other allowed type.
+> Important: when we say "other annotation types", we mean an annotation type cannot reference itself, either directly or indirectly.
+> For example, if annotation type `A` references annotation type `B` which references an array of `A`, it is prohibited and reported as a compile-time error.
+
> Note: annotation classes can have type parameters, but cannot use them as types for their primary constructor parameters.
> Their main use is for various annotation processing tools, which can access the type arguments from the source code.
-Annotation classes cannot be constructed directly unless passed as arguments to other annotations, but their primary constructors are used when specifying [code annotations][Annotations] for other entities.
+The main use of annotation classes is when specifying [code annotations][Annotations] for other entities.
+Additionally, annotation classes can be instantiated directly, for cases when you require working with an annotation instance directly.
+For example, this is needed for interoperability with some Java annotation APIs, as in Java you can implement an annotation interface and then instantiate it.
+
+> Note: before Kotlin 1.6, annotation classes could not be instantiated directly.
> Examples:
>
@@ -659,9 +709,6 @@ Annotation classes cannot be constructed directly unless passed as arguments to
#### Value class declaration
-> Note: as of Kotlin 1.5.0, user-defined value classes are an experimental feature.
-> There is, however, a number of value classes in Kotlin standard library.
-
A class may be declared a **value** class by using `inline` or `value` modifier in its declaration.
Value classes must adhere to the following limitations:
@@ -670,18 +717,21 @@ Value classes must adhere to the following limitations:
* Value classes must have a primary constructor with a single property constructor parameter, which is the data property of the class;
* This property cannot be specified as `vararg` constructor argument;
* This property must be declared `public`;
-* This property must be of [a runtime-available type][Runtime-available types];
* They must not override `equals` and `hashCode` member functions of `kotlin.Any`;
* They must not have any base classes besides `kotlin.Any`;
* No other properties of this class may have backing fields.
> Note: `inline` modifier for value classes is supported as a legacy feature for compatibility with Kotlin 1.4 experimental inline classes and will be deprecated in the future.
+> Note: before Kotlin 1.8, value classes supported only properties of [a runtime-available types].
+
Value classes implicitly override `equals` and `hashCode` member functions of `kotlin.Any` by delegating them to their only data property.
Unless `toString` is overridden by the value class definition, it is also implicitly overridden by delegating to the data property.
In addition to these, an value class is allowed by the implementation to be **inlined** where applicable, so that its data property is operated on instead.
This also means that the property may be boxed back to the value class by using its primary constructor at any time if the compiler decides it is the right thing to do.
+> Note: when inlining a data property of a non-runtime-available type $U$ (i.e., a non-reified type parameter), the property is considered to be of type, which is the runtime-available upper bound of $U$.
+
Due to these restrictions, it is highly discouraged to use value classes with the [reference equality operators][Reference equality expressions].
> Note: in the future versions of Kotlin, value classes may be allowed to have more than one data property.
@@ -694,13 +744,16 @@ In other aspects they are similar to classes, therefore we shall specify their d
* An interface can be declared only in a declaration scope;
* Additionally, an interface cannot be declared in an [object literal][Object literals];
* An interface cannot have a class as its supertype;
+ * This also means it is not considered to have `kotlin.Any` as its supertype for the purposes of [inheriting] and [overriding] callables;
+ * However, it is still considered to be a subtype of `kotlin.Any` w.r.t. [subtyping];
* An interface cannot have a constructor;
* Interface properties cannot have initializers or backing fields;
* Interface properties cannot be delegated;
* An interface cannot have inner classes;
* An interface and all its members are implicitly open;
* All interface member properties and functions are implicitly public;
- * Trying to declare a non-public member property or function in an interface is an compile-time error.
+ * Trying to declare a non-public member property or function in an interface is an compile-time error;
+* Interface member properties and functions without implementation are implicitly abstract.
##### Functional interface declaration
@@ -791,6 +844,8 @@ Similarly to interfaces, we shall specify object declarations by highlighting th
> Note: this section is about declaration of _named_ objects.
> Kotlin also has a concept of _anonymous_ objects, or object literals, which are similar to their named counterparts, but are expressions rather than declarations and, as such, are described in the [corresponding section][Object literals].
+> Note: besides regular object declarations, Kotlin supports [data object declarations][Data object declaration].
+
#### Local class declaration
A class (but not an interface or an object) may be declared *locally* inside a [statement scope][Scopes and identifiers] (namely, inside a function).
@@ -947,7 +1002,7 @@ In other cases return type $R$ cannot be omitted and must be specified explicitl
> As type `kotlin.Nothing` has a [special meaning][`kotlin.Nothing`-typesystem] in Kotlin type system, it must be specified explicitly, to avoid spurious `kotlin.Nothing` function return types.
Function body $b$ is optional; if it is omitted, a function declaration creates an *abstract* function, which does not have an implementation.
-This is allowed only inside an [abstract class][Abstract classes-declarations].
+This is allowed only inside an [abstract class][Abstract classes-declarations] or an [interface][Interface declaration].
If a function body $b$ is present, it should evaluate to type $B$ which should satisfy $B <: R$.
[`kotlin.Nothing`-typesystem]: #kotlin.nothing-typesystem
@@ -1125,11 +1180,17 @@ They may also be passed to other functions as `noinline` or `crossinline` argume
Particular platforms may introduce additional restrictions or guarantees for the inlining mechanism.
+> Important: for extension functions, the extension receiver is considered to be effectively `noinline`.
+
> Examples:
>
> ```kotlin
-> fun bar(value: Any?) {...}
-> inline fun fee(arg: () -> Unit) {...}
+> fun bar(value: Any?) {}
+>
+> inline fun inlineParameter(arg: () -> Unit) { arg() }
+> inline fun noinlineParameter(noinline arg: () -> Unit) { arg() }
+> inline fun crossinlineParameter(crossinline arg: () -> Unit) { arg() }
+>
> inline fun foo(inl: () -> Unit,
> crossinline cinl: () -> Unit,
> noinline noinl: () -> Unit) {
@@ -1138,22 +1199,61 @@ Particular platforms may introduce additional restrictions or guarantees for the
> cinl()
> noinl()
> // all arguments may be passed as inline
-> fee(inl)
-> fee(cinl)
-> fee(noinl)
-> // passing to non-inline function
-> // is allowed only for noinline parameters
+> inlineParameter(inl)
+> inlineParameter(cinl)
+> inlineParameter(noinl)
+> // only noinline arguments may be passed as noinline
+> noinlineParameter(inl) // not allowed
+> noinlineParameter(cinl) // not allowed
+> noinlineParameter(noinl)
+> // noinline/crossinline arguments may be passed as crossinline
+> crossinlineParameter(inl) // not allowed
+> crossinlineParameter(cinl)
+> crossinlineParameter(noinl)
+> // only noinline arguments may be passed to non-inline functions
> bar(inl) // not allowed
> bar(cinl) // not allowed
-> bar(noinl) // allowed
-> // capturing in a lambda expression
-> // is allowed for noinline/crossinline parameters
+> bar(noinl)
+> // noinline/crossinline parameters may be captured in lambda literals
> bar({ inl() }) // not allowed
-> bar({ cinl() }) // allowed
-> bar({ noinl() }) // allowed
+> bar({ cinl() })
+> bar({ noinl() })
> }
> ```
+#### Infix functions
+
+A function may be declared as an *infix* function by using a special `infix` modifier.
+An infix function can be called in an [infix form][Infix function call], i.e., `a foo b` instead of `a.foo(b)`.
+
+To be a valid infix function, function $F$ must satisfy the following requirements.
+
+* $F$ has a dispatch or an extension [receiver][Receivers]
+* $F$ has exactly one parameter
+
+TODO(Examples)
+
+#### Local function declaration
+
+A function may be declared *locally* inside a [statement scope][Scopes and identifiers] (namely, inside another function).
+Such declarations are similar to [function literals] in that they may capture values available in the scope they are declared in.
+Otherwise they are similar to regular function declarations.
+
+```kotlin
+fun foo() {
+ var x = 2
+
+ fun bar(): Int {
+ return x
+ }
+
+ println(bar()) // 2
+
+ x = 42
+ println(bar()) // 42
+}
+```
+
#### Tail recursion optimization
A function may be declared *tail-recursive* by using a special `tailrec` modifier.
@@ -1337,7 +1437,9 @@ Properties without backing fields are not allowed to have initializer expression
Read/write access to the property is replaced with getter/setter invocation respectively.
Getters and setters allow for some modifiers available for function declarations (for example, they may be declared `inline`, see grammar for details).
+
Properties themselves may also be declared `inline`, meaning that both getter and setter of said property are `inline`.
+Additionally, `inline` properties are not allowed to have backing fields, i.e., they must have custom accessors which do not use the `field` property.
#### Delegated property declaration
@@ -1633,7 +1735,7 @@ The scope where it is accessible is defined by its [*visibility modifiers*][Decl
> Examples:
> ```kotlin
-> // simple typ ealias declaration
+> // simple typealias declaration
> typealias IntList = List
> // parameterized type alias declaration
> // T has out variance implicitly
@@ -1658,7 +1760,6 @@ The following declarations are not allowed to have type parameters:
- Constructor declarations;
- Getters and setters of property declarations;
- Enum class declarations;
-- Annotation class declarations;
- Classifier declarations inheriting from `kotlin.Throwable`.
Type parameters are allowed to specify *subtyping restrictions* on them in the form `T : U`, meaning $T <: U$ where $T$ is a type parameter and $U$ is some other type available in the scope the declaration is declared in.
@@ -1743,9 +1844,9 @@ By supplying this annotation the author of the code explicitly declares that saf
#### Reified type parameters
-Type parameters of inline function declarations (and only those) can be declared `reified` using the corresponding keyword.
-A reified type parameter is a [runtime-available][Runtime-available types] type inside the function scope, see the corresponding section for details.
-Reified type parameters can only be substituted by other [runtime-available types][Runtime-available types] when using such functions.
+Type parameters of inline function or property declarations (and only those) can be declared `reified` using the corresponding keyword.
+A reified type parameter is a [runtime-available][Runtime-available types] type inside their declaration's scope, see the corresponding section for details.
+Reified type parameters can only be substituted by other [runtime-available types][Runtime-available types] when using such declarations.
> Example:
>
@@ -1766,8 +1867,8 @@ In case one needs to explicitly specify some type parameters via [type arguments
An underscore type argument does not add any type information to the [constraint system][Kotlin type constraints] *besides the presence of a type parameter*, i.e., parameterized declaration with different number of type parameters could be distinguished by different number of underscore type arguments.
-If the type inference is successfull, each underscore type argument is considered to be equal to the inferred type for their respective type parameter.
-If the type inference is not successfull, it is a compile-time error.
+If the type inference is successful, each underscore type argument is considered to be equal to the inferred type for their respective type parameter.
+If the type inference is not successful, it is a compile-time error.
> Example:
> ```kotlin
diff --git a/docs/src/md/kotlin.core/expressions.md b/docs/src/md/kotlin.core/expressions.md
index 22bf9977d..457c8d7d3 100644
--- a/docs/src/md/kotlin.core/expressions.md
+++ b/docs/src/md/kotlin.core/expressions.md
@@ -418,7 +418,7 @@ If when expression is not [exhaustive][Exhaustive when expressions], it has type
> }
> ```
-When with bound value also allows for an inline property declaration of the form `when (val V = E) { ... }` inside the parentheses.
+When with bound value also allows for an in-place property declaration of the form `when (val V = E) { ... }` inside the parentheses.
This declares a new property (see [declaration sections][Property declaration] for details) alongside the usual mechanics of the *when-expression*.
The scope of this property is limited to the `when` expression, including both conditions and control structure bodies of the expression.
As its form is limited to a simple "assignment-like" declaration with an initializer, this property does not allow getters, setters, delegation or destructuring.
@@ -541,9 +541,9 @@ In particular, this means that two values acquired by the same constructor call
A value created by any constructor call is never equal by reference to a null reference.
There is an exception to these rules: values of [value classes][Value class declaration] are not guaranteed to be reference equal even if they are created by the same constructor invocation as said constructor invocation is explicitly allowed to be inlined by the compiler.
-It is thus highly discouraged to compare inline classes by reference.
+It is thus highly discouraged to compare value classes by reference.
-For special values created without explicit constructor calls, notably, [constant literals][Constant literals] and [constant expressions][Constant expressions] composed of those literals, and for values of inline classes, the following holds:
+For special values created without explicit constructor calls, notably, [constant literals][Constant literals] and [constant expressions][Constant expressions] composed of those literals, and for values of value classes, the following holds:
- If these values are [non-equal by value][Value equality expressions], they are also non-equal by reference;
- Any instance of the null reference `null` is equal by reference to any other
@@ -711,15 +711,16 @@ The type of elvis operator expression is the [least upper bound][Least upper bou
:::{.paste target=grammar-rule-rangeExpression}
:::
-A *range expression* is a binary expression which uses a range operator `..`.
-It is an [overloadable][Operator overloading] operator with the following expansion:
+A *range expression* is a binary expression which uses a range operator `..` or a range-until operator `..<`.
+These are [overloadable][Operator overloading] operators with the following expansions:
- `A..B` is exactly the same as `A.rangeTo(B)`
+- `A.. Note: this type may be non-denotable in Kotlin and, as such, may be [approximated][Type approximation] in some situations with the help of [type inference][Type inference].
diff --git a/docs/src/md/kotlin.core/inheritance.md b/docs/src/md/kotlin.core/inheritance.md
index 10d78c51d..ae71eee97 100644
--- a/docs/src/md/kotlin.core/inheritance.md
+++ b/docs/src/md/kotlin.core/inheritance.md
@@ -29,7 +29,7 @@ When a classifier type $A$ is declared with base types $B_1, \dots, B_m$, it int
A class declared `abstract` cannot be instantiated, i.e., an object of this class cannot be created directly.
Abstract classes are implicitly `open` and their primary purpose is to be inherited from.
-Only abstract classes allow for `abstract` [property][Property declaration] and [function][Function declaration] declarations in their scope.
+Abstract classes (similarly to [interfaces][Interface declaration]) allow for `abstract` [property][Property declaration] and [function][Function declaration] declarations in their scope.
#### Sealed classes and interfaces
@@ -37,7 +37,7 @@ A class or interface (but not a [functional interface][Functional interface decl
- A `sealed` class is implicitly `abstract` (and these two modifiers are exclusive);
- A `sealed` class or interface can only be inherited from by types declared in the same package and in the same [module][Modules], and which have a fully-qualified name (meaning local and anonymous types cannon be inherited from `sealed` types);
-- `Sealed` classes and interfaces allow for exhaustiveness checking of [when expressions][When expressions] for values of such types.
+- `Sealed` classes and interfaces allow for exhaustiveness checking of [when expressions][Exhaustive when expressions] for values of such types.
Any sealed type `S` is associated with its *direct non-sealed subtypes*: a set of non-sealed types, which are either direct subtypes of `S` or transitive subtypes of `S` via some number of other *sealed* types.
These direct non-sealed subtypes form the boundary for exhaustiveness checks.
@@ -47,6 +47,39 @@ A class or interface (but not a [functional interface][Functional interface decl
Most of them are closed class types and cannot be inherited from.
[Function types][Function types] are treated as interfaces and can be inherited from as such.
+### Matching and subsumption of declarations
+
+A callable declaration $D$ *matches* to a callable declaration $B$ if the following are true.
+
+* $B$ and $D$ have the same name;
+* $B$ and $D$ are declarations of the same kind (property declarations or function declarations);
+* [Function signature][Function signature] of $D$ (if any) matches function signature of $B$ (if any).
+
+A callable declaration $D$ *subsumes* a callable declaration $B$ if the following are true.
+
+* $B$ and $D$ match;
+* The classifier of $B$ (where it is declared) is a supertype of the classifier of $D$.
+
+The notions of matching and subsumption are used when talking about how declarations are [inherited][Inheriting] and [overridden][Overriding].
+
+### Inheriting
+
+A callable declaration (that is, a [property][Property declaration] or [member function][Function declaration] declaration) inside a classifier declaration is said to be *inheritable* if:
+
+- Its visibility (and the visibility of its getter and setter, if present) is not `private`.
+
+If the declaration $B$ of the base classifier type is inheritable, no other inheritable declaration from the base classifier types subsume $B$, no declarations in the derived classifier type [override][Overriding] $B$, then $B$ is *inherited* by the derived classifier type.
+
+As Kotlin is a language with single inheritance (only one supertype can be a class, any number of supertypes can be an interface), there are several additional rules which refine how declarations are inherited.
+
+* If a derived class type inherits a declaration from its superclass, no other matching *abstract* declarations from its superinterfaces are inherited.
+
+* If a derived classifier type inherits *several* matching *concrete* declarations from its supertypes, it is a compile-time error (this means a derived classifier type should override such declarations).
+* If a derived *concrete* classifier type inherits an *abstract* declaration from its supertypes, it is a compile-time error (this means a derived classifier type should override such declaration).
+* If a derived classifier type inherits both an *abstract* and a *concrete* declaration from its superinterfaces, it is a compile-time error (this means a derived classifier type should override such declarations).
+
+TODO(Examples)
+
### Overriding
A callable declaration (that is, a [property][Property declaration] or [member function][Function declaration] declaration) inside a classifier declaration is said to be *overridable* if:
@@ -56,12 +89,7 @@ A callable declaration (that is, a [property][Property declaration] or [member f
It is illegal for a declaration to be both `private` and either `open`, `abstract` or `override`, such declarations should result in a compile-time error.
-A callable declaration $D$ inside a classifier declaration *subsumes* a name-matching declaration $B$ of the base classifier type if the following are true.
-
-* $B$ and $D$ are declarations of the same kind (property declarations or function declarations);
-* [Function signature][Function signature] of $D$ (if any) matches function signature of $B$ (if any).
-
-If the declaration $B$ of the base classifier type is overridable, the declaration $D$ of the derived classifier type subsumes it, and $D$ has an `override` modifier, $D$ is *overriding* the base declaration $B$.
+If the declaration $B$ of the base classifier type is overridable, the declaration $D$ of the derived classifier type subsumes $B$, and $D$ has an `override` modifier, then $D$ is *overriding* the base declaration $B$.
A function declaration $D$ which overrides function declaration $B$ should satisfy the following conditions.
diff --git a/docs/src/md/kotlin.core/introduction.md b/docs/src/md/kotlin.core/introduction.md
index 462136e13..6449b64df 100644
--- a/docs/src/md/kotlin.core/introduction.md
+++ b/docs/src/md/kotlin.core/introduction.md
@@ -13,7 +13,7 @@ Currently, as of version $\currentKotlinMajorVersion{}$, it supports compilation
Furthermore, it supports transparent interoperability between different platforms via its Kotlin Multiplatform Project (Kotlin MPP) feature.
-The type system of Kotlin distinguishes at compile time between nullable and not-nullable types, achieving null-safety, i.e., guaranteeing the absence of runtime errors caused by the absence of value (i.e., `null` value).
+The type system of Kotlin distinguishes at compile time between nullable and non-nullable types, achieving null-safety, i.e., guaranteeing the absence of runtime errors caused by the absence of value (i.e., `null` value).
Kotlin also extends its static type system with elements of gradual and flow typing, for better interoperability with other languages and ease of development.
Kotlin is an object-oriented language which also has a lot of functional programming elements.
@@ -30,7 +30,9 @@ Platform-specific parts of Kotlin and its multiplatform capabilities will be cov
### Compatibility {-}
-Kotlin Language Specification is still in progress and has **experimental** stability level, meaning no compatibility should be expected between even incremental releases, any functionality can be added, removed or changed without warning.
+Kotlin Language Specification is still in progress and has **experimental** stability level, meaning no compatibility should be expected between even incremental releases of the specification, any parts can be added, removed or changed without warning.
+
+> Important: while the specification has experimental stability level, the Kotlin language itself and its compiler have different stability levels for different components, which are described in more detail [here](https://kotlinlang.org/docs/components-stability.html).
### Experimental features {-}
@@ -52,6 +54,7 @@ We would like to thank the following people for their invaluable help and feedba
* Neal Gafter
* Dmitrii Petrov
* Victor Petukhov
+* Vladimir Reshetnikov
* Dmitry Savvinov
* Anastasiia Spaseeva
* Mikhail Zarechenskii
diff --git a/docs/src/md/kotlin.core/overload-resolution.md b/docs/src/md/kotlin.core/overload-resolution.md
index 12f304980..766af553b 100644
--- a/docs/src/md/kotlin.core/overload-resolution.md
+++ b/docs/src/md/kotlin.core/overload-resolution.md
@@ -230,7 +230,8 @@ They mostly follow the same rules as [calls with an explicit value receiver][Cal
However, for a callable `f` with an explicit type receiver `T` the following sets are analyzed (**in the given order**):
1. Static member callables named `f` of type `T`;
-2. The overload candidate sets for call `T.f()`, where `T` is a companion object of type `T`.
+2. Static member callables named `f` of type `T` declared implicitly;
+3. The overload candidate sets for call `T.f()`, where `T` is a companion object of type `T`.
##### Call with an explicit super-form receiver
@@ -730,6 +731,14 @@ TODO: more examples
> Note: this is different from the overload resolution for regular calls in that no most specific candidate selection process is performed inside the sets
+> Important: when the callable reference resolution for `T::f` requires building overload candidate sets for both [type][Call with an explicit type receiver] and [value][Call with an explicit receiver] receiver candidates, they are considered in the following order.
+>
+> 1. Static member callables named `f` of type `T`;
+> 2. The overload candidate sets for call `t::f`, where `t` is a value of type `T`;
+> 3. The overload candidate sets for call `T::f`, where `T` is a companion object of type `T`.
+>
+> Callable references to members of companion objects are deprioritized, as you could always use the `T.Companion::f` syntax to reference them.
+
> Important: when building the OCS for a callable reference, `invoke` operator convention does not apply, and all property references are treated equally as function references, being placed in the same sets.
> For example, consider the following code:
>
diff --git a/docs/src/md/kotlin.core/scoping.md b/docs/src/md/kotlin.core/scoping.md
index 62c5756d0..6503e301e 100644
--- a/docs/src/md/kotlin.core/scoping.md
+++ b/docs/src/md/kotlin.core/scoping.md
@@ -124,7 +124,7 @@ Besides identifiers which are introduced by the developer (e.g., via declaring c
### Labels
Labels are special syntactic marks which allow one to reference certain code fragments or elements.
-[Lambda expressions][Lambda literals]) and [loop statements][Loop statements] are allowed to be labeled, with label identifier associated with the corresponding entity.
+[Lambda expressions][Lambda literals] and [loop statements][Loop statements] are allowed to be labeled, with label identifier associated with the corresponding entity.
> Note: in Kotlin version 1.3 and earlier, labels were allowed to be placed on any expression or statement.
diff --git a/docs/src/md/kotlin.core/syntax.md b/docs/src/md/kotlin.core/syntax.md
index 6c5ac6e87..9da36fbd7 100644
--- a/docs/src/md/kotlin.core/syntax.md
+++ b/docs/src/md/kotlin.core/syntax.md
@@ -603,7 +603,7 @@ Rule names starting with capital letters denote lexical rules, while rule names
::: { .grammar-rule #grammar-rule-DoubleLiteral }
**_DoubleLiteral_:**
~ [[_DecDigits_](#grammar-rule-DecDigits)] `'.'` [_DecDigits_](#grammar-rule-DecDigits) [[_DoubleExponent_](#grammar-rule-DoubleExponent)]
- | [[_DecDigits_](#grammar-rule-DecDigits)] [[_DoubleExponent_](#grammar-rule-DoubleExponent)]
+ | [_DecDigits_](#grammar-rule-DecDigits) [_DoubleExponent_](#grammar-rule-DoubleExponent)
:::
::: { .grammar-rule #grammar-rule-IntegerLiteral }
**_IntegerLiteral_:**
diff --git a/docs/src/md/kotlin.core/type-inference.md b/docs/src/md/kotlin.core/type-inference.md
index 10ceff2e1..0acec8f70 100644
--- a/docs/src/md/kotlin.core/type-inference.md
+++ b/docs/src/md/kotlin.core/type-inference.md
@@ -454,7 +454,7 @@ TODO(Is this true?)
### Function signature type inference
-Function signature type inference is a variant of [local type inference], which is performed for [function declarations], [lambda literals] and [anonymous function declarations].
+Function signature type inference is a variant of [local type inference], which is performed for [function declarations][Function declaration], [lambda literals] and [anonymous function declarations].
#### Named and anonymous function declarations
@@ -552,6 +552,7 @@ If $T$ is a nullable type $U?$, the steps given above are performed for its non-
### Builder-style type inference
> Note: before Kotlin 1.7, builder-style type inference required using the [`@BuilderInference`][Built-in annotations] annotation on lambda parameters.
+> Currently, for simple cases when there is a single lambda parameter which requires builder-style inference, this annotation may be omitted.
When working with DSLs that have generic builder functions, one may want to infer the generic builder type parameters using the information from the builder's lambda body.
Kotlin supports special kind of type inference called **builder-style type inference** to allow this in some cases.
@@ -575,6 +576,12 @@ After the inference of statements inside the lambda is complete, these postponed
If the system cannot be solved, it is a compile-time error.
+Builder-style inference has the following important restrictions.
+
+- Any attempt to use an expression with type which is a postponed type variable is a compile-time error.
+- If a call needs builder-style inference for more than one lambda parameter, they all should be marked with [`@BuilderInference`][Built-in annotations] annotation.
+ Otherwise, it is a compile-time error.
+
> Note: notable examples of builder-style inference-enabled functions are `kotlin.sequence` and `kotlin.iterator`.
> See standard library documentation for details.
diff --git a/docs/src/md/kotlin.core/type-system.md b/docs/src/md/kotlin.core/type-system.md
index 17cf30ac5..76f573c9a 100644
--- a/docs/src/md/kotlin.core/type-system.md
+++ b/docs/src/md/kotlin.core/type-system.md
@@ -1448,7 +1448,7 @@ TODO(Add examples of this exceptional case, e.g., (List..List?) & Any =:= (List.
In the presence of recursively defined parameterized types, the algorithm given above is not guaranteed to terminate as there may not exist a finite representation of $\GLB$ for particular two types.
The detection and handling of such situations (compile-time error or leaving the type in some kind of denormalized state) is implementation-defined.
-In some situations, it is needed to construct the least upper bound for more than two types, in which case the least upper bound operator $\GLB(T_1, T_2, \ldots, T_N)$ is defined as $\GLB(T_1, \GLB(T_2, \ldots, T_N))$.
+In some situations, it is needed to construct the greatest lower bound for more than two types, in which case the greatest lower bound operator $\GLB(T_1, T_2, \ldots, T_N)$ is defined as $\GLB(T_1, \GLB(T_2, \ldots, T_N))$.
TODO(It is probably order-dependent or needs to be proven otherwise)
diff --git a/docs/src/md/preamble.html b/docs/src/md/preamble.html
index 55fe1a9fb..7330dcd77 100644
--- a/docs/src/md/preamble.html
+++ b/docs/src/md/preamble.html
@@ -1,24 +1,34 @@
-
-
-
-
+
-
+End Google Tag Manager (noscript) -->
+
+End Google Tag Manager -->
+
+
+
+
diff --git a/docs/src/md/preamble.tex b/docs/src/md/preamble.tex
index c6eb6cb1b..ff5b49d3e 100644
--- a/docs/src/md/preamble.tex
+++ b/docs/src/md/preamble.tex
@@ -6,12 +6,6 @@
\usepackage{todonotes}
-\hypersetup{
- colorlinks=true,
- linkcolor=blue,
- filecolor=cyan
-}
-
\usepackage{titlesec}
\setcounter{tocdepth}{2}
@@ -37,3 +31,10 @@
\hyphenation{
Sus-pend-Co-ro-u-ti-ne-Un-in-ter-cep-ted-Or-Re-turn
}
+
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true,
+ linkcolor=blue,
+ filecolor=cyan
+}
diff --git a/docs/src/md/preface.html b/docs/src/md/preface.html
index bae973fce..3edf85169 100644
--- a/docs/src/md/preface.html
+++ b/docs/src/md/preface.html
@@ -4,7 +4,7 @@
- Kotlin
+ Kotlin
Download PDF
diff --git a/grammar/build.gradle.kts b/grammar/build.gradle.kts
index a69020886..9aeb11608 100644
--- a/grammar/build.gradle.kts
+++ b/grammar/build.gradle.kts
@@ -19,7 +19,7 @@ val archivePrefix = "kotlin-grammar-parser"
repositories {
maven {
- url = URI("https://maven.vorpal-research.science")
+ url = URI("https://maven.apal-research.com")
}
mavenCentral()
}
@@ -60,7 +60,7 @@ intellij {
tasks.withType {
outputDirectory =
- File("${project.rootDir}/grammar/src/main/java/org/jetbrains/kotlin/spec/grammar/parser").also { it.mkdirs() }
+ File("${project.rootDir}/grammar/src/main/java/org/jetbrains/kotlin/spec/grammar").also { it.mkdirs() }
arguments.add("-package")
arguments.add("org.jetbrains.kotlin.spec.grammar")
diff --git a/grammar/scripts/build/downloadCompilerTests.sh b/grammar/scripts/build/downloadCompilerTests.sh
index ca6e54d9e..da808a088 100644
--- a/grammar/scripts/build/downloadCompilerTests.sh
+++ b/grammar/scripts/build/downloadCompilerTests.sh
@@ -14,6 +14,8 @@ git remote add origin https://github.com/JetBrains/kotlin
git fetch origin master
git pull origin master
+find ${PROJECT_DIR}/testData -name "*.kt" -delete
+
cp -R compiler/testData/psi/. ${PROJECT_DIR}/testData/psi
cp -R compiler/testData/diagnostics/tests/. ${PROJECT_DIR}/testData/diagnostics
diff --git a/grammar/scripts/compareActuals.sh b/grammar/scripts/compareActuals.sh
new file mode 100755
index 000000000..66cfdeeeb
--- /dev/null
+++ b/grammar/scripts/compareActuals.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+TEST_DATA="$1"
+
+for fo in `find ${TEST_DATA} -name "*.antlrtree.txt"`; do
+ fa="$fo.actual";
+ if [[ -e $fa ]]; then
+ meld $fa $fo;
+ fi
+done
diff --git a/grammar/scripts/processActuals.sh b/grammar/scripts/processActuals.sh
index 9f4f6cfc6..e082c31ad 100755
--- a/grammar/scripts/processActuals.sh
+++ b/grammar/scripts/processActuals.sh
@@ -4,14 +4,14 @@ TEST_DATA="$1"
REF="$2"
for actual in `find "${TEST_DATA}" -name "*.actual"`; do
- old="${actual%.*}"
- diff "$actual" "$old" | tail -n +2 > "actual_old_diff.tmp"
- cmp -s "actual_old_diff.tmp" "$REF"
+ old="${actual%.*}";
+ diff "$actual" "$old" | tail -n +2 > "actual_old_diff.tmp";
+ cmp -s "actual_old_diff.tmp" "$REF";
if [[ $? == 0 ]]; then
- mv $actual $old
+ mv $actual $old;
else
- echo "$actual"
- echo `diff "$actual" "$old"`
+ echo "$actual";
+ echo `diff "$actual" "$old"`;
fi
done
diff --git a/grammar/scripts/processModified.sh b/grammar/scripts/processModified.sh
new file mode 100755
index 000000000..613173752
--- /dev/null
+++ b/grammar/scripts/processModified.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+REF="$1"
+
+for i in `git status -s | grep "^ M.*\.antlrtree.txt$" | cut -d ' ' -f 3`; do
+ git diff --numstat HEAD $i | grep -q "$REF";
+ if [[ $? == 0 ]]; then
+ echo $i;
+ fi
+done
diff --git a/grammar/src/main/antlr/KotlinLexer.g4 b/grammar/src/main/antlr/KotlinLexer.g4
index d36cdbba1..3eff52ff1 100644
--- a/grammar/src/main/antlr/KotlinLexer.g4
+++ b/grammar/src/main/antlr/KotlinLexer.g4
@@ -68,6 +68,7 @@ MOD_ASSIGNMENT: '%=';
ARROW: '->';
DOUBLE_ARROW: '=>';
RANGE: '..';
+RANGE_UNTIL: '..<';
COLONCOLON: '::';
DOUBLE_SEMICOLON: ';;';
HASH: '#';
@@ -417,6 +418,7 @@ Inside_MOD_ASSIGNMENT: MOD_ASSIGNMENT -> type(MOD_ASSIGNMENT);
Inside_ARROW: ARROW -> type(ARROW);
Inside_DOUBLE_ARROW: DOUBLE_ARROW -> type(DOUBLE_ARROW);
Inside_RANGE: RANGE -> type(RANGE);
+Inside_RANGE_UNTIL: RANGE_UNTIL -> type(RANGE_UNTIL);
Inside_RESERVED: RESERVED -> type(RESERVED);
Inside_COLONCOLON: COLONCOLON -> type(COLONCOLON);
Inside_DOUBLE_SEMICOLON: DOUBLE_SEMICOLON -> type(DOUBLE_SEMICOLON);
diff --git a/grammar/src/main/antlr/KotlinLexer.tokens b/grammar/src/main/antlr/KotlinLexer.tokens
index 8692c66d6..9aefd79cc 100644
--- a/grammar/src/main/antlr/KotlinLexer.tokens
+++ b/grammar/src/main/antlr/KotlinLexer.tokens
@@ -34,142 +34,143 @@ MOD_ASSIGNMENT=33
ARROW=34
DOUBLE_ARROW=35
RANGE=36
-COLONCOLON=37
-DOUBLE_SEMICOLON=38
-HASH=39
-AT_NO_WS=40
-AT_POST_WS=41
-AT_PRE_WS=42
-AT_BOTH_WS=43
-QUEST_WS=44
-QUEST_NO_WS=45
-LANGLE=46
-RANGLE=47
-LE=48
-GE=49
-EXCL_EQ=50
-EXCL_EQEQ=51
-AS_SAFE=52
-EQEQ=53
-EQEQEQ=54
-SINGLE_QUOTE=55
-AMP=56
-RETURN_AT=57
-CONTINUE_AT=58
-BREAK_AT=59
-THIS_AT=60
-SUPER_AT=61
-FILE=62
-FIELD=63
-PROPERTY=64
-GET=65
-SET=66
-RECEIVER=67
-PARAM=68
-SETPARAM=69
-DELEGATE=70
-PACKAGE=71
-IMPORT=72
-CLASS=73
-INTERFACE=74
-FUN=75
-OBJECT=76
-VAL=77
-VAR=78
-TYPE_ALIAS=79
-CONSTRUCTOR=80
-BY=81
-COMPANION=82
-INIT=83
-THIS=84
-SUPER=85
-TYPEOF=86
-WHERE=87
-IF=88
-ELSE=89
-WHEN=90
-TRY=91
-CATCH=92
-FINALLY=93
-FOR=94
-DO=95
-WHILE=96
-THROW=97
-RETURN=98
-CONTINUE=99
-BREAK=100
-AS=101
-IS=102
-IN=103
-NOT_IS=104
-NOT_IN=105
-OUT=106
-DYNAMIC=107
-PUBLIC=108
-PRIVATE=109
-PROTECTED=110
-INTERNAL=111
-ENUM=112
-SEALED=113
-ANNOTATION=114
-DATA=115
-INNER=116
-VALUE=117
-TAILREC=118
-OPERATOR=119
-INLINE=120
-INFIX=121
-EXTERNAL=122
-SUSPEND=123
-OVERRIDE=124
-ABSTRACT=125
-FINAL=126
-OPEN=127
-CONST=128
-LATEINIT=129
-VARARG=130
-NOINLINE=131
-CROSSINLINE=132
-REIFIED=133
-EXPECT=134
-ACTUAL=135
-RealLiteral=136
-FloatLiteral=137
-DoubleLiteral=138
-IntegerLiteral=139
-HexLiteral=140
-BinLiteral=141
-UnsignedLiteral=142
-LongLiteral=143
-BooleanLiteral=144
-NullLiteral=145
-CharacterLiteral=146
-Identifier=147
-IdentifierOrSoftKey=148
-FieldIdentifier=149
-QUOTE_OPEN=150
-TRIPLE_QUOTE_OPEN=151
-UNICODE_CLASS_LL=152
-UNICODE_CLASS_LM=153
-UNICODE_CLASS_LO=154
-UNICODE_CLASS_LT=155
-UNICODE_CLASS_LU=156
-UNICODE_CLASS_ND=157
-UNICODE_CLASS_NL=158
-QUOTE_CLOSE=159
-LineStrRef=160
-LineStrText=161
-LineStrEscapedChar=162
-LineStrExprStart=163
-TRIPLE_QUOTE_CLOSE=164
-MultiLineStringQuote=165
-MultiLineStrRef=166
-MultiLineStrText=167
-MultiLineStrExprStart=168
-Inside_Comment=169
-Inside_WS=170
-Inside_NL=171
-ErrorCharacter=172
+RANGE_UNTIL=37
+COLONCOLON=38
+DOUBLE_SEMICOLON=39
+HASH=40
+AT_NO_WS=41
+AT_POST_WS=42
+AT_PRE_WS=43
+AT_BOTH_WS=44
+QUEST_WS=45
+QUEST_NO_WS=46
+LANGLE=47
+RANGLE=48
+LE=49
+GE=50
+EXCL_EQ=51
+EXCL_EQEQ=52
+AS_SAFE=53
+EQEQ=54
+EQEQEQ=55
+SINGLE_QUOTE=56
+AMP=57
+RETURN_AT=58
+CONTINUE_AT=59
+BREAK_AT=60
+THIS_AT=61
+SUPER_AT=62
+FILE=63
+FIELD=64
+PROPERTY=65
+GET=66
+SET=67
+RECEIVER=68
+PARAM=69
+SETPARAM=70
+DELEGATE=71
+PACKAGE=72
+IMPORT=73
+CLASS=74
+INTERFACE=75
+FUN=76
+OBJECT=77
+VAL=78
+VAR=79
+TYPE_ALIAS=80
+CONSTRUCTOR=81
+BY=82
+COMPANION=83
+INIT=84
+THIS=85
+SUPER=86
+TYPEOF=87
+WHERE=88
+IF=89
+ELSE=90
+WHEN=91
+TRY=92
+CATCH=93
+FINALLY=94
+FOR=95
+DO=96
+WHILE=97
+THROW=98
+RETURN=99
+CONTINUE=100
+BREAK=101
+AS=102
+IS=103
+IN=104
+NOT_IS=105
+NOT_IN=106
+OUT=107
+DYNAMIC=108
+PUBLIC=109
+PRIVATE=110
+PROTECTED=111
+INTERNAL=112
+ENUM=113
+SEALED=114
+ANNOTATION=115
+DATA=116
+INNER=117
+VALUE=118
+TAILREC=119
+OPERATOR=120
+INLINE=121
+INFIX=122
+EXTERNAL=123
+SUSPEND=124
+OVERRIDE=125
+ABSTRACT=126
+FINAL=127
+OPEN=128
+CONST=129
+LATEINIT=130
+VARARG=131
+NOINLINE=132
+CROSSINLINE=133
+REIFIED=134
+EXPECT=135
+ACTUAL=136
+RealLiteral=137
+FloatLiteral=138
+DoubleLiteral=139
+IntegerLiteral=140
+HexLiteral=141
+BinLiteral=142
+UnsignedLiteral=143
+LongLiteral=144
+BooleanLiteral=145
+NullLiteral=146
+CharacterLiteral=147
+Identifier=148
+IdentifierOrSoftKey=149
+FieldIdentifier=150
+QUOTE_OPEN=151
+TRIPLE_QUOTE_OPEN=152
+UNICODE_CLASS_LL=153
+UNICODE_CLASS_LM=154
+UNICODE_CLASS_LO=155
+UNICODE_CLASS_LT=156
+UNICODE_CLASS_LU=157
+UNICODE_CLASS_ND=158
+UNICODE_CLASS_NL=159
+QUOTE_CLOSE=160
+LineStrRef=161
+LineStrText=162
+LineStrEscapedChar=163
+LineStrExprStart=164
+TRIPLE_QUOTE_CLOSE=165
+MultiLineStringQuote=166
+MultiLineStrRef=167
+MultiLineStrText=168
+MultiLineStrExprStart=169
+Inside_Comment=170
+Inside_WS=171
+Inside_NL=172
+ErrorCharacter=173
'...'=6
'.'=7
','=8
@@ -200,93 +201,94 @@ ErrorCharacter=172
'->'=34
'=>'=35
'..'=36
-'::'=37
-';;'=38
-'#'=39
-'@'=40
-'?'=45
-'<'=46
-'>'=47
-'<='=48
-'>='=49
-'!='=50
-'!=='=51
-'as?'=52
-'=='=53
-'==='=54
-'\''=55
-'&'=56
-'file'=62
-'field'=63
-'property'=64
-'get'=65
-'set'=66
-'receiver'=67
-'param'=68
-'setparam'=69
-'delegate'=70
-'package'=71
-'import'=72
-'class'=73
-'interface'=74
-'fun'=75
-'object'=76
-'val'=77
-'var'=78
-'typealias'=79
-'constructor'=80
-'by'=81
-'companion'=82
-'init'=83
-'this'=84
-'super'=85
-'typeof'=86
-'where'=87
-'if'=88
-'else'=89
-'when'=90
-'try'=91
-'catch'=92
-'finally'=93
-'for'=94
-'do'=95
-'while'=96
-'throw'=97
-'return'=98
-'continue'=99
-'break'=100
-'as'=101
-'is'=102
-'in'=103
-'out'=106
-'dynamic'=107
-'public'=108
-'private'=109
-'protected'=110
-'internal'=111
-'enum'=112
-'sealed'=113
-'annotation'=114
-'data'=115
-'inner'=116
-'value'=117
-'tailrec'=118
-'operator'=119
-'inline'=120
-'infix'=121
-'external'=122
-'suspend'=123
-'override'=124
-'abstract'=125
-'final'=126
-'open'=127
-'const'=128
-'lateinit'=129
-'vararg'=130
-'noinline'=131
-'crossinline'=132
-'reified'=133
-'expect'=134
-'actual'=135
-'null'=145
-'"""'=151
+'..<'=37
+'::'=38
+';;'=39
+'#'=40
+'@'=41
+'?'=46
+'<'=47
+'>'=48
+'<='=49
+'>='=50
+'!='=51
+'!=='=52
+'as?'=53
+'=='=54
+'==='=55
+'\''=56
+'&'=57
+'file'=63
+'field'=64
+'property'=65
+'get'=66
+'set'=67
+'receiver'=68
+'param'=69
+'setparam'=70
+'delegate'=71
+'package'=72
+'import'=73
+'class'=74
+'interface'=75
+'fun'=76
+'object'=77
+'val'=78
+'var'=79
+'typealias'=80
+'constructor'=81
+'by'=82
+'companion'=83
+'init'=84
+'this'=85
+'super'=86
+'typeof'=87
+'where'=88
+'if'=89
+'else'=90
+'when'=91
+'try'=92
+'catch'=93
+'finally'=94
+'for'=95
+'do'=96
+'while'=97
+'throw'=98
+'return'=99
+'continue'=100
+'break'=101
+'as'=102
+'is'=103
+'in'=104
+'out'=107
+'dynamic'=108
+'public'=109
+'private'=110
+'protected'=111
+'internal'=112
+'enum'=113
+'sealed'=114
+'annotation'=115
+'data'=116
+'inner'=117
+'value'=118
+'tailrec'=119
+'operator'=120
+'inline'=121
+'infix'=122
+'external'=123
+'suspend'=124
+'override'=125
+'abstract'=126
+'final'=127
+'open'=128
+'const'=129
+'lateinit'=130
+'vararg'=131
+'noinline'=132
+'crossinline'=133
+'reified'=134
+'expect'=135
+'actual'=136
+'null'=146
+'"""'=152
diff --git a/grammar/src/main/antlr/KotlinParser.g4 b/grammar/src/main/antlr/KotlinParser.g4
index 53356a1f4..a0335df4b 100644
--- a/grammar/src/main/antlr/KotlinParser.g4
+++ b/grammar/src/main/antlr/KotlinParser.g4
@@ -95,7 +95,7 @@ delegationSpecifier
;
constructorInvocation
- : userType valueArguments
+ : userType NL* valueArguments
;
annotatedDelegationSpecifier
@@ -140,7 +140,7 @@ anonymousInitializer
;
companionObject
- : modifiers? COMPANION NL* OBJECT
+ : modifiers? COMPANION NL* DATA? NL* OBJECT
(NL* simpleIdentifier)?
(NL* COLON NL* delegationSpecifiers)?
(NL* classBody)?
@@ -183,7 +183,7 @@ propertyDeclaration
(NL* (multiVariableDeclaration | variableDeclaration))
(NL* typeConstraints)?
(NL* (ASSIGNMENT NL* expression | propertyDelegate))?
- (NL+ SEMICOLON)? NL* (getter? (NL* semi? setter)? | setter? (NL* semi? getter)?)
+ (NL* SEMICOLON)? NL* (getter? (NL* semi? setter)? | setter? (NL* semi? getter)?)
;
propertyDelegate
@@ -408,7 +408,7 @@ infixFunctionCall
;
rangeExpression
- : additiveExpression (RANGE NL* additiveExpression)*
+ : additiveExpression ((RANGE | RANGE_UNTIL) NL* additiveExpression)*
;
additiveExpression
@@ -582,7 +582,9 @@ lambdaParameter
;
anonymousFunction
- : FUN
+ : SUSPEND?
+ NL*
+ FUN
(NL* type NL* DOT)?
NL* parametersWithOptionalType
(NL* COLON NL* type)?
@@ -596,7 +598,7 @@ functionLiteral
;
objectLiteral
- : OBJECT (NL* COLON NL* delegationSpecifiers NL*)? (NL* classBody)?
+ : DATA? NL* OBJECT (NL* COLON NL* delegationSpecifiers NL*)? (NL* classBody)?
;
thisExpression
diff --git a/grammar/testData/diagnostics/Abstract.b.antlrtree.txt b/grammar/testData/diagnostics/Abstract.b.antlrtree.txt
index 63c5da2fb..bdd9b4201 100644
--- a/grammar/testData/diagnostics/Abstract.b.antlrtree.txt
+++ b/grammar/testData/diagnostics/Abstract.b.antlrtree.txt
@@ -1,4 +1,4 @@
-File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
+File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98
packageHeader
PACKAGE("package")
identifier
@@ -170,8 +170,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
modifiers
modifier
@@ -243,8 +242,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
modifiers
modifier
@@ -347,8 +345,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
SET("set")
LPAREN("(")
@@ -496,8 +493,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
SET("set")
LPAREN("(")
@@ -618,8 +614,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
GET("get")
LPAREN("(")
@@ -727,8 +722,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
GET("get")
LPAREN("(")
@@ -882,20 +876,19 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
modifiers
modifier
inheritanceModifier
ABSTRACT("abstract")
GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
semis
NL("\n")
NL("\n")
@@ -980,8 +973,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
GET("get")
LPAREN("(")
@@ -1006,14 +998,14 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
simpleIdentifier
Identifier("i")
- semis
- SEMICOLON(";")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
semis
NL("\n")
NL("\n")
@@ -1072,8 +1064,7 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
modifiers
modifier
@@ -1144,20 +1135,19 @@ File: Abstract.b.kt - 1653c958f5acf2bb6dff2bd874377d98 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
modifiers
modifier
inheritanceModifier
ABSTRACT("abstract")
GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
semis
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/AbstractInAbstractClass.antlrtree.txt b/grammar/testData/diagnostics/AbstractInAbstractClass.antlrtree.txt
index 19a592f56..4514322dc 100644
--- a/grammar/testData/diagnostics/AbstractInAbstractClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/AbstractInAbstractClass.antlrtree.txt
@@ -1,4 +1,4 @@
-File: AbstractInAbstractClass.kt - f330f7abc48344d5e2331c0165649d1d (WITH_ERRORS)
+File: AbstractInAbstractClass.kt - f330f7abc48344d5e2331c0165649d1d
NL("\n")
packageHeader
PACKAGE("package")
@@ -23,1187 +23,1181 @@ File: AbstractInAbstractClass.kt - f330f7abc48344d5e2331c0165649d1d (WITH_ERRORS
classParameters
LPAREN("(")
RPAREN(")")
- LCURL("{")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("g")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- FUN("fun")
- simpleIdentifier
- Identifier("h")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- FUN("fun")
- simpleIdentifier
- Identifier("j")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("i")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("i1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("j")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("i")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("j1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("i")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("k")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("k1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("l")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("f")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("l1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("g")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("n")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("h")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
+ Identifier("j")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("j")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("j1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("l")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("l1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("n")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
- RCURL("}")
- NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/AbstractInClass.antlrtree.txt b/grammar/testData/diagnostics/AbstractInClass.antlrtree.txt
index cdc18d5a6..3c87bdb07 100644
--- a/grammar/testData/diagnostics/AbstractInClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/AbstractInClass.antlrtree.txt
@@ -1,4 +1,4 @@
-File: AbstractInClass.kt - 0b3f5cf31761f3bc15c46f9cb3cf2061 (WITH_ERRORS)
+File: AbstractInClass.kt - 0b3f5cf31761f3bc15c46f9cb3cf2061
NL("\n")
packageHeader
PACKAGE("package")
@@ -19,1208 +19,1201 @@ File: AbstractInClass.kt - 0b3f5cf31761f3bc15c46f9cb3cf2061 (WITH_ERRORS)
classParameters
LPAREN("(")
RPAREN(")")
- LCURL("{")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("f")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("g")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("h")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
+ Identifier("j")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("j")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("j1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("l")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("l1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("n")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("g")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- FUN("fun")
- simpleIdentifier
- Identifier("h")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- FUN("fun")
- simpleIdentifier
- Identifier("j")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("i")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("i1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("j")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("i")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("j1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("i")
- semis
- SEMICOLON(";")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("k")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("k1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("l")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("l1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("n")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/AbstractInTrait.antlrtree.txt b/grammar/testData/diagnostics/AbstractInTrait.antlrtree.txt
index 4faeadb01..a77283d6a 100644
--- a/grammar/testData/diagnostics/AbstractInTrait.antlrtree.txt
+++ b/grammar/testData/diagnostics/AbstractInTrait.antlrtree.txt
@@ -1,4 +1,4 @@
-File: AbstractInTrait.kt - 9339caa9e5d8c7bab0facd97d7d2767d (WITH_ERRORS)
+File: AbstractInTrait.kt - 9339caa9e5d8c7bab0facd97d7d2767d
NL("\n")
packageHeader
PACKAGE("package")
@@ -15,1208 +15,1201 @@ File: AbstractInTrait.kt - 9339caa9e5d8c7bab0facd97d7d2767d (WITH_ERRORS)
INTERFACE("interface")
simpleIdentifier
Identifier("MyTrait")
- LCURL("{")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("b3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("f")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- visibilityModifier
- PRIVATE("private")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("g")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
+ Identifier("h")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
+ Identifier("j")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("j")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("j1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("l")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("l1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ SEMICOLON(";")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("n")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ GET("get")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("c3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- statement
- assignment
- directlyAssignableExpression
- simpleIdentifier
- FIELD("field")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("v")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("e3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("g")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- FUN("fun")
- simpleIdentifier
- Identifier("h")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- FUN("fun")
- simpleIdentifier
- Identifier("j")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("i")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("i1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("j")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("i")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("j1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("i")
- semis
- SEMICOLON(";")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("k")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("k1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("l")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("l1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("0")
- semi
- SEMICOLON(";")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- topLevelObject
- declaration
- topLevelObject
- declaration
- ABSTRACT("abstract")
- SET("set")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("n")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- getter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- GET("get")
- setter
- modifiers
- modifier
- inheritanceModifier
- ABSTRACT("abstract")
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/DefaultValueForParameterInFunctionType.antlrtree.txt b/grammar/testData/diagnostics/DefaultValueForParameterInFunctionType.antlrtree.txt
index b0c6aec0f..1b1cd5382 100644
--- a/grammar/testData/diagnostics/DefaultValueForParameterInFunctionType.antlrtree.txt
+++ b/grammar/testData/diagnostics/DefaultValueForParameterInFunctionType.antlrtree.txt
@@ -1,4 +1,4 @@
-File: DefaultValueForParameterInFunctionType.kt - bda33ae14be92f30c9a2a36525405322 (WITH_ERRORS)
+File: DefaultValueForParameterInFunctionType.kt - fd66b4d7f802347ea5ebfbf67133cfc3 (WITH_ERRORS)
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.antlrtree.txt b/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.antlrtree.txt
index 9fa878cc4..a5dca1031 100644
--- a/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.antlrtree.txt
+++ b/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.antlrtree.txt
@@ -1,4 +1,4 @@
-File: FreeFunctionCalledAsExtension.kt - 59cd97a7b254bcf72776977e8500487e
+File: FreeFunctionCalledAsExtension.kt - b22c92c2d9fbd292bc12c2de13f10269
packageHeader
importList
topLevelObject
@@ -111,6 +111,21 @@ File: FreeFunctionCalledAsExtension.kt - 59cd97a7b254bcf72776977e8500487e
RCURL("}")
semis
NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("AliasedEFT")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ExtensionFunctionType")
+ semis
+ NL("\n")
NL("\n")
topLevelObject
declaration
@@ -135,7 +150,7 @@ File: FreeFunctionCalledAsExtension.kt - 59cd97a7b254bcf72776977e8500487e
userType
simpleUserType
simpleIdentifier
- Identifier("ExtensionFunctionType")
+ Identifier("AliasedEFT")
typeReference
userType
simpleUserType
diff --git a/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.reversed.antlrtree.txt b/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.reversed.antlrtree.txt
new file mode 100644
index 000000000..eabd268e4
--- /dev/null
+++ b/grammar/testData/diagnostics/FreeFunctionCalledAsExtension.reversed.antlrtree.txt
@@ -0,0 +1,204 @@
+File: FreeFunctionCalledAsExtension.reversed.kt - b22c92c2d9fbd292bc12c2de13f10269
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("A")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("AliasedEFT")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ExtensionFunctionType")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeModifiers
+ typeModifier
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("AliasedEFT")
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/FunctionCalleeExpressions.antlrtree.txt b/grammar/testData/diagnostics/FunctionCalleeExpressions.antlrtree.txt
index edb9f64a0..a7c94b688 100644
--- a/grammar/testData/diagnostics/FunctionCalleeExpressions.antlrtree.txt
+++ b/grammar/testData/diagnostics/FunctionCalleeExpressions.antlrtree.txt
@@ -1,5 +1,4 @@
-File: FunctionCalleeExpressions.kt - 919f872f45ffc5fa848799fbda59438a (WITH_ERRORS)
- NL("\n")
+File: FunctionCalleeExpressions.kt - d61ea8cba7585448c1096b67ca93fa8d (WITH_ERRORS)
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/IncDec.antlrtree.txt b/grammar/testData/diagnostics/IncDec.antlrtree.txt
index fb31ed837..76472448b 100644
--- a/grammar/testData/diagnostics/IncDec.antlrtree.txt
+++ b/grammar/testData/diagnostics/IncDec.antlrtree.txt
@@ -1,4 +1,5 @@
-File: IncDec.kt - dcbdf82a8bf7f6eedb83fac025c194c4
+File: IncDec.kt - fe1b27dcd36fbef2e75d8f916994b59f
+ NL("\n")
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/IncDecOperatorsInExpectClass.antlrtree.txt b/grammar/testData/diagnostics/IncDecOperatorsInExpectClass.antlrtree.txt
index fa8eefd45..efed8b777 100644
--- a/grammar/testData/diagnostics/IncDecOperatorsInExpectClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/IncDecOperatorsInExpectClass.antlrtree.txt
@@ -1,4 +1,6 @@
-File: IncDecOperatorsInExpectClass.kt - 86ed0786f34169fa02cca24ae5e4970f
+File: IncDecOperatorsInExpectClass.kt - e344413571d82384a6a0eafbf202f52a
+ NL("\n")
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/OverridenSetterVisibility.antlrtree.txt b/grammar/testData/diagnostics/OverridenSetterVisibility.antlrtree.txt
index f1a069350..28baad6ca 100644
--- a/grammar/testData/diagnostics/OverridenSetterVisibility.antlrtree.txt
+++ b/grammar/testData/diagnostics/OverridenSetterVisibility.antlrtree.txt
@@ -1,5 +1,4 @@
-File: OverridenSetterVisibility.kt - 2b884e516380a5727767ca3f905c53d7
- NL("\n")
+File: OverridenSetterVisibility.kt - 12441df8a65d2fe172720cd2d27bc894
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/ProjectionsInSupertypes.antlrtree.txt b/grammar/testData/diagnostics/ProjectionsInSupertypes.antlrtree.txt
index 1a2245fcb..364e30460 100644
--- a/grammar/testData/diagnostics/ProjectionsInSupertypes.antlrtree.txt
+++ b/grammar/testData/diagnostics/ProjectionsInSupertypes.antlrtree.txt
@@ -1,4 +1,4 @@
-File: ProjectionsInSupertypes.kt - 76ab4ed8a3b89232c7304883f212469b (WITH_ERRORS)
+File: ProjectionsInSupertypes.kt - 8c0a673d87d245615e7159c0689928dc (WITH_ERRORS)
NL("\n")
packageHeader
importList
@@ -155,4 +155,49 @@ File: ProjectionsInSupertypes.kt - 76ab4ed8a3b89232c7304883f212469b (WITH_ERRORS
LCURL("{")
classMemberDeclarations
RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ RCURL("}")
EOF("")
diff --git a/grammar/testData/diagnostics/PropertyInitializers.antlrtree.txt b/grammar/testData/diagnostics/PropertyInitializers.antlrtree.txt
index 1bddf4414..da4f146cd 100644
--- a/grammar/testData/diagnostics/PropertyInitializers.antlrtree.txt
+++ b/grammar/testData/diagnostics/PropertyInitializers.antlrtree.txt
@@ -1,4 +1,5 @@
-File: PropertyInitializers.kt - 824ed65ca447d967a3b0c8e011a963ba
+File: PropertyInitializers.kt - 0eb8878e3174e8a09885692dfa65c84b
+ NL("\n")
NL("\n")
packageHeader
importList
@@ -158,5 +159,99 @@ File: PropertyInitializers.kt - 824ed65ca447d967a3b0c8e011a963ba
Identifier("b")
semis
NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("map")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Map")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("mapOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ simpleIdentifier
+ Identifier("to")
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("hello")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/SafeCallNonNullReceiver.antlrtree.txt b/grammar/testData/diagnostics/SafeCallNonNullReceiver.antlrtree.txt
index e5a14f3c5..0bc047bbd 100644
--- a/grammar/testData/diagnostics/SafeCallNonNullReceiver.antlrtree.txt
+++ b/grammar/testData/diagnostics/SafeCallNonNullReceiver.antlrtree.txt
@@ -1,5 +1,4 @@
-File: SafeCallNonNullReceiver.kt - 07ee7458295892d93eaeb988c67ebb76
- NL("\n")
+File: SafeCallNonNullReceiver.kt - 098b8def152118de8eed33a40088e7c2
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/SingleUnderscoreUnsupported.antlrtree.txt b/grammar/testData/diagnostics/SingleUnderscoreUnsupported.antlrtree.txt
deleted file mode 100644
index 06c819e15..000000000
--- a/grammar/testData/diagnostics/SingleUnderscoreUnsupported.antlrtree.txt
+++ /dev/null
@@ -1,813 +0,0 @@
-File: SingleUnderscoreUnsupported.kt - 514a97d37690826481bf3c02718321f6
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- DATA("data")
- CLASS("class")
- simpleIdentifier
- Identifier("A")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("y")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("foo")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("a")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Array")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- RANGLE(">")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- declaration
- propertyDeclaration
- VAL("val")
- multiVariableDeclaration
- LPAREN("(")
- variableDeclaration
- simpleIdentifier
- Identifier("_")
- COMMA(",")
- variableDeclaration
- simpleIdentifier
- Identifier("y")
- RPAREN(")")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("2")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("y")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("hashCode")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("q1")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- NL("\n")
- lambdaParameters
- lambdaParameter
- variableDeclaration
- simpleIdentifier
- Identifier("_")
- COMMA(",")
- lambdaParameter
- variableDeclaration
- simpleIdentifier
- Identifier("s")
- ARROW("->")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("s")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("hashCode")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("q1")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("q2")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- anonymousFunction
- FUN("fun")
- parametersWithOptionalType
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("_")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("s")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("s")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("hashCode")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("q2")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("q3")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- NL("\n")
- lambdaParameters
- lambdaParameter
- multiVariableDeclaration
- LPAREN("(")
- variableDeclaration
- simpleIdentifier
- Identifier("_")
- COMMA(",")
- variableDeclaration
- simpleIdentifier
- Identifier("y")
- RPAREN(")")
- ARROW("->")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("y")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("hashCode")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("q3")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("2")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- RPAREN(")")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- loopStatement
- forStatement
- FOR("for")
- LPAREN("(")
- multiVariableDeclaration
- LPAREN("(")
- variableDeclaration
- simpleIdentifier
- Identifier("_")
- COMMA(",")
- variableDeclaration
- simpleIdentifier
- Identifier("z")
- RPAREN(")")
- IN("in")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- RPAREN(")")
- controlStructureBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("z")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("hashCode")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/StringTemplates.antlrtree.txt b/grammar/testData/diagnostics/StringTemplates.antlrtree.txt
index 3a89fff72..8558b75b7 100644
--- a/grammar/testData/diagnostics/StringTemplates.antlrtree.txt
+++ b/grammar/testData/diagnostics/StringTemplates.antlrtree.txt
@@ -299,8 +299,8 @@ File: StringTemplates.kt - f256d93bb673431b85ca5564f0101234 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("3")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
expression
diff --git a/grammar/testData/diagnostics/TraitWithConstructor.antlrtree.txt b/grammar/testData/diagnostics/TraitWithConstructor.antlrtree.txt
index c99dcbdf1..f6def4b3f 100644
--- a/grammar/testData/diagnostics/TraitWithConstructor.antlrtree.txt
+++ b/grammar/testData/diagnostics/TraitWithConstructor.antlrtree.txt
@@ -1,4 +1,5 @@
-File: TraitWithConstructor.kt - c51148a44977a13d35953769ecdd1327 (WITH_ERRORS)
+File: TraitWithConstructor.kt - 4a4019d6310d20c9622d148c57891712 (WITH_ERRORS)
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/TypeInference.antlrtree.txt b/grammar/testData/diagnostics/TypeInference.antlrtree.txt
index 49eb7afbe..02ec4c0b3 100644
--- a/grammar/testData/diagnostics/TypeInference.antlrtree.txt
+++ b/grammar/testData/diagnostics/TypeInference.antlrtree.txt
@@ -188,8 +188,8 @@ File: TypeInference.kt - 6a7460c91daaee5d18fa2597a125d33d
valueArguments
LPAREN("(")
RPAREN(")")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
declaration
@@ -393,8 +393,8 @@ File: TypeInference.kt - 6a7460c91daaee5d18fa2597a125d33d
valueArguments
LPAREN("(")
RPAREN(")")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
declaration
diff --git a/grammar/testData/diagnostics/TypeMismatchOnOverrideWithSyntaxErrors.antlrtree.txt b/grammar/testData/diagnostics/TypeMismatchOnOverrideWithSyntaxErrors.antlrtree.txt
index 7eb1fe6c7..7ec13a39b 100644
--- a/grammar/testData/diagnostics/TypeMismatchOnOverrideWithSyntaxErrors.antlrtree.txt
+++ b/grammar/testData/diagnostics/TypeMismatchOnOverrideWithSyntaxErrors.antlrtree.txt
@@ -34,9 +34,8 @@ File: TypeMismatchOnOverrideWithSyntaxErrors.kt - 5562e52794b9edc95c27f33c8e2b9d
simpleUserType
simpleIdentifier
Identifier("Int")
- semis
- SEMICOLON(";")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
classMemberDeclaration
declaration
functionDeclaration
@@ -153,21 +152,8 @@ File: TypeMismatchOnOverrideWithSyntaxErrors.kt - 5562e52794b9edc95c27f33c8e2b9d
functionBody
ASSIGNMENT("=")
QUEST_NO_WS("?")
- NL("\n")
- RCURL("}")
- NL("\n")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/UnusedParametersVersion10.antlrtree.txt b/grammar/testData/diagnostics/UnusedParametersVersion10.antlrtree.txt
deleted file mode 100644
index d44ba8d1c..000000000
--- a/grammar/testData/diagnostics/UnusedParametersVersion10.antlrtree.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-File: UnusedParametersVersion10.kt - 47c71665640c5109df5a65ecad97c4b8
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("x")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("let")
- postfixUnarySuffix
- callSuffix
- annotatedLambda
- lambdaLiteral
- LCURL("{")
- lambdaParameters
- lambdaParameter
- variableDeclaration
- simpleIdentifier
- Identifier("arg")
- ARROW("->")
- statements
- RCURL("}")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/UnusedVariables.antlrtree.txt b/grammar/testData/diagnostics/UnusedVariables.antlrtree.txt
index e3818485f..072d829f9 100644
--- a/grammar/testData/diagnostics/UnusedVariables.antlrtree.txt
+++ b/grammar/testData/diagnostics/UnusedVariables.antlrtree.txt
@@ -951,8 +951,8 @@ File: UnusedVariables.kt - 7594c9f59ad6c80aace24246580f65e8
primaryExpression
literalConstant
IntegerLiteral("1")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
assignment
diff --git a/grammar/testData/diagnostics/abstractClassReference.antlrtree.txt b/grammar/testData/diagnostics/abstractClassReference.antlrtree.txt
new file mode 100644
index 000000000..eba6e2071
--- /dev/null
+++ b/grammar/testData/diagnostics/abstractClassReference.antlrtree.txt
@@ -0,0 +1,124 @@
+File: abstractClassReference.kt - 90b0f6d0566f73c2625b5554932d85bb
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("AbstractClass")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("args")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("abstractClass")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("AbstractClass")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("abstractClass")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/ambiguityNamedVararg.antlrtree.txt b/grammar/testData/diagnostics/ambiguityNamedVararg.antlrtree.txt
new file mode 100644
index 000000000..80ca986de
--- /dev/null
+++ b/grammar/testData/diagnostics/ambiguityNamedVararg.antlrtree.txt
@@ -0,0 +1,384 @@
+File: ambiguityNamedVararg.kt - 20033c5afb70edb51607498caeee8f5e
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("swapVararg")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ VARARG("vararg")
+ parameter
+ simpleIdentifier
+ Identifier("namedVararg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("named")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("swapVararg")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("named")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ VARARG("vararg")
+ parameter
+ simpleIdentifier
+ Identifier("namedVararg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("swapVararg")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ simpleIdentifier
+ Identifier("named")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ COMMA(",")
+ valueArgument
+ simpleIdentifier
+ Identifier("namedVararg")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("arrayOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("1")
+ QUOTE_CLOSE(""")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("2")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ COMMA(",")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("swap")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("string")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("int")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("swap")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("int")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("string")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("y")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("swap")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ simpleIdentifier
+ Identifier("int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ COMMA(",")
+ valueArgument
+ simpleIdentifier
+ Identifier("string")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("2")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotationArgumentWithAliasedArrayType.antlrtree.txt b/grammar/testData/diagnostics/annotationArgumentWithAliasedArrayType.antlrtree.txt
new file mode 100644
index 000000000..1b966dc2f
--- /dev/null
+++ b/grammar/testData/diagnostics/annotationArgumentWithAliasedArrayType.antlrtree.txt
@@ -0,0 +1,53 @@
+File: annotationArgumentWithAliasedArrayType.kt - 15a1dff7f46c7acd43a945e4790cc7dd
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("Aliased")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Tag")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ modifiers
+ modifier
+ parameterModifier
+ VARARG("vararg")
+ VAL("val")
+ simpleIdentifier
+ Identifier("tags")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Aliased")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/AnnotatedConstructorParams.antlrtree.txt b/grammar/testData/diagnostics/annotations/AnnotatedConstructorParams.antlrtree.txt
index 4f713d0d5..06b32ed53 100644
--- a/grammar/testData/diagnostics/annotations/AnnotatedConstructorParams.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/AnnotatedConstructorParams.antlrtree.txt
@@ -96,9 +96,8 @@ File: AnnotatedConstructorParams.kt - ba8c91923e3c546505a94e3e3687c3a5
lineStringLiteral
QUOTE_OPEN(""")
QUOTE_CLOSE(""")
- semis
- SEMICOLON(";")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
topLevelObject
declaration
functionDeclaration
diff --git a/grammar/testData/diagnostics/annotations/AnnotatedNullableTypes.antlrtree.txt b/grammar/testData/diagnostics/annotations/AnnotatedNullableTypes.antlrtree.txt
new file mode 100644
index 000000000..bd61a62d9
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/AnnotatedNullableTypes.antlrtree.txt
@@ -0,0 +1,272 @@
+File: AnnotatedNullableTypes.kt - e90fcfa239f1d5fa8075e1bba502ed17
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ann")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeModifiers
+ typeModifier
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ nullableType
+ parenthesizedType
+ LPAREN("(")
+ type
+ typeModifiers
+ typeModifier
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("TYPE")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("TypeAnn")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeModifiers
+ typeModifier
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("TypeAnn")
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ nullableType
+ parenthesizedType
+ LPAREN("(")
+ type
+ typeModifiers
+ typeModifier
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("TypeAnn")
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/AnnotationForClassTypeParameter.antlrtree.txt b/grammar/testData/diagnostics/annotations/AnnotationForClassTypeParameter.antlrtree.txt
deleted file mode 100644
index 2e692081c..000000000
--- a/grammar/testData/diagnostics/annotations/AnnotationForClassTypeParameter.antlrtree.txt
+++ /dev/null
@@ -1,489 +0,0 @@
-File: AnnotationForClassTypeParameter.kt - 361a13a17e7c654176682ad45e6da328
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("A1")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("A2")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("some")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("12")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("TopLevelClass")
- typeParameters
- LANGLE("<")
- typeParameter
- typeParameterModifiers
- typeParameterModifier
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A1")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- RPAREN(")")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A1")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("12")
- RPAREN(")")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("Test")
- QUOTE_CLOSE(""")
- RPAREN(")")
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("InnerClass")
- typeParameters
- LANGLE("<")
- typeParameter
- typeParameterModifiers
- typeParameterModifier
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A1")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- RPAREN(")")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A1")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("12")
- RPAREN(")")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("Test")
- QUOTE_CLOSE(""")
- RPAREN(")")
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("InFun")
- typeParameters
- LANGLE("<")
- typeParameter
- typeParameterModifiers
- typeParameterModifier
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A1")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- RPAREN(")")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A1")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("12")
- RPAREN(")")
- typeParameterModifier
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("Test")
- QUOTE_CLOSE(""")
- RPAREN(")")
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/ConstructorCall.antlrtree.txt b/grammar/testData/diagnostics/annotations/ConstructorCall.antlrtree.txt
index a44ef0cb4..6d0e1e1c1 100644
--- a/grammar/testData/diagnostics/annotations/ConstructorCall.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/ConstructorCall.antlrtree.txt
@@ -1,4 +1,5 @@
-File: ConstructorCall.kt - 8b2460d7fd49bfcd5820bdebc2f81884
+File: ConstructorCall.kt - 951d1bb544d096a2b6a3f09f9e79f8a9
+ NL("\n")
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/annotations/DanglingMixed.antlrtree.txt b/grammar/testData/diagnostics/annotations/DanglingMixed.antlrtree.txt
index cf788d92b..f7e7ceaef 100644
--- a/grammar/testData/diagnostics/annotations/DanglingMixed.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/DanglingMixed.antlrtree.txt
@@ -1,4 +1,5 @@
-File: DanglingMixed.kt - 438ae5d82b66e9e2e39b0d7ac549246c (WITH_ERRORS)
+File: DanglingMixed.kt - 44a6b9833afe762d1a000705cd927e38 (WITH_ERRORS)
+ NL("\n")
packageHeader
importList
topLevelObject
@@ -25,6 +26,17 @@ File: DanglingMixed.kt - 438ae5d82b66e9e2e39b0d7ac549246c (WITH_ERRORS)
Identifier("Ann2")
semis
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ RCURL("}")
+ semis
NL("\n")
topLevelObject
declaration
@@ -96,6 +108,86 @@ File: DanglingMixed.kt - 438ae5d82b66e9e2e39b0d7ac549246c (WITH_ERRORS)
NL("\n")
RCURL("}")
NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ LCURL("{")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ topLevelObject
+ declaration
+ AT_PRE_WS(" @")
+ Identifier("Ann0")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ topLevelObject
+ declaration
+ AT_PRE_WS(" @")
+ Identifier("Ann")
+ topLevelObject
+ declaration
+ topLevelObject
+ declaration
+ AT_PRE_WS(" @")
+ Identifier("Ann3")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ topLevelObject
+ declaration
+ AT_PRE_WS(" @")
+ Identifier("Ann2")
+ LPAREN("(")
+ IntegerLiteral("1")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ topLevelObject
+ declaration
+ AT_PRE_WS(" @")
+ Identifier("Ann4")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
RCURL("}")
NL("\n")
topLevelObject
diff --git a/grammar/testData/diagnostics/annotations/InheritingAnnotationClass.antlrtree.txt b/grammar/testData/diagnostics/annotations/InheritingAnnotationClass.antlrtree.txt
new file mode 100644
index 000000000..847cbc76e
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/InheritingAnnotationClass.antlrtree.txt
@@ -0,0 +1,33 @@
+File: InheritingAnnotationClass.kt - 7219c20efd0ad09e232add96375816a0
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("AnnKlass")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Child")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("AnnKlass")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/JvmSerializableLambdaAnnotation.antlrtree.txt b/grammar/testData/diagnostics/annotations/JvmSerializableLambdaAnnotation.antlrtree.txt
new file mode 100644
index 000000000..b65fcf483
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/JvmSerializableLambdaAnnotation.antlrtree.txt
@@ -0,0 +1,479 @@
+File: JvmSerializableLambdaAnnotation.kt - b2f91e00139a87a9965a6de050dbcb52
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("jvm")
+ DOT(".")
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("good1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("good2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("good3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ DOT(".")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("good4")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ RPAREN(")")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RSQUARE("]")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bad1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bad2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ RCURL("}")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bad3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bad4")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmSerializableLambda")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RSQUARE("]")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/MutuallyRecursivelyAnnotatedGlobalFunction.reversed.antlrtree.txt b/grammar/testData/diagnostics/annotations/MutuallyRecursivelyAnnotatedGlobalFunction.reversed.antlrtree.txt
new file mode 100644
index 000000000..3eb601d88
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/MutuallyRecursivelyAnnotatedGlobalFunction.reversed.antlrtree.txt
@@ -0,0 +1,164 @@
+File: MutuallyRecursivelyAnnotatedGlobalFunction.reversed.kt - 2aef41bb726038411fab5712042a8b72
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("ann")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ann")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ann")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/annotationsOnDataClassCopy.antlrtree.txt b/grammar/testData/diagnostics/annotations/annotationsOnDataClassCopy.antlrtree.txt
new file mode 100644
index 000000000..b6b88cc11
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/annotationsOnDataClassCopy.antlrtree.txt
@@ -0,0 +1,325 @@
+File: annotationsOnDataClassCopy.kt - 497b4da7f677cbfab152010a4c309607
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("NoTarget")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("VALUE_PARAMETER")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Param")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("PROPERTY")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Prop")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("PROPERTY")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("VALUE_PARAMETER")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Both")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("NoTarget")
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Param")
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Prop")
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Both")
+ VAL("val")
+ simpleIdentifier
+ Identifier("p1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ classParameter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ PARAM("param")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("NoTarget")
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ PARAM("param")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Both")
+ VAL("val")
+ simpleIdentifier
+ Identifier("p2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ classParameter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ PROPERTY("property")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("NoTarget")
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ PROPERTY("property")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Both")
+ VAL("val")
+ simpleIdentifier
+ Identifier("p3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ COMMA(",")
+ RPAREN(")")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/deprecatedRepeatable.antlrtree.txt b/grammar/testData/diagnostics/annotations/deprecatedRepeatable.antlrtree.txt
deleted file mode 100644
index 6845c8d50..000000000
--- a/grammar/testData/diagnostics/annotations/deprecatedRepeatable.antlrtree.txt
+++ /dev/null
@@ -1,196 +0,0 @@
-File: deprecatedRepeatable.kt - 4324cb3761bdad9953d7bc01df56f23e
- NL("\n")
- NL("\n")
- packageHeader
- importList
- importHeader
- IMPORT("import")
- identifier
- simpleIdentifier
- Identifier("java")
- DOT(".")
- simpleIdentifier
- Identifier("lang")
- DOT(".")
- simpleIdentifier
- ANNOTATION("annotation")
- DOT(".")
- simpleIdentifier
- Identifier("Repeatable")
- semi
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("java")
- DOT(".")
- simpleUserType
- simpleIdentifier
- Identifier("lang")
- DOT(".")
- simpleUserType
- simpleIdentifier
- ANNOTATION("annotation")
- DOT(".")
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("Annotations")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("class")
- RPAREN(")")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("RepAnn")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("OtherAnnotations")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("class")
- RPAREN(")")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("OtherAnn")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("Annotations")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- modifiers
- modifier
- parameterModifier
- VARARG("vararg")
- VAL("val")
- simpleIdentifier
- VALUE("value")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("RepAnn")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("OtherAnnotations")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- modifiers
- modifier
- parameterModifier
- VARARG("vararg")
- VAL("val")
- simpleIdentifier
- VALUE("value")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("OtherAnn")
- RPAREN(")")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/javaAnnotationAndJavaClassWithIt.foo_AnotherTarget.antlrtree.txt b/grammar/testData/diagnostics/annotations/javaAnnotationAndJavaClassWithIt.foo_AnotherTarget.antlrtree.txt
new file mode 100644
index 000000000..adb883aa6
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/javaAnnotationAndJavaClassWithIt.foo_AnotherTarget.antlrtree.txt
@@ -0,0 +1,49 @@
+File: javaAnnotationAndJavaClassWithIt.foo_AnotherTarget.kt - 0dc112d7cc06b798746d148a1f4ae69c
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ semi
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("AnotherTarget")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("hello")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/javaRepeatable.RepeatableUse.antlrtree.txt b/grammar/testData/diagnostics/annotations/javaRepeatable.RepeatableUse.antlrtree.txt
deleted file mode 100644
index db39d9c23..000000000
--- a/grammar/testData/diagnostics/annotations/javaRepeatable.RepeatableUse.antlrtree.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-File: javaRepeatable.RepeatableUse.kt - 0afc2eba4b633ad7122928e63f5400a9
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("RepeatableAnnotation")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("RepeatableAnnotation")
- CLASS("class")
- simpleIdentifier
- Identifier("My")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/javaRepeatableRetention.RepeatableUse.antlrtree.txt b/grammar/testData/diagnostics/annotations/javaRepeatableRetention.RepeatableUse.antlrtree.txt
deleted file mode 100644
index 5f55272cc..000000000
--- a/grammar/testData/diagnostics/annotations/javaRepeatableRetention.RepeatableUse.antlrtree.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-File: javaRepeatableRetention.RepeatableUse.kt - 0afc2eba4b633ad7122928e63f5400a9
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("RepeatableAnnotation")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("RepeatableAnnotation")
- CLASS("class")
- simpleIdentifier
- Identifier("My")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/javaUnrepeatable.UnrepeatableUse.antlrtree.txt b/grammar/testData/diagnostics/annotations/javaUnrepeatable.UnrepeatableUse.antlrtree.txt
deleted file mode 100644
index 444566e0c..000000000
--- a/grammar/testData/diagnostics/annotations/javaUnrepeatable.UnrepeatableUse.antlrtree.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-File: javaUnrepeatable.UnrepeatableUse.kt - ce4e14e527d5a8209405107b2bff329b
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("UnrepeatableAnnotation")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("UnrepeatableAnnotation")
- CLASS("class")
- simpleIdentifier
- Identifier("My")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/options/javaKotlinTargetRetentionWithExplicitImport.antlrtree.txt b/grammar/testData/diagnostics/annotations/options/javaKotlinTargetRetentionWithExplicitImport.antlrtree.txt
new file mode 100644
index 000000000..95317bf6f
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/options/javaKotlinTargetRetentionWithExplicitImport.antlrtree.txt
@@ -0,0 +1,84 @@
+File: javaKotlinTargetRetentionWithExplicitImport.kt - 1e88b8a0f2629de0403bd71ebe6c515f
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("java")
+ DOT(".")
+ simpleIdentifier
+ Identifier("lang")
+ DOT(".")
+ simpleIdentifier
+ ANNOTATION("annotation")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Target")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("java")
+ DOT(".")
+ simpleIdentifier
+ Identifier("lang")
+ DOT(".")
+ simpleIdentifier
+ ANNOTATION("annotation")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ElementType")
+ DOT(".")
+ simpleIdentifier
+ Identifier("PACKAGE")
+ semi
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PACKAGE")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("my")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/options/repeatable.antlrtree.txt b/grammar/testData/diagnostics/annotations/options/repeatable.antlrtree.txt
deleted file mode 100644
index ada24df27..000000000
--- a/grammar/testData/diagnostics/annotations/options/repeatable.antlrtree.txt
+++ /dev/null
@@ -1,733 +0,0 @@
-File: repeatable.kt - 4e906a5546c8b206f87487e2e7a5d86d
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- NL("\n")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("repann")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Retention")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("AnnotationRetention")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("SOURCE")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- NL("\n")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("repann1")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Retention")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("AnnotationRetention")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("SOURCE")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- NL("\n")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("repann2")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Boolean")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Retention")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("AnnotationRetention")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("BINARY")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- NL("\n")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("binrepann")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Target")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("AnnotationTarget")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("EXPRESSION")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Retention")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("AnnotationRetention")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("SOURCE")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Repeatable")
- NL("\n")
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("repexpr")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann")
- CLASS("class")
- simpleIdentifier
- Identifier("DoubleAnnotated")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann1")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann1")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("2")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann1")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- RPAREN(")")
- CLASS("class")
- simpleIdentifier
- Identifier("TripleAnnotated")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- BooleanLiteral("true")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- BooleanLiteral("false")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- BooleanLiteral("false")
- RPAREN(")")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann2")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- BooleanLiteral("true")
- RPAREN(")")
- CLASS("class")
- simpleIdentifier
- Identifier("FourTimesAnnotated")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("binrepann")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("binrepann")
- CLASS("class")
- simpleIdentifier
- Identifier("BinaryAnnotated")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann")
- FUN("fun")
- simpleIdentifier
- Identifier("foo")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameterModifiers
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repann")
- parameter
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repexpr")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("repexpr")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- jumpExpression
- RETURN("return")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("x")
- semis
- NL("\n")
- RCURL("}")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/divide.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/divide.antlrtree.txt
index 91652794d..108c8c19c 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/divide.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/divide.antlrtree.txt
@@ -1,5 +1,4 @@
-File: divide.kt - 2fae9823d822eceb8b6d3eb86e661dd8
- NL("\n")
+File: divide.kt - c098f365669a9759d5c56ea0005dd975
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/intrincics.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/intrincics.antlrtree.txt
index b4e853b3b..f3df18e6a 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/intrincics.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/intrincics.antlrtree.txt
@@ -1,5 +1,4 @@
-File: intrincics.kt - 23a75d74013b8964d5f94e5a7a63e66f
- NL("\n")
+File: intrincics.kt - 5d0cb42444951b9b74dd5dc0c535fa76
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/long.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/long.antlrtree.txt
index f5ef7439c..60ce7604b 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/long.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/long.antlrtree.txt
@@ -1,5 +1,4 @@
-File: long.kt - d2e94634d31fb68678aac033b5e11575
- NL("\n")
+File: long.kt - aebd06e0d2e0f36b37241d2f2a0fd5ca
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueByte.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueByte.antlrtree.txt
index ae730f25a..c7d34c46a 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueByte.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueByte.antlrtree.txt
@@ -1,5 +1,4 @@
-File: maxValueByte.kt - fe3605cc9785bdd6ebdc8c2c9a601a43
- NL("\n")
+File: maxValueByte.kt - 853eb189d2ab5d077dd9b734eeb9ba94
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueInt.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueInt.antlrtree.txt
index 39f726ebc..0ab4f8d0b 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueInt.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/maxValueInt.antlrtree.txt
@@ -1,5 +1,4 @@
-File: maxValueInt.kt - fed6788bd028887098938720e4c1bbfb
- NL("\n")
+File: maxValueInt.kt - 89f439643e993ead3e51e0e279b0c8fa
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/miltiply.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/miltiply.antlrtree.txt
index 90ce87f71..c075ff0de 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/miltiply.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/miltiply.antlrtree.txt
@@ -1,5 +1,4 @@
-File: miltiply.kt - f77f6daea621ff58b9ead1f94572f810
- NL("\n")
+File: miltiply.kt - ee0e04bd34d79e288a41be9c5a237987
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/minus.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/minus.antlrtree.txt
index 57b52bebf..841e5252b 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/minus.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/minus.antlrtree.txt
@@ -1,5 +1,4 @@
-File: minus.kt - e93576e5f108394b725b09d36b1baeda
- NL("\n")
+File: minus.kt - fe1aa833945bde645fa15d4e7d946acf
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/mod.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/mod.antlrtree.txt
index 766597acc..77f47ffbc 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/mod.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/mod.antlrtree.txt
@@ -1,5 +1,4 @@
-File: mod.kt - c27ac8e53612dfb992255cb197b43122
- NL("\n")
+File: mod.kt - 76fe753c35e16f2da9b56554df69f643
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/plus.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/plus.antlrtree.txt
index 2af7ddd68..55e4475c8 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/plus.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/plus.antlrtree.txt
@@ -1,5 +1,4 @@
-File: plus.kt - ab1669a833e7bfffe53c548bd3c3e28f
- NL("\n")
+File: plus.kt - 2f993684e9c7f56d3f112ad64d8587d2
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/stringTemplate.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/stringTemplate.antlrtree.txt
index 1950df8c6..6a0616a1f 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/stringTemplate.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/stringTemplate.antlrtree.txt
@@ -1,4 +1,5 @@
-File: stringTemplate.kt - 7253542f06aa02a3e5347d3127804b21
+File: stringTemplate.kt - fc0b08412418ac7ba3d39f2867dbac69
+ NL("\n")
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/parameters/expressions/strings.antlrtree.txt b/grammar/testData/diagnostics/annotations/parameters/expressions/strings.antlrtree.txt
index 076a0d79b..84ab2aa38 100644
--- a/grammar/testData/diagnostics/annotations/parameters/expressions/strings.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/parameters/expressions/strings.antlrtree.txt
@@ -1,4 +1,5 @@
-File: strings.kt - 0f951f87bbf84d0182dc46633d75d696
+File: strings.kt - 5ad481d4c4b9c1129f7f795df938abec
+ NL("\n")
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/annotations/rendering/typeMismatchOnOverrideJavaNullable.ll.k.antlrtree.txt b/grammar/testData/diagnostics/annotations/rendering/typeMismatchOnOverrideJavaNullable.ll.k.antlrtree.txt
new file mode 100644
index 000000000..1997f499a
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/rendering/typeMismatchOnOverrideJavaNullable.ll.k.antlrtree.txt
@@ -0,0 +1,372 @@
+File: typeMismatchOnOverrideJavaNullable.ll.k.kt - de8bf95ad64b58548779d8882de699c8
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("org")
+ DOT(".")
+ simpleIdentifier
+ Identifier("jetbrains")
+ DOT(".")
+ simpleIdentifier
+ Identifier("annotations")
+ DOT(".")
+ simpleIdentifier
+ Identifier("NotNull")
+ semi
+ SEMICOLON(";")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("FUNCTION")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("TYPE")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("CLASS")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("PROPERTY")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("VALUE_PARAMETER")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("An")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("An")
+ NL("\n")
+ modifier
+ visibilityModifier
+ PUBLIC("public")
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("NotNull")
+ NL("\n")
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("An")
+ NL("\n")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("D")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/repeatable/javaRepeatableInKotlin.antlrtree.txt b/grammar/testData/diagnostics/annotations/repeatable/javaRepeatableInKotlin.antlrtree.txt
new file mode 100644
index 000000000..abda0ab7c
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/repeatable/javaRepeatableInKotlin.antlrtree.txt
@@ -0,0 +1,116 @@
+File: javaRepeatableInKotlin.kt - a771ed2836601805ce212cbb26844a6c
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("Rep")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("java")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("lang")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ ANNOTATION("annotation")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Repeatable")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Rep")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("RepeatableAnnotationContainer")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("RepeatableAnnotation")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("RepeatableAnnotationContainer")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("RepeatableAnnotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Annotated")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/repeatable/javaRepeatableJvmTarget6.usage.antlrtree.txt b/grammar/testData/diagnostics/annotations/repeatable/javaRepeatableJvmTarget6.usage.antlrtree.txt
deleted file mode 100644
index 1eb5c3510..000000000
--- a/grammar/testData/diagnostics/annotations/repeatable/javaRepeatableJvmTarget6.usage.antlrtree.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-File: javaRepeatableJvmTarget6.usage.kt - 3cdb75b68dfefe3462c1826925c7631e
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_NO_WS("@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Runtime")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Runtime")
- NL("\n")
- CLASS("class")
- simpleIdentifier
- Identifier("UseRuntime")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Clazz")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Clazz")
- NL("\n")
- CLASS("class")
- simpleIdentifier
- Identifier("UseClazz")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Source")
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Source")
- NL("\n")
- CLASS("class")
- simpleIdentifier
- Identifier("UseSource")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/GetterAnnotations.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/GetterAnnotations.antlrtree.txt
index cb9d9d643..5361b78eb 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/GetterAnnotations.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/GetterAnnotations.antlrtree.txt
@@ -1,5 +1,4 @@
-File: GetterAnnotations.kt - 307bb5dbfe6bd5d578a5d2525e3ad402
- NL("\n")
+File: GetterAnnotations.kt - 71ccd5145911016dbcef3b03b14a39bc
packageHeader
importList
importHeader
@@ -445,6 +444,60 @@ File: GetterAnnotations.kt - 307bb5dbfe6bd5d578a5d2525e3ad402
semis
NL("\n")
NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("useSiteTarget")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("5")
+ semis
+ NL("\n")
+ NL("\n")
classMemberDeclaration
declaration
functionDeclaration
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/PropertyAnnotations.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/PropertyAnnotations.antlrtree.txt
index 5e9576556..3a0086664 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/PropertyAnnotations.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/PropertyAnnotations.antlrtree.txt
@@ -1,5 +1,4 @@
-File: PropertyAnnotations.kt - ce9e45245f3b2cf546b5303326a91040
- NL("\n")
+File: PropertyAnnotations.kt - ab13feb16307ef14d521d6dcee0cf60d
packageHeader
importList
importHeader
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992.antlrtree.txt
index 7a67832e9..36fbecd1b 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt23992.kt - 2aa0335248173391dcff9cf7ad9745e1
- NL("\n")
+File: kt23992.kt - 46eb1bbf1e35d275f2d49adb4a66e809
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992_after.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992_after.antlrtree.txt
index 290b841a7..869c1d59f 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992_after.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt23992_after.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt23992_after.kt - 5933a7e9203bf02141c7f65c51105045
- NL("\n")
+File: kt23992_after.kt - 781726c59e750059ea01c91100c120d7
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt26638_after.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt26638_after.antlrtree.txt
index 53c36c4a6..f2661333c 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt26638_after.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/kt26638_after.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt26638_after.kt - b93eb605075ae5184c25f85313d0818c
- NL("\n")
+File: kt26638_after.kt - 8b51ed46f4574fee5ac87ed40cd24566
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/prohibitUseSiteGetTargetAnnotationsOff.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/prohibitUseSiteGetTargetAnnotationsOff.antlrtree.txt
new file mode 100644
index 000000000..a6a988391
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/prohibitUseSiteGetTargetAnnotationsOff.antlrtree.txt
@@ -0,0 +1,345 @@
+File: prohibitUseSiteGetTargetAnnotationsOff.kt - 8dc297388b201d7ae5260eecc76c3cf8
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ann")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ SET("set")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("mutableProperty")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ NL("\n")
+ setter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ SET("set")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ SET("set")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ SET("set")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("mutableProperty_AnnWithoutTarget")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ NL("\n")
+ setter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ SET("set")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("immutableProperty")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("immutableProperty_AnnWithoutTarget")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/prohibitUseSiteGetTargetAnnotationsOn.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/prohibitUseSiteGetTargetAnnotationsOn.antlrtree.txt
new file mode 100644
index 000000000..0f3261315
--- /dev/null
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/prohibitUseSiteGetTargetAnnotationsOn.antlrtree.txt
@@ -0,0 +1,345 @@
+File: prohibitUseSiteGetTargetAnnotationsOn.kt - 631f596ee4a028a4e1582fcda9990511
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ann")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ SET("set")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("mutableProperty")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ NL("\n")
+ setter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ SET("set")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ SET("set")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ SET("set")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("mutableProperty_AnnWithoutTarget")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ NL("\n")
+ setter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ SET("set")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("immutableProperty")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS(" @")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ annotationUseSiteTarget
+ AT_PRE_WS("\n@")
+ GET("get")
+ COLON(":")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("immutableProperty_AnnWithoutTarget")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ getter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ann")
+ GET("get")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/receiverUseSiteTargetOnExtensionFunction_after.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/receiverUseSiteTargetOnExtensionFunction_after.antlrtree.txt
index a259e2e30..e01d0d9ee 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/receiverUseSiteTargetOnExtensionFunction_after.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/receiverUseSiteTargetOnExtensionFunction_after.antlrtree.txt
@@ -1,4 +1,5 @@
-File: receiverUseSiteTargetOnExtensionFunction_after.kt - 06236286d7edbc67e7afabd197fc303b
+File: receiverUseSiteTargetOnExtensionFunction_after.kt - d14e51f0ccf40b3ccd8a3486a7dbdf7c
+ NL("\n")
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypesError.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypesError.antlrtree.txt
index 06b48daeb..718320a71 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypesError.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypesError.antlrtree.txt
@@ -1,4 +1,5 @@
-File: wrongParamAnnotationsOnTypesError.kt - a7324cb80d9dabdcb0b2d0e00cd61c02
+File: wrongParamAnnotationsOnTypesError.kt - 867e65141bf29f99a403dcf52dca7a6f
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypes_after.antlrtree.txt b/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypes_after.antlrtree.txt
index 4487057c4..46f03ac78 100644
--- a/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypes_after.antlrtree.txt
+++ b/grammar/testData/diagnostics/annotations/withUseSiteTarget/wrongParamAnnotationsOnTypes_after.antlrtree.txt
@@ -1,4 +1,5 @@
-File: wrongParamAnnotationsOnTypes_after.kt - a7324cb80d9dabdcb0b2d0e00cd61c02
+File: wrongParamAnnotationsOnTypes_after.kt - 867e65141bf29f99a403dcf52dca7a6f
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/backingField/FieldAsParam.antlrtree.txt b/grammar/testData/diagnostics/backingField/FieldAsParam.antlrtree.txt
index c6f3a081f..ec1904fe0 100644
--- a/grammar/testData/diagnostics/backingField/FieldAsParam.antlrtree.txt
+++ b/grammar/testData/diagnostics/backingField/FieldAsParam.antlrtree.txt
@@ -1,4 +1,4 @@
-File: FieldAsParam.kt - 80782fe7051015476a9d7ced87f0d243
+File: FieldAsParam.kt - cb09fa29b5d03cef99cb73c8794d6776
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/backingField/FieldInLocal.antlrtree.txt b/grammar/testData/diagnostics/backingField/FieldInLocal.antlrtree.txt
index 42117a95b..dd11ae503 100644
--- a/grammar/testData/diagnostics/backingField/FieldInLocal.antlrtree.txt
+++ b/grammar/testData/diagnostics/backingField/FieldInLocal.antlrtree.txt
@@ -1,4 +1,4 @@
-File: FieldInLocal.kt - e430cfc432716b14e9276853c00120dd
+File: FieldInLocal.kt - f8022ffb3f349351b3455220146d5439
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/backingField/FieldReassignment_after.antlrtree.txt b/grammar/testData/diagnostics/backingField/FieldReassignment_after.antlrtree.txt
index 9862fc4b3..30c415415 100644
--- a/grammar/testData/diagnostics/backingField/FieldReassignment_after.antlrtree.txt
+++ b/grammar/testData/diagnostics/backingField/FieldReassignment_after.antlrtree.txt
@@ -1,4 +1,4 @@
-File: FieldReassignment_after.kt - dc53a9173470485b3841c75ff67de691
+File: FieldReassignment_after.kt - 226ac7cf116d3ee6f6eac9480cb6169d
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/backingField/FieldReassignment_before.antlrtree.txt b/grammar/testData/diagnostics/backingField/FieldReassignment_before.antlrtree.txt
index 4120c742a..2e93035a8 100644
--- a/grammar/testData/diagnostics/backingField/FieldReassignment_before.antlrtree.txt
+++ b/grammar/testData/diagnostics/backingField/FieldReassignment_before.antlrtree.txt
@@ -1,4 +1,4 @@
-File: FieldReassignment_before.kt - 1dbcc2afa7ba0c220bbf3b6edd7ac407
+File: FieldReassignment_before.kt - 69e1c69a2503b599d74191965987bb9c
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/backingField/InitCustomSetter.antlrtree.txt b/grammar/testData/diagnostics/backingField/InitCustomSetter.antlrtree.txt
index 045e15505..69a9e2e67 100644
--- a/grammar/testData/diagnostics/backingField/InitCustomSetter.antlrtree.txt
+++ b/grammar/testData/diagnostics/backingField/InitCustomSetter.antlrtree.txt
@@ -1,4 +1,5 @@
-File: InitCustomSetter.kt - c9bcc1960a99de14e99c5db4e48ea462
+File: InitCustomSetter.kt - a2fb0a7630ce64b53e46df8857095309
+ NL("\n")
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/backingField/LocalDeclarations.antlrtree.txt b/grammar/testData/diagnostics/backingField/LocalDeclarations.antlrtree.txt
index f95e6084b..e90eb56c8 100644
--- a/grammar/testData/diagnostics/backingField/LocalDeclarations.antlrtree.txt
+++ b/grammar/testData/diagnostics/backingField/LocalDeclarations.antlrtree.txt
@@ -1,4 +1,4 @@
-File: LocalDeclarations.kt - cee81d460041d55f0fc599e268750ce9
+File: LocalDeclarations.kt - 2172371888f49a10a88782ae58bde780
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/backingField/MustBeInitializedEffectivelyFinalOff.antlrtree.txt b/grammar/testData/diagnostics/backingField/MustBeInitializedEffectivelyFinalOff.antlrtree.txt
new file mode 100644
index 000000000..fb9ae7366
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/MustBeInitializedEffectivelyFinalOff.antlrtree.txt
@@ -0,0 +1,147 @@
+File: MustBeInitializedEffectivelyFinalOff.kt - d7b47e9ad7995416f41d1f1305515904
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/MustBeInitializedEffectivelyFinalOn.antlrtree.txt b/grammar/testData/diagnostics/backingField/MustBeInitializedEffectivelyFinalOn.antlrtree.txt
new file mode 100644
index 000000000..2c267de6c
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/MustBeInitializedEffectivelyFinalOn.antlrtree.txt
@@ -0,0 +1,147 @@
+File: MustBeInitializedEffectivelyFinalOn.kt - afcd6dc6e2de4cd2236fbd28d6916efb
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitErrorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitErrorAnyway.antlrtree.txt
new file mode 100644
index 000000000..6cee84c99
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitErrorAnyway.antlrtree.txt
@@ -0,0 +1,143 @@
+File: OpenValPartialDeferredInitErrorAnyway.kt - 28b6c2a55c7d02e19b6ce660ca6da538
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ equalityOperator
+ EXCL_EQ("!=")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitSecondaryConstructorErrorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitSecondaryConstructorErrorAnyway.antlrtree.txt
new file mode 100644
index 000000000..a027177b5
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitSecondaryConstructorErrorAnyway.antlrtree.txt
@@ -0,0 +1,146 @@
+File: OpenValPartialDeferredInitSecondaryConstructorErrorAnyway.kt - 4edf5c72b1d79e3d547191242b98801d
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ equalityOperator
+ EXCL_EQ("!=")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitTwoSecondaryConstructorsErrorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitTwoSecondaryConstructorsErrorAnyway.antlrtree.txt
new file mode 100644
index 000000000..82b795c28
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/OpenValPartialDeferredInitTwoSecondaryConstructorsErrorAnyway.antlrtree.txt
@@ -0,0 +1,106 @@
+File: OpenValPartialDeferredInitTwoSecondaryConstructorsErrorAnyway.kt - a19b8dec73e763c23d5285b0d196910c
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/ValDeferredInitInFinalClass.antlrtree.txt b/grammar/testData/diagnostics/backingField/ValDeferredInitInFinalClass.antlrtree.txt
new file mode 100644
index 000000000..9ffb09b98
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/ValDeferredInitInFinalClass.antlrtree.txt
@@ -0,0 +1,1346 @@
+File: ValDeferredInitInFinalClass.kt - 7cf4279485cf404c3934d991a22d072c
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/ValDeferredInitInOpenClassOpenValError.antlrtree.txt b/grammar/testData/diagnostics/backingField/ValDeferredInitInOpenClassOpenValError.antlrtree.txt
new file mode 100644
index 000000000..d23bb8b65
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/ValDeferredInitInOpenClassOpenValError.antlrtree.txt
@@ -0,0 +1,1147 @@
+File: ValDeferredInitInOpenClassOpenValError.kt - c90b19253f05a5379ebb43ef8875921f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/ValDeferredInitInOpenClassOpenValWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/ValDeferredInitInOpenClassOpenValWarning.antlrtree.txt
new file mode 100644
index 000000000..4342f1c36
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/ValDeferredInitInOpenClassOpenValWarning.antlrtree.txt
@@ -0,0 +1,1147 @@
+File: ValDeferredInitInOpenClassOpenValWarning.kt - 40f65b51752767150eb5acf2ff66cb9d
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("final_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("open_initializedInPlace3")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("final_notInitializedInPlace_deferredInit3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredInit0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("open_notInitializedInPlace_deferredinit3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/ValWithSetterDeferredInit.antlrtree.txt b/grammar/testData/diagnostics/backingField/ValWithSetterDeferredInit.antlrtree.txt
new file mode 100644
index 000000000..a188b60de
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/ValWithSetterDeferredInit.antlrtree.txt
@@ -0,0 +1,95 @@
+File: ValWithSetterDeferredInit.kt - 18a8ca672d9dc1f28c6fd6ca2dbbc1e5
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/VarDeferredInitInFinalClass.antlrtree.txt b/grammar/testData/diagnostics/backingField/VarDeferredInitInFinalClass.antlrtree.txt
new file mode 100644
index 000000000..090ef672e
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/VarDeferredInitInFinalClass.antlrtree.txt
@@ -0,0 +1,6535 @@
+File: VarDeferredInitInFinalClass.kt - 785ac3ec41629d327f140246e4a43324
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a00")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a01")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a02")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a03")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a10")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a11")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a12")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a13")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a20")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a21")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a22")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a23")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a30")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a31")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a32")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a33")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b00")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b01")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b02")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b03")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b10")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b11")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b12")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b13")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b20")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b21")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b22")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b23")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b30")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b31")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b32")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b33")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/VarDeferredInitInOpenClass.antlrtree.txt b/grammar/testData/diagnostics/backingField/VarDeferredInitInOpenClass.antlrtree.txt
new file mode 100644
index 000000000..6b7cfb9ba
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/VarDeferredInitInOpenClass.antlrtree.txt
@@ -0,0 +1,5795 @@
+File: VarDeferredInitInOpenClass.kt - 5de6fdada1ebc05e76cd774159cf0e38
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d00")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d01")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d02")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d03")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d10")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d11")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d12")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d13")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ FIELD("field")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d20")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d21")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d22")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d23")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d30")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d31")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("v")
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d32")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d33")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ SEMICOLON(";")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ Identifier("v")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a00")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a01")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a02")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a03")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a10")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a11")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a12")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a13")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a20")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a21")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a22")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a23")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a30")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a31")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a32")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a33")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b00")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b01")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b02")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b03")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b10")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b11")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b12")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b13")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b20")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b21")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b22")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b23")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b30")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b31")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b32")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b33")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/implicitPrimaryConstructor_errorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/implicitPrimaryConstructor_errorAnyway.antlrtree.txt
new file mode 100644
index 000000000..3ad98c906
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/implicitPrimaryConstructor_errorAnyway.antlrtree.txt
@@ -0,0 +1,89 @@
+File: implicitPrimaryConstructor_errorAnyway.kt - e118ea9ea659a38bc41a7edaecbd20ce
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneInheritedSecondary_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneInheritedSecondary_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..84f649d1e
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneInheritedSecondary_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,155 @@
+File: noPrimary_oneInheritedSecondary_mustBeInitializedError.kt - 2fd43187a00a30cff926f8fe55c1583b
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ SUPER("super")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneInheritedSecondary_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneInheritedSecondary_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..47748c9a1
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneInheritedSecondary_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,155 @@
+File: noPrimary_oneInheritedSecondary_mustBeInitializedWarning.kt - da386623c1ed3a68527a7d128c00a926
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ SUPER("super")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..a9b80b5c6
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedError.kt - 9eeba556e96fc7fbad57f2fae1932711
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..c0f17ebfd
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_deferredInitInSecondary_mustBeInitializedWarning.kt - ab27231f5e2bd90da6a5dcd320e617eb
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..3d3bc4610
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,96 @@
+File: noPrimary_oneSecondary_mustBeInitializedError.kt - 622bf6c416e92bf24633257706f2f00f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..04d8c76c0
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,96 @@
+File: noPrimary_oneSecondary_mustBeInitializedWarning.kt - 1d5f944448ee0d5bafdbacd2c804a37d
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValError_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValError_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..c3f15a3a3
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValError_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_openValError_mustBeInitializedError.kt - 6ffd7912868edd72e765e7de60bb53ca
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValError_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValError_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..1e067b92f
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValError_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_openValError_mustBeInitializedWarning.kt - f0e4a703e78215ebe8fcc33dcdcec773
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValWarning_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValWarning_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..3bbce6450
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValWarning_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_openValWarning_mustBeInitializedError.kt - 44c9a456cfc5dc6542b8a5f2d96b89e1
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValWarning_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValWarning_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..9d98ac22c
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openValWarning_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_openValWarning_mustBeInitializedWarning.kt - 32611ed96073cb52993b74101693b111
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openVar_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openVar_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..2ca4e2a15
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openVar_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_openVar_mustBeInitializedError.kt - 50a7682c305e504293624bc6a184dc5c
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openVar_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openVar_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..03adef26c
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_oneSecondary_openVar_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,90 @@
+File: noPrimary_oneSecondary_openVar_mustBeInitializedWarning.kt - 1c1b0dec9ea0973e8100b73ec68a4c78
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_partialDeferredInitInSecondary_errorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_partialDeferredInitInSecondary_errorAnyway.antlrtree.txt
new file mode 100644
index 000000000..e18ddbd84
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_partialDeferredInitInSecondary_errorAnyway.antlrtree.txt
@@ -0,0 +1,153 @@
+File: noPrimary_partialDeferredInitInSecondary_errorAnyway.kt - dfc2d87664e9486dbb5c9ab314114e29
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ equalityOperator
+ EXCL_EQ("!=")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_partialDeferredInitInTwoSecondaries_errorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_partialDeferredInitInTwoSecondaries_errorAnyway.antlrtree.txt
new file mode 100644
index 000000000..75f202e4a
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_partialDeferredInitInTwoSecondaries_errorAnyway.antlrtree.txt
@@ -0,0 +1,113 @@
+File: noPrimary_partialDeferredInitInTwoSecondaries_errorAnyway.kt - 7e099fd7a1facdc9e17ea8fd81542363
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_twoSecondary_mustBeInitializedError.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_twoSecondary_mustBeInitializedError.antlrtree.txt
new file mode 100644
index 000000000..7a5092f79
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_twoSecondary_mustBeInitializedError.antlrtree.txt
@@ -0,0 +1,114 @@
+File: noPrimary_twoSecondary_mustBeInitializedError.kt - 598309b7d7192efab03da4d53cad8d2f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_twoSecondary_mustBeInitializedWarning.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_twoSecondary_mustBeInitializedWarning.antlrtree.txt
new file mode 100644
index 000000000..59143627a
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/noPrimary_twoSecondary_mustBeInitializedWarning.antlrtree.txt
@@ -0,0 +1,114 @@
+File: noPrimary_twoSecondary_mustBeInitializedWarning.kt - f882fb122871a1328303a59c3bb6fe9a
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/onePrimary_oneSecondary_errorAnyway.antlrtree.txt b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/onePrimary_oneSecondary_errorAnyway.antlrtree.txt
new file mode 100644
index 000000000..48eb8290e
--- /dev/null
+++ b/grammar/testData/diagnostics/backingField/prohibitMissedMustBeInitializedWhenThereIsNoPrimaryConstructor/onePrimary_oneSecondary_errorAnyway.antlrtree.txt
@@ -0,0 +1,118 @@
+File: onePrimary_oneSecondary_errorAnyway.kt - 10191074c6bd073b34b766bc3ef0aed6
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ THIS("this")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/adapted/adaptationByExpectTypeOutsideCall.antlrtree.txt b/grammar/testData/diagnostics/callableReference/adapted/adaptationByExpectTypeOutsideCall.antlrtree.txt
new file mode 100644
index 000000000..145b060b8
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/adapted/adaptationByExpectTypeOutsideCall.antlrtree.txt
@@ -0,0 +1,1275 @@
+File: adaptationByExpectTypeOutsideCall.kt - 10cb4c40a39b85296b7c8fa3be3ee5df
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("options")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("normalizeNames")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("false")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("select")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("id")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("e")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("runForString")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cs")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("CharSequence")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump0")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump1")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("id")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ RPAREN(")")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump2")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("KotlinLike")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump3")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("select")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ RPAREN(")")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump4")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("KotlinLike")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dump4")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("dump4")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("KotlinLike")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump5")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("CharSequence")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("cs")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expectString")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dump5")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("dump5")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("KotlinLike")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expectString")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dump5")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("expectString")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/adapted/adaptationInWhenWithMapOf.antlrtree.txt b/grammar/testData/diagnostics/callableReference/adapted/adaptationInWhenWithMapOf.antlrtree.txt
new file mode 100644
index 000000000..d6bd35946
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/adapted/adaptationInWhenWithMapOf.antlrtree.txt
@@ -0,0 +1,204 @@
+File: adaptationInWhenWithMapOf.kt - 4411104625356715ee9eceb32e9c237f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("mapOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("a")
+ QUOTE_CLOSE(""")
+ simpleIdentifier
+ Identifier("to")
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("b")
+ QUOTE_CLOSE(""")
+ simpleIdentifier
+ Identifier("to")
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ COMMA(",")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/adapted/adaptationToOverridenWithoutDefault.antlrtree.txt b/grammar/testData/diagnostics/callableReference/adapted/adaptationToOverridenWithoutDefault.antlrtree.txt
new file mode 100644
index 000000000..d6c3a4949
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/adapted/adaptationToOverridenWithoutDefault.antlrtree.txt
@@ -0,0 +1,412 @@
+File: adaptationToOverridenWithoutDefault.kt - 47d48ccf76d41ae433563f7327acbf2d
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Some")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("SomeImpl")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Some")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("buz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("buz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeImpl")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("actionForAll")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("actionForAll")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/adapted/noKFunctionForAdaptation.antlrtree.txt b/grammar/testData/diagnostics/callableReference/adapted/noKFunctionForAdaptation.antlrtree.txt
new file mode 100644
index 000000000..45b1ffe3e
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/adapted/noKFunctionForAdaptation.antlrtree.txt
@@ -0,0 +1,760 @@
+File: noKFunctionForAdaptation.kt - d3b13bc15422c381bba9405a528e78a6
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("O")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("K")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("dump")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("KFunction0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("returnAdapter")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("KFunction0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("k2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("KFunction0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("KotlinLike")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f0")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Function0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("returnAdapter")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Function0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Function0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("KotlinLike")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("returnAdapter")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("KFunction0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/adapted/simpleAdaptationOutsideOfCall.antlrtree.txt b/grammar/testData/diagnostics/callableReference/adapted/simpleAdaptationOutsideOfCall.antlrtree.txt
new file mode 100644
index 000000000..8d9757052
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/adapted/simpleAdaptationOutsideOfCall.antlrtree.txt
@@ -0,0 +1,231 @@
+File: simpleAdaptationOutsideOfCall.kt - 717ba3da2ba930f822424789374582b5
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("options")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("runForString")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("dumpStrategy")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dump0")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("runForString")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/bareType.antlrtree.txt b/grammar/testData/diagnostics/callableReference/bareType.antlrtree.txt
index 13437f446..b34a35a7e 100644
--- a/grammar/testData/diagnostics/callableReference/bareType.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/bareType.antlrtree.txt
@@ -1,4 +1,5 @@
-File: bareType.kt - 1105e145ab8e739b575e00f16fdd54ba
+File: bareType.kt - 6878093363f3258c36158965def3a173
+ NL("\n")
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax.antlrtree.txt b/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax.antlrtree.txt
index 4f0fa7474..76e48220f 100644
--- a/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax.antlrtree.txt
@@ -1,4 +1,4 @@
-File: reservedExpressionSyntax.kt - c054123555504f10adc3ee34ee2b365a (WITH_ERRORS)
+File: reservedExpressionSyntax.kt - cf5e578b7ffbc725b9f8fab6fa7a0c17 (WITH_ERRORS)
NL("\n")
packageHeader
PACKAGE("package")
@@ -319,6 +319,79 @@ File: reservedExpressionSyntax.kt - c054123555504f10adc3ee34ee2b365a (WITH_ERROR
LPAREN("(")
RPAREN(")")
COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("testCallable1a")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
type
functionType
functionTypeParameters
@@ -661,6 +734,65 @@ File: reservedExpressionSyntax.kt - c054123555504f10adc3ee34ee2b365a (WITH_ERROR
functionValueParameters
LPAREN("(")
RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("testClassLiteral1a")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
functionBody
ASSIGNMENT("=")
expression
diff --git a/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax3.antlrtree.txt b/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax3.antlrtree.txt
index 0e5213ce4..354b34fe9 100644
--- a/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax3.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/bound/reservedExpressionSyntax3.antlrtree.txt
@@ -1,4 +1,4 @@
-File: reservedExpressionSyntax3.kt - 9b68a5323ef9e3a5a97bcb1de93eec6f
+File: reservedExpressionSyntax3.kt - 69a7cecadc61f77f7de5aa3bf1e986f6
NL("\n")
packageHeader
PACKAGE("package")
@@ -359,17 +359,6 @@ File: reservedExpressionSyntax3.kt - 9b68a5323ef9e3a5a97bcb1de93eec6f
DOT(".")
simpleIdentifier
Identifier("b")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RANGLE(">")
postfixUnarySuffix
navigationSuffix
memberAccessOperator
@@ -428,6 +417,17 @@ File: reservedExpressionSyntax3.kt - 9b68a5323ef9e3a5a97bcb1de93eec6f
DOT(".")
simpleIdentifier
Identifier("b")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
postfixUnarySuffix
navigationSuffix
memberAccessOperator
@@ -463,6 +463,65 @@ File: reservedExpressionSyntax3.kt - 9b68a5323ef9e3a5a97bcb1de93eec6f
simpleIdentifier
Identifier("Right")
ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ receiverType
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("b")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("c")
+ quest
+ QUEST_NO_WS("?")
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("test2a")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Right")
+ ASSIGNMENT("=")
expression
disjunction
conjunction
diff --git a/grammar/testData/diagnostics/callableReference/callableReferencesToCompanionMembers.antlrtree.txt b/grammar/testData/diagnostics/callableReference/callableReferencesToCompanionMembers.antlrtree.txt
new file mode 100644
index 000000000..025fa8594
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/callableReferencesToCompanionMembers.antlrtree.txt
@@ -0,0 +1,218 @@
+File: callableReferencesToCompanionMembers.kt - 2908e9f0497a5f003b9c8f74a0174e03
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("baz")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x1")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x2")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("bar")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x3")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x4")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/constraintFromLHSWithCorrectDirectionError.antlrtree.txt b/grammar/testData/diagnostics/callableReference/constraintFromLHSWithCorrectDirectionError.antlrtree.txt
index 40233cfdb..1413fbd2d 100644
--- a/grammar/testData/diagnostics/callableReference/constraintFromLHSWithCorrectDirectionError.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/constraintFromLHSWithCorrectDirectionError.antlrtree.txt
@@ -1,5 +1,4 @@
-File: constraintFromLHSWithCorrectDirectionError.kt - 291b2f7f2bae96d12e83fe7a68a1745c
- NL("\n")
+File: constraintFromLHSWithCorrectDirectionError.kt - 9eb862c00108dec0f917ad927632f056
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/correctInfoAfterArrayLikeCall.antlrtree.txt b/grammar/testData/diagnostics/callableReference/correctInfoAfterArrayLikeCall.antlrtree.txt
index 79e105395..72fb6e7ab 100644
--- a/grammar/testData/diagnostics/callableReference/correctInfoAfterArrayLikeCall.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/correctInfoAfterArrayLikeCall.antlrtree.txt
@@ -1,5 +1,4 @@
-File: correctInfoAfterArrayLikeCall.kt - ff63461e180aaebcad0fb8c396c09f5a
- NL("\n")
+File: correctInfoAfterArrayLikeCall.kt - bc8eb3330be6ef7be1af046c75831909
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/deprecateTopLevelReferenceWithCompanionLHS.antlrtree.txt b/grammar/testData/diagnostics/callableReference/deprecateTopLevelReferenceWithCompanionLHS.antlrtree.txt
new file mode 100644
index 000000000..d4d2486c8
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/deprecateTopLevelReferenceWithCompanionLHS.antlrtree.txt
@@ -0,0 +1,2115 @@
+File: deprecateTopLevelReferenceWithCompanionLHS.kt - 25a849f6de70824a824ef0ee9880321e
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("43")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("companionProp")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("44")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("memberProp")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ objectDeclaration
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Obj")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("43")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("objProp")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("44")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x0")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("y")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("id")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("z")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("z")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bam")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("baz")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Obj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("zObj")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Obj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("zObj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Obj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("mainProp")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x0")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x0")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("y")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("id")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("companionProp")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("memberProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("z")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("memberProp")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("z")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bam")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("memberProp")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Obj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("objProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("zObj")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Obj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("objProp")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("zObj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("invoke")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Obj")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("objProp")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("id")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("e")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bam")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/functionReferenceWithDefaultValueAsOtherFunctionType_enabled.antlrtree.txt b/grammar/testData/diagnostics/callableReference/functionReferenceWithDefaultValueAsOtherFunctionType_enabled.antlrtree.txt
index 8062e6a1b..dbcc66955 100644
--- a/grammar/testData/diagnostics/callableReference/functionReferenceWithDefaultValueAsOtherFunctionType_enabled.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/functionReferenceWithDefaultValueAsOtherFunctionType_enabled.antlrtree.txt
@@ -1,4 +1,4 @@
-File: functionReferenceWithDefaultValueAsOtherFunctionType_enabled.kt - ffee8996b4b601d07f9abd8c9b1b427b
+File: functionReferenceWithDefaultValueAsOtherFunctionType_enabled.kt - 00ad6c99eb7096d55fdcdbcee2bd9732
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/generic/boundViolated.antlrtree.txt b/grammar/testData/diagnostics/callableReference/generic/boundViolated.antlrtree.txt
new file mode 100644
index 000000000..f4745cce8
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/generic/boundViolated.antlrtree.txt
@@ -0,0 +1,218 @@
+File: boundViolated.kt - 9b28ab4900b25463356ae053bcbfe877
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Number")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("OK")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("genericValue")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("genericValue")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/generic/incorrectNumberOfTypeArguments.antlrtree.txt b/grammar/testData/diagnostics/callableReference/generic/incorrectNumberOfTypeArguments.antlrtree.txt
new file mode 100644
index 000000000..e1c8bf869
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/generic/incorrectNumberOfTypeArguments.antlrtree.txt
@@ -0,0 +1,319 @@
+File: incorrectNumberOfTypeArguments.kt - 29d7147a97fb2c0a5ff22685b20b4fcd
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("I")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("J")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Number")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("K")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("OK")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("genericValue")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Triple")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("J")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("K")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("genericValue")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("genericValue")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/generic/kt35896.antlrtree.txt b/grammar/testData/diagnostics/callableReference/generic/kt35896.antlrtree.txt
index b7a90a6ac..93169db7d 100644
--- a/grammar/testData/diagnostics/callableReference/generic/kt35896.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/generic/kt35896.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt35896.kt - a99187624d7b2b37f1af98c8b5ff5650
- NL("\n")
+File: kt35896.kt - 4d47e0b941edef0767a43a44d308c317
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/generic/noInferenceFeatureForCallableReferences.antlrtree.txt b/grammar/testData/diagnostics/callableReference/generic/noInferenceFeatureForCallableReferences.antlrtree.txt
deleted file mode 100644
index 6884b1c3f..000000000
--- a/grammar/testData/diagnostics/callableReference/generic/noInferenceFeatureForCallableReferences.antlrtree.txt
+++ /dev/null
@@ -1,1950 +0,0 @@
-File: noInferenceFeatureForCallableReferences.kt - fe1fc04122b3f164468f743701dc25ed
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("bar")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("s")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("complex")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("t")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("simple")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test1")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("complex")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("bar")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("simple")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("bar")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("takeFun")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- COMMA(",")
- typeParameter
- simpleIdentifier
- Identifier("R")
- RANGLE(">")
- simpleIdentifier
- Identifier("callFun")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("R")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("R")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("TODO")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("foo")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("s")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("Wrapper")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- VALUE("value")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- COMMA(",")
- typeParameter
- simpleIdentifier
- Identifier("R")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Wrapper")
- typeArguments
- LANGLE("<")
- typeProjection
- typeProjectionModifiers
- typeProjectionModifier
- varianceModifier
- IN("in")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- RANGLE(">")
- simpleIdentifier
- Identifier("createWrapper")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("s")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("R")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("TODO")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- receiverType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Wrapper")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- DOT(".")
- simpleIdentifier
- Identifier("baz")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("transform")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("TODO")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test2")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("takeFun")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("callFun")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- COMMA(",")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Wrapper")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RANGLE(">")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("createWrapper")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("callFun")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Wrapper")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Number")
- RANGLE(">")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("createWrapper")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("callFun")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- COMMA(",")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Wrapper")
- typeArguments
- LANGLE("<")
- typeProjection
- MULT("*")
- RANGLE(">")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("createWrapper")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("callFun")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Wrapper")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RANGLE(">")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("createWrapper")
- RPAREN(")")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("baz")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test3")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Array")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- functionType
- receiverType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Double")
- DOT(".")
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Double")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Double")
- RANGLE(">")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("arrayOf")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("Double")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("plus")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("Double")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("minus")
- RPAREN(")")
- semis
- NL("\n")
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Array")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- functionType
- receiverType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Double")
- DOT(".")
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Double")
- RANGLE(">")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("arrayOf")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("Double")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("plus")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("Double")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("minus")
- RPAREN(")")
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("A1")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("a1")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("t")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test1")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A1")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("a1")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("A2")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("K")
- COMMA(",")
- typeParameter
- simpleIdentifier
- Identifier("V")
- RANGLE(">")
- simpleIdentifier
- Identifier("a2")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("key")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("K")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("V")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("TODO")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test1")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A2")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("a2")
- semis
- NL("\n")
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T3")
- RANGLE(">")
- simpleIdentifier
- Identifier("test2")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T3")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T3")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A2")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("a2")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("foo1")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- quest
- QUEST_NO_WS("?")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("foo1")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("y")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- quest
- QUEST_NO_WS("?")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("foo1")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("z")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Boolean")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- simpleIdentifier
- Identifier("baz1")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("element")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- quest
- QUEST_WS("? ")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- NullLiteral("null")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test4")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a1")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- quest
- QUEST_WS("? ")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("baz1")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo1")
- RPAREN(")")
- semis
- NL("\n")
- statement
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("a2")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- quest
- QUEST_WS("? ")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("baz1")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo1")
- RPAREN(")")
- NL("\n")
- RCURL("}")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVararg.antlrtree.txt b/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVararg.antlrtree.txt
index 15468b3a4..02bd2aa6a 100644
--- a/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVararg.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVararg.antlrtree.txt
@@ -1,5 +1,4 @@
-File: genericCallWithReferenceAgainstVararg.kt - 74f4c846d9bfcfac4870498b5ffb5580
- NL("\n")
+File: genericCallWithReferenceAgainstVararg.kt - ecc5a6827b515d0635acf6d73ea18f0d
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVarargAndKFunction.antlrtree.txt b/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVarargAndKFunction.antlrtree.txt
index 83c5422e9..3518170f5 100644
--- a/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVarargAndKFunction.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/genericCallWithReferenceAgainstVarargAndKFunction.antlrtree.txt
@@ -1,5 +1,4 @@
-File: genericCallWithReferenceAgainstVarargAndKFunction.kt - 33fc93247fb8ddcb20426ab988c602a8
- NL("\n")
+File: genericCallWithReferenceAgainstVarargAndKFunction.kt - 6bc442d5767e860ab1fc497f9b798f55
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/genericTypealiasInLhs.antlrtree.txt b/grammar/testData/diagnostics/callableReference/genericTypealiasInLhs.antlrtree.txt
new file mode 100644
index 000000000..407476448
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/genericTypealiasInLhs.antlrtree.txt
@@ -0,0 +1,5849 @@
+File: genericTypealiasInLhs.kt - 723a7c46db21249ddc6e98ea54fce6f1
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Some")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("SomeAlias")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Some")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Some")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Some")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Some")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Inv")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("CharSequence")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("InvAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Inv")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Inv")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Inv")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("InvSpecificAlias")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Inv")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_2")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedCorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnusedIncorrectAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvSpecificAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("CharSequence")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Q")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BoundedPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_3")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairInverted")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondFixedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairFirstUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSecondUnusedAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairBothAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BoundedPairSpecificAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/kt31981.antlrtree.txt b/grammar/testData/diagnostics/callableReference/kt31981.antlrtree.txt
index 2c19196c8..d3f6aacc1 100644
--- a/grammar/testData/diagnostics/callableReference/kt31981.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/kt31981.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt31981.kt - 22c75662ea112f7d465ab055d34aaf5f
- NL("\n")
+File: kt31981.kt - 5e0e3794e12b27482d4a00abcc7e28cf
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/kt32256.antlrtree.txt b/grammar/testData/diagnostics/callableReference/kt32256.antlrtree.txt
index a509a2724..70c71aaeb 100644
--- a/grammar/testData/diagnostics/callableReference/kt32256.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/kt32256.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt32256.kt - 9881b007f0073630b9eb0a4c8eedfb22
- NL("\n")
+File: kt32256.kt - 92eb4a6a85bbfb06d244626e155cadb1
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/kt32267.antlrtree.txt b/grammar/testData/diagnostics/callableReference/kt32267.antlrtree.txt
index 00b226541..e5f46e6a0 100644
--- a/grammar/testData/diagnostics/callableReference/kt32267.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/kt32267.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt32267.kt - c314acff4e0d18a20ece612d52388710
- NL("\n")
+File: kt32267.kt - 363ef5b29b8e43bd013877e15ad6bb8f
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/kt35959.antlrtree.txt b/grammar/testData/diagnostics/callableReference/kt35959.antlrtree.txt
index 5c22fd829..7f6d87b15 100644
--- a/grammar/testData/diagnostics/callableReference/kt35959.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/kt35959.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt35959.kt - 9e2134037178cc6e3d7e2edd79deb3fb
- NL("\n")
+File: kt35959.kt - c9c75bc833426485398ed65123ca7e43
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/kt37530.antlrtree.txt b/grammar/testData/diagnostics/callableReference/kt37530.antlrtree.txt
index f8056b161..9d9425aa8 100644
--- a/grammar/testData/diagnostics/callableReference/kt37530.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/kt37530.antlrtree.txt
@@ -1,4 +1,5 @@
-File: kt37530.kt - b434c9de348f47eabe8535708e312966
+File: kt37530.kt - fc3388c44d1b4eae9e8d86722d10c1ff
+ NL("\n")
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/callableReference/lambdaResult.antlrtree.txt b/grammar/testData/diagnostics/callableReference/lambdaResult.antlrtree.txt
index 5d31f52dd..6aa25fceb 100644
--- a/grammar/testData/diagnostics/callableReference/lambdaResult.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/lambdaResult.antlrtree.txt
@@ -1,5 +1,4 @@
-File: lambdaResult.kt - b2102c976ecee327c70294c0c2472d3b
- NL("\n")
+File: lambdaResult.kt - 2d73176f0121c91661e319a24d168843
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/noAmbiguityWhenAllReferencesAreInapplicable.antlrtree.txt b/grammar/testData/diagnostics/callableReference/noAmbiguityWhenAllReferencesAreInapplicable.antlrtree.txt
index f4886a78c..a09b3c362 100644
--- a/grammar/testData/diagnostics/callableReference/noAmbiguityWhenAllReferencesAreInapplicable.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/noAmbiguityWhenAllReferencesAreInapplicable.antlrtree.txt
@@ -1,5 +1,4 @@
-File: noAmbiguityWhenAllReferencesAreInapplicable.kt - db16862fdab6bc9294c9d17acdd8e32e
- NL("\n")
+File: noAmbiguityWhenAllReferencesAreInapplicable.kt - 163dc0de9ccf24e93668d8bf83e0cb66
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/noExceptionOnRedCodeWithArrayLikeCall.antlrtree.txt b/grammar/testData/diagnostics/callableReference/noExceptionOnRedCodeWithArrayLikeCall.antlrtree.txt
index ed5c99d4a..6bc201e72 100644
--- a/grammar/testData/diagnostics/callableReference/noExceptionOnRedCodeWithArrayLikeCall.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/noExceptionOnRedCodeWithArrayLikeCall.antlrtree.txt
@@ -1,5 +1,4 @@
-File: noExceptionOnRedCodeWithArrayLikeCall.kt - 7fa5c7d3224b8aed7c71ee65eab25a2a
- NL("\n")
+File: noExceptionOnRedCodeWithArrayLikeCall.kt - d27e9e9ba73e2cd65da2625275f96719
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/callableReference/property/backingField.antlrtree.txt b/grammar/testData/diagnostics/callableReference/property/backingField.antlrtree.txt
index 366cd5b87..d3f00923c 100644
--- a/grammar/testData/diagnostics/callableReference/property/backingField.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/property/backingField.antlrtree.txt
@@ -1,5 +1,4 @@
-File: backingField.kt - 46b950f04ca4e00fde95f5d174b6ad93
- NL("\n")
+File: backingField.kt - 5ffd3b447c242b3fe4ff51d6478645ca
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/property/extensionsSameName.antlrtree.txt b/grammar/testData/diagnostics/callableReference/property/extensionsSameName.antlrtree.txt
index a1324ac4c..ef210c164 100644
--- a/grammar/testData/diagnostics/callableReference/property/extensionsSameName.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/property/extensionsSameName.antlrtree.txt
@@ -1,5 +1,4 @@
-File: extensionsSameName.kt - c0e3d676c2c7e0be34ddf9f14740cfdb
- NL("\n")
+File: extensionsSameName.kt - 05ba45e0d65474657dcfcfdd4a16d941
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/property/kt7945_unrelatedClass.antlrtree.txt b/grammar/testData/diagnostics/callableReference/property/kt7945_unrelatedClass.antlrtree.txt
index 17122ca02..c3b8afaaf 100644
--- a/grammar/testData/diagnostics/callableReference/property/kt7945_unrelatedClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/property/kt7945_unrelatedClass.antlrtree.txt
@@ -1,4 +1,5 @@
-File: kt7945_unrelatedClass.kt - 7b95295220bb8e8beae4e5a5367ad0df
+File: kt7945_unrelatedClass.kt - 369245ce3f2b91137eea9d72c002565c
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/property/mutablePropertyViaDelegation.antlrtree.txt b/grammar/testData/diagnostics/callableReference/property/mutablePropertyViaDelegation.antlrtree.txt
new file mode 100644
index 000000000..e82851080
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/property/mutablePropertyViaDelegation.antlrtree.txt
@@ -0,0 +1,380 @@
+File: mutablePropertyViaDelegation.kt - f428f0a545571a5215f079e53094a2d8
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KMutableProperty0")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty0")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("MkMutableSharedSettingsHolder")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cleanTarget")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_NO_WS("?")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("MakefileSettingsFacade")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("projectSettings")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MkMutableSharedSettingsHolder")
+ RPAREN(")")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ explicitDelegation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MkMutableSharedSettingsHolder")
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("projectSettings")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cleanTarget2")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("consume")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MakefileSettingsFacade")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("arg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("cleanTarget")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KMutableProperty0")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("arg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("cleanTarget")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/referenceAdaptationHasDependencyOnApi14.antlrtree.txt b/grammar/testData/diagnostics/callableReference/referenceAdaptationHasDependencyOnApi14.antlrtree.txt
deleted file mode 100644
index 1e2a01006..000000000
--- a/grammar/testData/diagnostics/callableReference/referenceAdaptationHasDependencyOnApi14.antlrtree.txt
+++ /dev/null
@@ -1,611 +0,0 @@
-File: referenceAdaptationHasDependencyOnApi14.kt - 99dbb46052aad04f1e992ed36c11eaf8
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("A")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("foo")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("s")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- functionValueParameter
- parameterModifiers
- parameterModifier
- VARARG("vararg")
- parameter
- simpleIdentifier
- Identifier("xs")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Long")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("foo")
- QUOTE_CLOSE(""")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("coercionToUnit")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("LongArray")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("f")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("varargToElement")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Long")
- COMMA(",")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Long")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("f")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("defaultAndVararg")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("f")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("allOfTheAbove")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("f")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("coercionToUnit")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("varargToElement")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("defaultAndVararg")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("allOfTheAbove")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("A")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- COLONCOLON("::")
- simpleIdentifier
- Identifier("foo")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/referenceInCycleInProperties.antlrtree.txt b/grammar/testData/diagnostics/callableReference/referenceInCycleInProperties.antlrtree.txt
new file mode 100644
index 000000000..2317f64c7
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/referenceInCycleInProperties.antlrtree.txt
@@ -0,0 +1,455 @@
+File: referenceInCycleInProperties.kt - 68493db38eeab71ff733934e344006ed
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Parser")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("parseString")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("parse")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("name")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("parse")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("name")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("content")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Some")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("strings")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("parser")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Parser")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("parseString")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOfInt")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("listOfString")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("strings")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("listOfInt")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOfString")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("map")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("parser")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("parse")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/ambiguityWhenNoApplicableCallableReferenceCandidate.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/ambiguityWhenNoApplicableCallableReferenceCandidate.antlrtree.txt
index 8aedfd548..e42968489 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/ambiguityWhenNoApplicableCallableReferenceCandidate.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/ambiguityWhenNoApplicableCallableReferenceCandidate.antlrtree.txt
@@ -1,5 +1,4 @@
-File: ambiguityWhenNoApplicableCallableReferenceCandidate.kt - 0fe77495950093299bc53b20768c39d2
- NL("\n")
+File: ambiguityWhenNoApplicableCallableReferenceCandidate.kt - f15d537fed11aa732effcc82048fe583
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/ambiguityWithBoundExtensionReceiver.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/ambiguityWithBoundExtensionReceiver.antlrtree.txt
index 5a5ce76a5..7b095c0ab 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/ambiguityWithBoundExtensionReceiver.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/ambiguityWithBoundExtensionReceiver.antlrtree.txt
@@ -1,5 +1,4 @@
-File: ambiguityWithBoundExtensionReceiver.kt - c149603852491e03fffe63c4491cbb4c
- NL("\n")
+File: ambiguityWithBoundExtensionReceiver.kt - 99cb73e40a928b26274d158fa50d9a40
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/applicableCallableReferenceFromDistantScope.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/applicableCallableReferenceFromDistantScope.antlrtree.txt
index 0efff540c..f6cbd398d 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/applicableCallableReferenceFromDistantScope.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/applicableCallableReferenceFromDistantScope.antlrtree.txt
@@ -1,5 +1,4 @@
-File: applicableCallableReferenceFromDistantScope.kt - 213f4e6b36106c3247f18c283b0c5fbf
- NL("\n")
+File: applicableCallableReferenceFromDistantScope.kt - 882f6a39e8af1846e9d52e817b92c37a
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/callableReferenceToVarargWithOverload.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/callableReferenceToVarargWithOverload.antlrtree.txt
index fd9e7c4fe..ea9c2969b 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/callableReferenceToVarargWithOverload.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/callableReferenceToVarargWithOverload.antlrtree.txt
@@ -1,5 +1,4 @@
-File: callableReferenceToVarargWithOverload.kt - 474a7592d4c5b9f82f5a485eee06e19b
- NL("\n")
+File: callableReferenceToVarargWithOverload.kt - 6a532f87bd3a5af017520f1fadb22ea5
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/chooseCallableReferenceDependingOnInferredReceiver.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/chooseCallableReferenceDependingOnInferredReceiver.antlrtree.txt
index b0265587e..68af424b8 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/chooseCallableReferenceDependingOnInferredReceiver.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/chooseCallableReferenceDependingOnInferredReceiver.antlrtree.txt
@@ -1,5 +1,4 @@
-File: chooseCallableReferenceDependingOnInferredReceiver.kt - deb8ae2fcdc329dc0b638930b37451d8
- NL("\n")
+File: chooseCallableReferenceDependingOnInferredReceiver.kt - 3a6f51160ac2d8d205909e0fa443878d
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/chooseOuterCallBySingleCallableReference.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/chooseOuterCallBySingleCallableReference.antlrtree.txt
index 8a7934d1d..131c92964 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/chooseOuterCallBySingleCallableReference.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/chooseOuterCallBySingleCallableReference.antlrtree.txt
@@ -1,5 +1,4 @@
-File: chooseOuterCallBySingleCallableReference.kt - b1ce68401cfee9c5e5d82313eca9b699
- NL("\n")
+File: chooseOuterCallBySingleCallableReference.kt - e25001ca2edb189930c7d44ec2673913
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/commonSupertypeFromReturnTypesOfCallableReference.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/commonSupertypeFromReturnTypesOfCallableReference.antlrtree.txt
index d9bdde5ad..dca4219e1 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/commonSupertypeFromReturnTypesOfCallableReference.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/commonSupertypeFromReturnTypesOfCallableReference.antlrtree.txt
@@ -1,5 +1,4 @@
-File: commonSupertypeFromReturnTypesOfCallableReference.kt - 4aa56e0734f8775967775c41acf99da7
- NL("\n")
+File: commonSupertypeFromReturnTypesOfCallableReference.kt - c69940f5cc56d31008a7122f898008c6
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/eagerAndPostponedCallableReferences.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/eagerAndPostponedCallableReferences.antlrtree.txt
index 384338b42..da157cc89 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/eagerAndPostponedCallableReferences.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/eagerAndPostponedCallableReferences.antlrtree.txt
@@ -1,5 +1,4 @@
-File: eagerAndPostponedCallableReferences.kt - ea887027f1d715f8ce1e086831dc87e4
- NL("\n")
+File: eagerAndPostponedCallableReferences.kt - 43abd2880f6d6f6ae065db82e60e09e3
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/eagerResolveOfSingleCallableReference.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/eagerResolveOfSingleCallableReference.antlrtree.txt
index 3881e309a..7c9542ad3 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/eagerResolveOfSingleCallableReference.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/eagerResolveOfSingleCallableReference.antlrtree.txt
@@ -1,5 +1,4 @@
-File: eagerResolveOfSingleCallableReference.kt - a3a5fff4d62ddfce17139697deeb8011
- NL("\n")
+File: eagerResolveOfSingleCallableReference.kt - e5d46c2330427fee2d33e517a3c64f34
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/kt35887.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/kt35887.antlrtree.txt
index 45854559a..54e1a60a8 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/kt35887.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/kt35887.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt35887.kt - e53454e11198e489e504e90934fe88ca
- NL("\n")
+File: kt35887.kt - b9839ae9a5f83f44247a0f440b9a434c
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/kt35887_simple.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/kt35887_simple.antlrtree.txt
index 1bb2d72a6..042a35374 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/kt35887_simple.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/kt35887_simple.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt35887_simple.kt - 23a2373884b738c794029ae190105f5d
- NL("\n")
+File: kt35887_simple.kt - 982ba7995d12feabdb49a3acde56177b
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/multipleOutersAndMultipleCallableReferences.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/multipleOutersAndMultipleCallableReferences.antlrtree.txt
index b24c8c2d6..fc90ae757 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/multipleOutersAndMultipleCallableReferences.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/multipleOutersAndMultipleCallableReferences.antlrtree.txt
@@ -1,5 +1,4 @@
-File: multipleOutersAndMultipleCallableReferences.kt - f04c5cf44005b022dfe78b6741de506c
- NL("\n")
+File: multipleOutersAndMultipleCallableReferences.kt - e8d4c49694fc1b783923f3032175a813
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/onlyInputTypesOnCallableReference.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/onlyInputTypesOnCallableReference.antlrtree.txt
new file mode 100644
index 000000000..6adc3693c
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/resolve/onlyInputTypesOnCallableReference.antlrtree.txt
@@ -0,0 +1,313 @@
+File: onlyInputTypesOnCallableReference.kt - 9ba8f1a14880126e596ad046d5fd7a7f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("BaseClass")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("DerivedClass")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseClass")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("derivedToStringMap")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Map")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DerivedClass")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("mapOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("mapper")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseClass")
+ RPAREN(")")
+ ARROW("->")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("derivedToStringMap")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ GET("get")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("mapper")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("derivedToStringMap")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ GET("get")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("mapper")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseClass")
+ RPAREN(")")
+ ARROW("->")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/postponedResolveOfManyCallableReference.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/postponedResolveOfManyCallableReference.antlrtree.txt
index 0540be3f5..8583307fb 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/postponedResolveOfManyCallableReference.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/postponedResolveOfManyCallableReference.antlrtree.txt
@@ -1,5 +1,4 @@
-File: postponedResolveOfManyCallableReference.kt - 95be50b7822e1bcf43a3c3ddb0226848
- NL("\n")
+File: postponedResolveOfManyCallableReference.kt - 89d0e2ad261bc1be684ab5d1c6b2a898
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/resolve/resolveCallableReferencesAfterAllSimpleArguments.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/resolveCallableReferencesAfterAllSimpleArguments.antlrtree.txt
index 5561ef820..9a53949a6 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/resolveCallableReferencesAfterAllSimpleArguments.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/resolveCallableReferencesAfterAllSimpleArguments.antlrtree.txt
@@ -1,5 +1,4 @@
-File: resolveCallableReferencesAfterAllSimpleArguments.kt - b43d78e43ab7b54c0b4c81f901fb895c
- NL("\n")
+File: resolveCallableReferencesAfterAllSimpleArguments.kt - 53941e95dd56e72fe25705674e84ed59
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/resolveEqualsOperatorWithAnyExpectedType.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/resolveEqualsOperatorWithAnyExpectedType.antlrtree.txt
index 70e8af7b9..73a542d3b 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/resolveEqualsOperatorWithAnyExpectedType.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/resolveEqualsOperatorWithAnyExpectedType.antlrtree.txt
@@ -1,5 +1,4 @@
-File: resolveEqualsOperatorWithAnyExpectedType.kt - 23117d76d5911da8994b9d0ba0bfda00
- NL("\n")
+File: resolveEqualsOperatorWithAnyExpectedType.kt - 3d3cc12386a7ba399dbfbd6b42d6ebda
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/callableReference/resolve/resolveTwoReferencesAgainstGenerics.antlrtree.txt b/grammar/testData/diagnostics/callableReference/resolve/resolveTwoReferencesAgainstGenerics.antlrtree.txt
index ff0764a1c..4c3cbb1e4 100644
--- a/grammar/testData/diagnostics/callableReference/resolve/resolveTwoReferencesAgainstGenerics.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/resolve/resolveTwoReferencesAgainstGenerics.antlrtree.txt
@@ -1,5 +1,4 @@
-File: resolveTwoReferencesAgainstGenerics.kt - b0c66074270494e08f4d60806852eea5
- NL("\n")
+File: resolveTwoReferencesAgainstGenerics.kt - 13d59b09a95f16af15d48ef237162823
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/rewriteAtSliceOnGetOperator.antlrtree.txt b/grammar/testData/diagnostics/callableReference/rewriteAtSliceOnGetOperator.antlrtree.txt
index c4dea2699..c0467a7ab 100644
--- a/grammar/testData/diagnostics/callableReference/rewriteAtSliceOnGetOperator.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/rewriteAtSliceOnGetOperator.antlrtree.txt
@@ -1,5 +1,4 @@
-File: rewriteAtSliceOnGetOperator.kt - c6158d076387085f49005c2bf14d07c5
- NL("\n")
+File: rewriteAtSliceOnGetOperator.kt - 79809bf21fa12e36f389ba86e3b6ab8b
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/subtypeArgumentFromRHSForReference.antlrtree.txt b/grammar/testData/diagnostics/callableReference/subtypeArgumentFromRHSForReference.antlrtree.txt
index ed2382bd9..c1e7def51 100644
--- a/grammar/testData/diagnostics/callableReference/subtypeArgumentFromRHSForReference.antlrtree.txt
+++ b/grammar/testData/diagnostics/callableReference/subtypeArgumentFromRHSForReference.antlrtree.txt
@@ -1,5 +1,4 @@
-File: subtypeArgumentFromRHSForReference.kt - 7a8f7f0965b499efaad6721454f702f4
- NL("\n")
+File: subtypeArgumentFromRHSForReference.kt - 5a354d097ee8d2e2a33fea3db4b99940
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/callableReference/unsupported/classLiteralsWithEmptyLHS.antlrtree.txt b/grammar/testData/diagnostics/callableReference/unsupported/classLiteralsWithEmptyLHS.antlrtree.txt
new file mode 100644
index 000000000..8e69fc48f
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/unsupported/classLiteralsWithEmptyLHS.antlrtree.txt
@@ -0,0 +1,220 @@
+File: classLiteralsWithEmptyLHS.kt - c820580e76887d802e5d2d1bb909c97a
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("regular")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Any")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ DOT(".")
+ simpleIdentifier
+ Identifier("extension")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("member")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ callableReference
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/unsupported/javaOverridesKotlinProperty.Main.antlrtree.txt b/grammar/testData/diagnostics/callableReference/unsupported/javaOverridesKotlinProperty.Main.antlrtree.txt
new file mode 100644
index 000000000..7b69eda0b
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/unsupported/javaOverridesKotlinProperty.Main.antlrtree.txt
@@ -0,0 +1,93 @@
+File: javaOverridesKotlinProperty.Main.kt - 96df001a290083291863c702fc3dec6f
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("904")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("prop")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/unsupported/referenceToKotlinPropertyViaIntermediateJavaClass.Main.antlrtree.txt b/grammar/testData/diagnostics/callableReference/unsupported/referenceToKotlinPropertyViaIntermediateJavaClass.Main.antlrtree.txt
new file mode 100644
index 000000000..fc3164804
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/unsupported/referenceToKotlinPropertyViaIntermediateJavaClass.Main.antlrtree.txt
@@ -0,0 +1,93 @@
+File: referenceToKotlinPropertyViaIntermediateJavaClass.Main.kt - 96df001a290083291863c702fc3dec6f
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("904")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("prop")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("foo")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/callableReference/unsupported/syntheticPropertiesOnJavaAnnotation.Main.antlrtree.txt b/grammar/testData/diagnostics/callableReference/unsupported/syntheticPropertiesOnJavaAnnotation.Main.antlrtree.txt
new file mode 100644
index 000000000..e4c61a5e7
--- /dev/null
+++ b/grammar/testData/diagnostics/callableReference/unsupported/syntheticPropertiesOnJavaAnnotation.Main.antlrtree.txt
@@ -0,0 +1,37 @@
+File: syntheticPropertiesOnJavaAnnotation.Main.kt - 75b8a3a993658ead09ed5d15ca7c3bb0
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("prop")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnInterface")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("javaMethod")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/cast/AsInCompoundAssignment.antlrtree.txt b/grammar/testData/diagnostics/cast/AsInCompoundAssignment.antlrtree.txt
new file mode 100644
index 000000000..60e85fcc3
--- /dev/null
+++ b/grammar/testData/diagnostics/cast/AsInCompoundAssignment.antlrtree.txt
@@ -0,0 +1,139 @@
+File: AsInCompoundAssignment.kt - 3da0e8b3100b5537c019eb4a3da2a67e
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ DOT(".")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ parenthesizedExpression
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("this")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("b")
+ assignmentAndOperator
+ ADD_ASSIGNMENT("+=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/cast/IsErasedUpcastToNonReified.antlrtree.txt b/grammar/testData/diagnostics/cast/IsErasedUpcastToNonReified.antlrtree.txt
index a3a107f6e..bf637161d 100644
--- a/grammar/testData/diagnostics/cast/IsErasedUpcastToNonReified.antlrtree.txt
+++ b/grammar/testData/diagnostics/cast/IsErasedUpcastToNonReified.antlrtree.txt
@@ -1,4 +1,4 @@
-File: IsErasedUpcastToNonReified.kt - 04276d2c646e127d57e47482c3ee6884
+File: IsErasedUpcastToNonReified.kt - 299ed3bb3fcc0bb2efb25d5c1dd552dd
packageHeader
importList
topLevelObject
@@ -411,6 +411,21 @@ File: IsErasedUpcastToNonReified.kt - 04276d2c646e127d57e47482c3ee6884
semis
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Box")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
functionDeclaration
@@ -447,6 +462,18 @@ File: IsErasedUpcastToNonReified.kt - 04276d2c646e127d57e47482c3ee6884
Identifier("T")
quest
QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
RPAREN(")")
functionBody
block
@@ -543,6 +570,419 @@ File: IsErasedUpcastToNonReified.kt - 04276d2c646e127d57e47482c3ee6884
QUEST_NO_WS("?")
semis
NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Box")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Box")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Box")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RANGLE(">")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RANGLE(">")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Box")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RANGLE(">")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RANGLE(">")
+ semis
+ NL("\n")
RCURL("}")
semis
NL("\n")
@@ -692,4 +1132,6 @@ File: IsErasedUpcastToNonReified.kt - 04276d2c646e127d57e47482c3ee6884
semis
NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/cast/bare/NullableAsNotEnough.antlrtree.txt b/grammar/testData/diagnostics/cast/bare/NullableAsNotEnough.antlrtree.txt
index e69ab51d0..1cc90999e 100644
--- a/grammar/testData/diagnostics/cast/bare/NullableAsNotEnough.antlrtree.txt
+++ b/grammar/testData/diagnostics/cast/bare/NullableAsNotEnough.antlrtree.txt
@@ -1,4 +1,5 @@
-File: NullableAsNotEnough.kt - 5982446b0d15ad6257d8d73a2b4a91cf
+File: NullableAsNotEnough.kt - 790031c539f866f906d66591473efa30
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/cast/bare/UnrelatedAs.antlrtree.txt b/grammar/testData/diagnostics/cast/bare/UnrelatedAs.antlrtree.txt
index 0f512fc12..67318f17a 100644
--- a/grammar/testData/diagnostics/cast/bare/UnrelatedAs.antlrtree.txt
+++ b/grammar/testData/diagnostics/cast/bare/UnrelatedAs.antlrtree.txt
@@ -1,4 +1,5 @@
-File: UnrelatedAs.kt - 5c50d35ac7c1cc94ac401b377588a59f
+File: UnrelatedAs.kt - 04a5f92517754bfa804248f93d37a27d
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/checkArguments/arrayAccessSet.antlrtree.txt b/grammar/testData/diagnostics/checkArguments/arrayAccessSet.antlrtree.txt
index fd4365efd..0a547e174 100644
--- a/grammar/testData/diagnostics/checkArguments/arrayAccessSet.antlrtree.txt
+++ b/grammar/testData/diagnostics/checkArguments/arrayAccessSet.antlrtree.txt
@@ -1,4 +1,4 @@
-File: arrayAccessSet.kt - 872d4882d8e35bb1c8314a29ae2c58f1
+File: arrayAccessSet.kt - 5f34fb5c430ea9e27001c9ba23c3be94
NL("\n")
NL("\n")
packageHeader
@@ -359,6 +359,67 @@ File: arrayAccessSet.kt - 872d4882d8e35bb1c8314a29ae2c58f1
semis
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ objectDeclaration
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("W")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ SET("set")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ VARARG("vararg")
+ parameter
+ simpleIdentifier
+ Identifier("va")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
functionDeclaration
@@ -784,6 +845,57 @@ File: arrayAccessSet.kt - 872d4882d8e35bb1c8314a29ae2c58f1
QUOTE_CLOSE(""")
semis
NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("W")
+ assignableSuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RSQUARE("]")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
RCURL("}")
semis
NL("\n")
diff --git a/grammar/testData/diagnostics/checkArguments/kt49276.antlrtree.txt b/grammar/testData/diagnostics/checkArguments/kt49276.antlrtree.txt
index fc8aa16ab..935ebd368 100644
--- a/grammar/testData/diagnostics/checkArguments/kt49276.antlrtree.txt
+++ b/grammar/testData/diagnostics/checkArguments/kt49276.antlrtree.txt
@@ -1,4 +1,6 @@
-File: kt49276.kt - ebf23216a3efc3f95f21b89fae9b0be2
+File: kt49276.kt - 0d1f93bb992bf182f678fd311c4ac51d
+ NL("\n")
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/checkArguments/kt49276Error.antlrtree.txt b/grammar/testData/diagnostics/checkArguments/kt49276Error.antlrtree.txt
index 00819f06a..37717882a 100644
--- a/grammar/testData/diagnostics/checkArguments/kt49276Error.antlrtree.txt
+++ b/grammar/testData/diagnostics/checkArguments/kt49276Error.antlrtree.txt
@@ -1,4 +1,5 @@
-File: kt49276Error.kt - 556d17fc3df92abe6f3d6e1b9b8ea5f4
+File: kt49276Error.kt - 433758109837f0d9b84f4601eb9f0ea0
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/checkArguments/kt51062Error.main.antlrtree.txt b/grammar/testData/diagnostics/checkArguments/kt51062Error.main.antlrtree.txt
new file mode 100644
index 000000000..6a8174194
--- /dev/null
+++ b/grammar/testData/diagnostics/checkArguments/kt51062Error.main.antlrtree.txt
@@ -0,0 +1,859 @@
+File: kt51062Error.main.kt - e5683b7ebe8baf9e7fea49b6dc2f185b
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("IntRange")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ parenthesizedExpression
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ parenthesizedExpression
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Iterable")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("a")
+ QUOTE_CLOSE(""")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("z")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ RealLiteral("1.0")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ RealLiteral("2.0")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append2")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append3")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("In")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append4")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("append4")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("IntRange")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaSmartList")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("takes")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/checkArguments/twoLambdasFunction.antlrtree.txt b/grammar/testData/diagnostics/checkArguments/twoLambdasFunction.antlrtree.txt
index 34193c8c4..4dafe2b23 100644
--- a/grammar/testData/diagnostics/checkArguments/twoLambdasFunction.antlrtree.txt
+++ b/grammar/testData/diagnostics/checkArguments/twoLambdasFunction.antlrtree.txt
@@ -1,4 +1,5 @@
-File: twoLambdasFunction.kt - 574cdbeb65d7648f3e152c477c322c86
+File: twoLambdasFunction.kt - 69dd85e19fa7b9c5372c44daa103a657
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/checkType.antlrtree.txt b/grammar/testData/diagnostics/checkType.antlrtree.txt
deleted file mode 100644
index 83843afe0..000000000
--- a/grammar/testData/diagnostics/checkType.antlrtree.txt
+++ /dev/null
@@ -1,286 +0,0 @@
-File: checkType.kt - f8a0a181cdf08ebcab7a21c45fdc68f8
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("A")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("B")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("C")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("B")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("b")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("B")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("b")
- simpleIdentifier
- Identifier("checkType")
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("_")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("B")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- RCURL("}")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("b")
- simpleIdentifier
- Identifier("checkType")
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("_")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- RCURL("}")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("b")
- simpleIdentifier
- Identifier("checkType")
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("_")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("C")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/checkTypeWithExactTest.antlrtree.txt b/grammar/testData/diagnostics/checkTypeWithExactTest.antlrtree.txt
new file mode 100644
index 000000000..83b9987f1
--- /dev/null
+++ b/grammar/testData/diagnostics/checkTypeWithExactTest.antlrtree.txt
@@ -0,0 +1,469 @@
+File: checkTypeWithExactTest.kt - 552be5a44c9c2002d1565b38fee9cd26
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("expr")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("checkExactType")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expr")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("checkExactType")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expr")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("checkExactType")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expr")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("checkTypeEquality")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expr")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("checkTypeEquality")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("B")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expr")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("checkTypeEquality")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("C")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("expr")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/classLiteral/nonClassesOnLHS.antlrtree.txt b/grammar/testData/diagnostics/classLiteral/nonClassesOnLHS.antlrtree.txt
index 66e3619ee..59d35af4f 100644
--- a/grammar/testData/diagnostics/classLiteral/nonClassesOnLHS.antlrtree.txt
+++ b/grammar/testData/diagnostics/classLiteral/nonClassesOnLHS.antlrtree.txt
@@ -1,4 +1,5 @@
-File: nonClassesOnLHS.kt - 0b5a0af5afd50b643506a3dd1e422474
+File: nonClassesOnLHS.kt - a4642e510ae3db801f6e6242df3d5840
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/classLiteral/parameterizedTypeAlias.antlrtree.txt b/grammar/testData/diagnostics/classLiteral/parameterizedTypeAlias.antlrtree.txt
new file mode 100644
index 000000000..bbed89258
--- /dev/null
+++ b/grammar/testData/diagnostics/classLiteral/parameterizedTypeAlias.antlrtree.txt
@@ -0,0 +1,1409 @@
+File: parameterizedTypeAlias.kt - 94d87e00d1f27747b29373af9d3af08a
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Inv")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Some")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("MyPair")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("B")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("InvAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Inv")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("InvUnused")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Inv")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("SomeAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Some")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("PairAliasSingle")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MyPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("PairAliasUsual")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("B")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MyPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("PairAliasReversed")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("B")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MyPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("PairAliasTwoWithUnused")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("B")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MyPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("PairAliasSpecific")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MyPair")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("SimpleArrayAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("SpecificArrayAlias")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("UnusedArrayAlias")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Inv")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnused")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvUnused")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Some")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("MyPair")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("MyPair")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasSingle")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasSingle")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasReversed")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasReversed")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasUsual")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasUsual")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasSpecific")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasTwoWithUnused")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("PairAliasTwoWithUnused")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Array")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Array")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Array")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SimpleArrayAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SimpleArrayAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SimpleArrayAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SpecificArrayAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("UnusedArrayAlias")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("UnusedArrayAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("UnusedArrayAlias")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/classLiteral/unresolvedClass.antlrtree.txt b/grammar/testData/diagnostics/classLiteral/unresolvedClass.antlrtree.txt
index f1dd0571d..2a1d318c0 100644
--- a/grammar/testData/diagnostics/classLiteral/unresolvedClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/classLiteral/unresolvedClass.antlrtree.txt
@@ -1,4 +1,5 @@
-File: unresolvedClass.kt - d76dadeb993cab93abe721513bbd2174
+File: unresolvedClass.kt - 5aab70476ef845683ba59fbcfc7167ea
+ NL("\n")
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/classObjects/invisibleClassObjects.b.antlrtree.txt b/grammar/testData/diagnostics/classObjects/invisibleClassObjects.b.antlrtree.txt
index ce4affe3c..1dd76517c 100644
--- a/grammar/testData/diagnostics/classObjects/invisibleClassObjects.b.antlrtree.txt
+++ b/grammar/testData/diagnostics/classObjects/invisibleClassObjects.b.antlrtree.txt
@@ -1,4 +1,4 @@
-File: invisibleClassObjects.b.kt - f1af7437dabff230f4bee22af4b06995
+File: invisibleClassObjects.b.kt - 98c3a4e5d4c8b37298221c5df382bd22
packageHeader
PACKAGE("package")
identifier
@@ -18,6 +18,22 @@ File: invisibleClassObjects.b.kt - f1af7437dabff230f4bee22af4b06995
Identifier("A")
semi
NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ semi
+ NL("\n")
importHeader
IMPORT("import")
identifier
@@ -28,6 +44,22 @@ File: invisibleClassObjects.b.kt - f1af7437dabff230f4bee22af4b06995
Identifier("B")
semi
NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("B")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("bar")
+ semi
+ NL("\n")
importHeader
IMPORT("import")
identifier
@@ -38,6 +70,22 @@ File: invisibleClassObjects.b.kt - f1af7437dabff230f4bee22af4b06995
Identifier("C")
semi
NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("C")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("baz")
+ semi
+ NL("\n")
importHeader
IMPORT("import")
identifier
@@ -48,6 +96,22 @@ File: invisibleClassObjects.b.kt - f1af7437dabff230f4bee22af4b06995
Identifier("D")
semi
NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("D")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("quux")
+ semi
+ NL("\n")
NL("\n")
topLevelObject
declaration
diff --git a/grammar/testData/diagnostics/collectionLiterals/argumentsOfAnnotation.antlrtree.txt b/grammar/testData/diagnostics/collectionLiterals/argumentsOfAnnotation.antlrtree.txt
index 2419fe341..8027aed46 100644
--- a/grammar/testData/diagnostics/collectionLiterals/argumentsOfAnnotation.antlrtree.txt
+++ b/grammar/testData/diagnostics/collectionLiterals/argumentsOfAnnotation.antlrtree.txt
@@ -1,4 +1,4 @@
-File: argumentsOfAnnotation.kt - b8da118d22c977e8544e51428007cac3
+File: argumentsOfAnnotation.kt - 62e15ca4a99466b308cde8a2a65312e4
packageHeader
importList
topLevelObject
@@ -1185,4 +1185,600 @@ File: argumentsOfAnnotation.kt - b8da118d22c977e8544e51428007cac3
RCURL("}")
semis
NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("I")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Test1")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Test2")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T1")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("T2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T1")
+ RANGLE(">")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Test1")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T2")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Repeatable")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Test3")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Test2")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Test3")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ collectionLiteral
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Test2")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Test1")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("40")
+ RPAREN(")")
+ RPAREN(")")
+ RSQUARE("]")
+ RPAREN(")")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Test3")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ collectionLiteral
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Test2")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Test1")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("40")
+ RPAREN(")")
+ RPAREN(")")
+ RSQUARE("]")
+ RPAREN(")")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Test3")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ collectionLiteral
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Test2")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Test1")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("40")
+ RPAREN(")")
+ RPAREN(")")
+ RSQUARE("]")
+ RPAREN(")")
+ NL("\n")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test9")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/collectionLiterals/collectionLiteralsOutsideOfAnnotations.antlrtree.txt b/grammar/testData/diagnostics/collectionLiterals/collectionLiteralsOutsideOfAnnotations.antlrtree.txt
index eede48edb..f38198d45 100644
--- a/grammar/testData/diagnostics/collectionLiterals/collectionLiteralsOutsideOfAnnotations.antlrtree.txt
+++ b/grammar/testData/diagnostics/collectionLiterals/collectionLiteralsOutsideOfAnnotations.antlrtree.txt
@@ -1,6 +1,4 @@
-File: collectionLiteralsOutsideOfAnnotations.kt - 208d02a4bad2d5754ecf0beb18d5527b
- NL("\n")
- NL("\n")
+File: collectionLiteralsOutsideOfAnnotations.kt - b695b3ed03899518e9509d48dd33489a
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/collectionLiterals/defaultValuesInAnnotation.antlrtree.txt b/grammar/testData/diagnostics/collectionLiterals/defaultValuesInAnnotation.antlrtree.txt
index 4e0487b92..060e9f0c7 100644
--- a/grammar/testData/diagnostics/collectionLiterals/defaultValuesInAnnotation.antlrtree.txt
+++ b/grammar/testData/diagnostics/collectionLiterals/defaultValuesInAnnotation.antlrtree.txt
@@ -1,6 +1,20 @@
-File: defaultValuesInAnnotation.kt - 6f6e65f83b1a6eadf5dcfbd5fc3e44e6 (WITH_ERRORS)
+File: defaultValuesInAnnotation.kt - 1262155effaffe88201cfeb74cd57a06 (WITH_ERRORS)
packageHeader
importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KClass")
+ semi
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
classDeclaration
@@ -206,6 +220,114 @@ File: defaultValuesInAnnotation.kt - 6f6e65f83b1a6eadf5dcfbd5fc3e44e6 (WITH_ERRO
LineStrText("2")
QUOTE_CLOSE(""")
RSQUARE("]")
+ COMMA(",")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Array")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KClass")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ collectionLiteral
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Int")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ COMMA(",")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Array")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ RSQUARE("]")
+ COMMA(",")
RPAREN(")")
semis
NL("\n")
diff --git a/grammar/testData/diagnostics/collectionLiterals/noArrayLiteralsInAnnotationsFeature.antlrtree.txt b/grammar/testData/diagnostics/collectionLiterals/noArrayLiteralsInAnnotationsFeature.antlrtree.txt
deleted file mode 100644
index 2a69b3617..000000000
--- a/grammar/testData/diagnostics/collectionLiterals/noArrayLiteralsInAnnotationsFeature.antlrtree.txt
+++ /dev/null
@@ -1,574 +0,0 @@
-File: noArrayLiteralsInAnnotationsFeature.kt - aa27f202fa2508cb97c1e1ade957e95a
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- ANNOTATION("annotation")
- CLASS("class")
- simpleIdentifier
- Identifier("Foo")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("a")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("IntArray")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- RSQUARE("]")
- COMMA(",")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("b")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("FloatArray")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- RealLiteral("1f")
- COMMA(",")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- RealLiteral("2f")
- RSQUARE("]")
- COMMA(",")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("c")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Array")
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RANGLE(">")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("/")
- QUOTE_CLOSE(""")
- RSQUARE("]")
- RPAREN(")")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Foo")
- NL("\n")
- FUN("fun")
- simpleIdentifier
- Identifier("test1")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Foo")
- valueArguments
- LPAREN("(")
- valueArgument
- simpleIdentifier
- Identifier("a")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- COMMA(",")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("2")
- RSQUARE("]")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("c")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("a")
- QUOTE_CLOSE(""")
- RSQUARE("]")
- RPAREN(")")
- NL("\n")
- FUN("fun")
- simpleIdentifier
- Identifier("test2")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS("\n@")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Foo")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- RSQUARE("]")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- RealLiteral("3f")
- RSQUARE("]")
- COMMA(",")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("a")
- QUOTE_CLOSE(""")
- RSQUARE("]")
- RPAREN(")")
- NL("\n")
- FUN("fun")
- simpleIdentifier
- Identifier("test3")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test4")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- collectionLiteral
- LSQUARE("[")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- COMMA(",")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("2")
- RSQUARE("]")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/comparingArbitraryClasses.antlrtree.txt b/grammar/testData/diagnostics/comparingArbitraryClasses.antlrtree.txt
new file mode 100644
index 000000000..d794a5c1b
--- /dev/null
+++ b/grammar/testData/diagnostics/comparingArbitraryClasses.antlrtree.txt
@@ -0,0 +1,134 @@
+File: comparingArbitraryClasses.kt - b51160f3ce508621939fdf5dc9232597
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("B")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ equalityOperator
+ EQEQEQ("===")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("B")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/comparingCallableReferencesWithInstanceOfJavaClass.Main.antlrtree.txt b/grammar/testData/diagnostics/comparingCallableReferencesWithInstanceOfJavaClass.Main.antlrtree.txt
new file mode 100644
index 000000000..abd0d20f6
--- /dev/null
+++ b/grammar/testData/diagnostics/comparingCallableReferencesWithInstanceOfJavaClass.Main.antlrtree.txt
@@ -0,0 +1,306 @@
+File: comparingCallableReferencesWithInstanceOfJavaClass.Main.kt - 62a02e0b4b5285f5ddf09229c74aedc7
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("K")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("f")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("j")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("J")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("k")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("K")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("j")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("K")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("f")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("j")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("k")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("f")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("j")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("k")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("f")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("K")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("f")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semi
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/comparisonOfGenericInterfaceWithGenericClass.antlrtree.txt b/grammar/testData/diagnostics/comparisonOfGenericInterfaceWithGenericClass.antlrtree.txt
new file mode 100644
index 000000000..e05a3b254
--- /dev/null
+++ b/grammar/testData/diagnostics/comparisonOfGenericInterfaceWithGenericClass.antlrtree.txt
@@ -0,0 +1,123 @@
+File: comparisonOfGenericInterfaceWithGenericClass.kt - af3283c59e570d9d10edb7b377e55bc2
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("A")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("X")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/constructorConsistency/errorInsideDelegationCallNoPrimary.antlrtree.txt b/grammar/testData/diagnostics/constructorConsistency/errorInsideDelegationCallNoPrimary.antlrtree.txt
new file mode 100644
index 000000000..b707ed10c
--- /dev/null
+++ b/grammar/testData/diagnostics/constructorConsistency/errorInsideDelegationCallNoPrimary.antlrtree.txt
@@ -0,0 +1,118 @@
+File: errorInsideDelegationCallNoPrimary.kt - b3cfda44ca54e35d3cb64c7f256c9bde
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ SUPER("super")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/constructorConsistency/inspection.antlrtree.txt b/grammar/testData/diagnostics/constructorConsistency/inspection.antlrtree.txt
index 5c18bb139..a1fd0c4ba 100644
--- a/grammar/testData/diagnostics/constructorConsistency/inspection.antlrtree.txt
+++ b/grammar/testData/diagnostics/constructorConsistency/inspection.antlrtree.txt
@@ -1,4 +1,4 @@
-File: inspection.kt - 50d7425543357fb360c48ccca258eb75
+File: inspection.kt - ab56007145936520def956b135e436a0
packageHeader
importList
topLevelObject
@@ -563,7 +563,7 @@ File: inspection.kt - 50d7425543357fb360c48ccca258eb75
modifiers
modifier
inheritanceModifier
- OPEN("open")
+ ABSTRACT("abstract")
CLASS("class")
simpleIdentifier
Identifier("Third")
@@ -577,7 +577,7 @@ File: inspection.kt - 50d7425543357fb360c48ccca258eb75
modifiers
modifier
inheritanceModifier
- OPEN("open")
+ ABSTRACT("abstract")
VAR("var")
variableDeclaration
simpleIdentifier
diff --git a/grammar/testData/diagnostics/constructorConsistency/openProperty.antlrtree.txt b/grammar/testData/diagnostics/constructorConsistency/openProperty.antlrtree.txt
index cf8740e1d..76bac1fdb 100644
--- a/grammar/testData/diagnostics/constructorConsistency/openProperty.antlrtree.txt
+++ b/grammar/testData/diagnostics/constructorConsistency/openProperty.antlrtree.txt
@@ -1,4 +1,4 @@
-File: openProperty.kt - 9366adc490e5036825ad6427b17aa7cc
+File: openProperty.kt - fdc8d4888d60d392f5d4e648ef720ed2
packageHeader
importList
topLevelObject
@@ -7,7 +7,7 @@ File: openProperty.kt - 9366adc490e5036825ad6427b17aa7cc
modifiers
modifier
inheritanceModifier
- OPEN("open")
+ ABSTRACT("abstract")
CLASS("class")
simpleIdentifier
Identifier("Base")
@@ -21,7 +21,7 @@ File: openProperty.kt - 9366adc490e5036825ad6427b17aa7cc
modifiers
modifier
inheritanceModifier
- OPEN("open")
+ ABSTRACT("abstract")
VAR("var")
variableDeclaration
simpleIdentifier
@@ -41,7 +41,7 @@ File: openProperty.kt - 9366adc490e5036825ad6427b17aa7cc
modifiers
modifier
inheritanceModifier
- OPEN("open")
+ ABSTRACT("abstract")
VAR("var")
variableDeclaration
simpleIdentifier
@@ -219,7 +219,6 @@ File: openProperty.kt - 9366adc490e5036825ad6427b17aa7cc
Identifier("temp")
semis
NL("\n")
- NL("\n")
RCURL("}")
semis
NL("\n")
diff --git a/grammar/testData/diagnostics/constructorConsistency/parametersVsPropertiesFromPrimaryConstructor.antlrtree.txt b/grammar/testData/diagnostics/constructorConsistency/parametersVsPropertiesFromPrimaryConstructor.antlrtree.txt
new file mode 100644
index 000000000..439014214
--- /dev/null
+++ b/grammar/testData/diagnostics/constructorConsistency/parametersVsPropertiesFromPrimaryConstructor.antlrtree.txt
@@ -0,0 +1,555 @@
+File: parametersVsPropertiesFromPrimaryConstructor.kt - 2bc0317390e64c376f4e5abce3f6902f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Test")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ classParameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("test")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("hello")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("inc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("hello")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("inc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/constructorConsistency/twoSuperTypeCalls.antlrtree.txt b/grammar/testData/diagnostics/constructorConsistency/twoSuperTypeCalls.antlrtree.txt
new file mode 100644
index 000000000..9649cc457
--- /dev/null
+++ b/grammar/testData/diagnostics/constructorConsistency/twoSuperTypeCalls.antlrtree.txt
@@ -0,0 +1,135 @@
+File: twoSuperTypeCalls.kt - c8aaf50edfacf6994122becfca0b8a9e
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("1")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("100")
+ RPAREN(")")
+ COMMA(",")
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/UninitializedOrReassignedVariables.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/UninitializedOrReassignedVariables.antlrtree.txt
index 0fa714ed7..b662442b5 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/UninitializedOrReassignedVariables.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/UninitializedOrReassignedVariables.antlrtree.txt
@@ -1,4 +1,4 @@
-File: UninitializedOrReassignedVariables.kt - 7975ffb3a9c36b9518aadcdf6e002d3e
+File: UninitializedOrReassignedVariables.kt - ed81870e5210098656b3de73a83e7b9e
packageHeader
PACKAGE("package")
identifier
@@ -1906,6 +1906,205 @@ File: UninitializedOrReassignedVariables.kt - 7975ffb3a9c36b9518aadcdf6e002d3e
semis
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("t6")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ statement
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("t5")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ assignmentAndOperator
+ ADD_ASSIGNMENT("+=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("t7")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ forStatement
+ FOR("for")
+ LPAREN("(")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i")
+ IN("in")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RANGE("..")
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("t5")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("i")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/accessToCompanionInBaseEnumInitSection_function.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/accessToCompanionInBaseEnumInitSection_function.antlrtree.txt
new file mode 100644
index 000000000..3600e86bd
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/accessToCompanionInBaseEnumInitSection_function.antlrtree.txt
@@ -0,0 +1,4133 @@
+File: accessToCompanionInBaseEnumInitSection_function.kt - 9e330c394bf665792381512fbba05902
+ NL("\n")
+ NL("\n")
+ fileAnnotation
+ AT_PRE_WS("\n@")
+ FILE("file")
+ COLON(":")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("OptIn")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ExperimentalContracts")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contracts")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ExperimentalContracts")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contracts")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contract")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("properties")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Enum")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Local")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("localFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("D")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("someObj")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("localFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("foo()")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("EnumWithConstructor")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ COMMA(",")
+ valueArgument
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ RPAREN(")")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("foo()")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ DOT(".")
+ simpleIdentifier
+ Identifier("provideDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("prop")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("contract")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("callsInPlace")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("contract")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("callsInPlace")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/accessToCompanionInBaseEnumInitSection_property.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/accessToCompanionInBaseEnumInitSection_property.antlrtree.txt
new file mode 100644
index 000000000..b81e070b9
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/accessToCompanionInBaseEnumInitSection_property.antlrtree.txt
@@ -0,0 +1,3826 @@
+File: accessToCompanionInBaseEnumInitSection_property.kt - cb529e2d0972440184a94fd891fca8fa
+ NL("\n")
+ NL("\n")
+ fileAnnotation
+ AT_PRE_WS("\n@")
+ FILE("file")
+ COLON(":")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("OptIn")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ExperimentalContracts")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contracts")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ExperimentalContracts")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contracts")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contract")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("properties")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Enum")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Local")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("localFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("D")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("someObj")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInside")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInside")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("bInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cInit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("dInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("eInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("fInit")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("localFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("value")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("EnumWithConstructor")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ COMMA(",")
+ valueArgument
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ RPAREN(")")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("value")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ DOT(".")
+ simpleIdentifier
+ Identifier("provideDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("prop")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("inPlaceRun")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("contract")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("callsInPlace")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("nonInPlaceRun")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("inPlaceDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("contract")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("callsInPlace")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("nonInPlaceDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/assignmentOfSyntheticVarWithInconsistentNullability.KotlinBase.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/assignmentOfSyntheticVarWithInconsistentNullability.KotlinBase.antlrtree.txt
new file mode 100644
index 000000000..34f94e61a
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/assignmentOfSyntheticVarWithInconsistentNullability.KotlinBase.antlrtree.txt
@@ -0,0 +1,65 @@
+File: assignmentOfSyntheticVarWithInconsistentNullability.KotlinBase.kt - 109e1c87541fdda1c98d8e0be4e6827a
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("KotlinBase")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("foo")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/assignmentOfSyntheticVarWithInconsistentNullability.main.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/assignmentOfSyntheticVarWithInconsistentNullability.main.antlrtree.txt
new file mode 100644
index 000000000..c0d6867f9
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/assignmentOfSyntheticVarWithInconsistentNullability.main.antlrtree.txt
@@ -0,0 +1,378 @@
+File: assignmentOfSyntheticVarWithInconsistentNullability.main.kt - 7bf3fddc7c9b9bc336f01c3bbf8a3155
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_1")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("NoOverride")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_2")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JavaBase")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_3")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JavaOverride")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_4")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KotlinOverrideBase")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_5")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KotlinOverride")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/breakContinueNoinline.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/breakContinueNoinline.antlrtree.txt
new file mode 100644
index 000000000..af823b7cb
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/breakContinueNoinline.antlrtree.txt
@@ -0,0 +1,773 @@
+File: breakContinueNoinline.kt - 77906aed78d0150a8044041e0e7e993b
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("notInlining")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ NOINLINE("noinline")
+ parameter
+ simpleIdentifier
+ Identifier("block1")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block2")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block1")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block2")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ label
+ simpleIdentifier
+ Identifier("label")
+ AT_POST_WS("@ ")
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK_AT("break@label")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE_AT("continue@label")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK_AT("break@label")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("notInlining")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE_AT("continue@label")
+ RCURL("}")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/breakInLambdaPassedToDirectInvoke.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/breakInLambdaPassedToDirectInvoke.antlrtree.txt
new file mode 100644
index 000000000..c6a0c06d5
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/breakInLambdaPassedToDirectInvoke.antlrtree.txt
@@ -0,0 +1,167 @@
+File: breakInLambdaPassedToDirectInvoke.kt - 5cb23e975a02eac1449dfd3b86a3ee63
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/breakInsideLocal.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/breakInsideLocal.antlrtree.txt
index 73d5115bb..0ceb7115b 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/breakInsideLocal.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/breakInsideLocal.antlrtree.txt
@@ -1,6 +1,170 @@
-File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
+File: breakInsideLocal.kt - f8ad559b3ce54935fa4c662884d1be76
+ NL("\n")
+ NL("\n")
packageHeader
importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationTarget")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("EXPRESSION")
+ RPAREN(")")
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Retention")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("AnnotationRetention")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("SOURCE")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ visibilityModifier
+ PUBLIC("public")
+ modifier
+ classModifier
+ ANNOTATION("annotation")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ semis
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
functionDeclaration
@@ -52,6 +216,17 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
Identifier("local1")
functionValueParameters
LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
RPAREN(")")
functionBody
block
@@ -75,8 +250,439 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- BREAK("break")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -152,6 +758,19 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
functionLiteral
lambdaLiteral
LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ARROW("->")
NL("\n")
statements
statement
@@ -171,8 +790,439 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- CONTINUE("continue")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -234,6 +1284,21 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
CLASS("class")
simpleIdentifier
Identifier("LocalClass")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
classBody
LCURL("{")
NL("\n")
@@ -262,8 +1327,439 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- CONTINUE("continue")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -301,20 +1797,451 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- BREAK("break")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
NL("\n")
@@ -326,6 +2253,17 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
Identifier("test4")
functionValueParameters
LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
RPAREN(")")
functionBody
block
@@ -420,8 +2358,439 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- BREAK("break")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -492,78 +2861,19 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
classParameter
VAL("val")
simpleIdentifier
- Identifier("x")
+ Identifier("s")
COLON(":")
type
typeReference
userType
simpleUserType
simpleIdentifier
- Identifier("Int")
+ Identifier("String")
RPAREN(")")
classBody
LCURL("{")
NL("\n")
classMemberDeclarations
- classMemberDeclaration
- secondaryConstructor
- CONSTRUCTOR("constructor")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- COLON(":")
- constructorDelegationCall
- THIS("this")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("42")
- RPAREN(")")
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- jumpExpression
- BREAK("break")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
classMemberDeclaration
secondaryConstructor
CONSTRUCTOR("constructor")
@@ -572,14 +2882,14 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
functionValueParameter
parameter
simpleIdentifier
- Identifier("y")
+ Identifier("tag")
COLON(":")
type
typeReference
userType
simpleUserType
simpleIdentifier
- Identifier("Double")
+ Identifier("Int")
RPAREN(")")
COLON(":")
constructorDelegationCall
@@ -603,19 +2913,10 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- simpleIdentifier
- Identifier("y")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("toInt")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
RPAREN(")")
block
LCURL("{")
@@ -638,8 +2939,439 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- CONTINUE("continue")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -710,7 +3442,7 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
classParameter
VAL("val")
simpleIdentifier
- Identifier("x")
+ Identifier("tag")
COLON(":")
type
typeReference
@@ -747,13 +3479,444 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- BREAK("break")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
classMemberDeclaration
anonymousInitializer
INIT("init")
@@ -778,8 +3941,439 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- CONTINUE("continue")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -844,6 +4438,21 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
CLASS("class")
simpleIdentifier
Identifier("LocalClass")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
classBody
LCURL("{")
NL("\n")
@@ -923,8 +4532,478 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- BREAK("break")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ ELSE("else")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -952,8 +5031,478 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- jumpExpression
- CONTINUE("continue")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ ELSE("else")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semi
+ NL("\n")
+ RCURL("}")
semis
NL("\n")
RCURL("}")
@@ -1041,6 +5590,29 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
CONSTRUCTOR("constructor")
functionValueParameters
LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("unused")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
RPAREN(")")
COLON(":")
constructorDelegationCall
@@ -1064,77 +5636,478 @@ File: breakInsideLocal.kt - 9315fc969e79bea66807ad71405067b4
prefixUnaryExpression
postfixUnaryExpression
primaryExpression
- ifExpression
- IF("if")
- LPAREN("(")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- BooleanLiteral("true")
- RPAREN(")")
- controlStructureBody
- block
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("42")
- RCURL("}")
- ELSE("else")
- controlStructureBody
- block
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- jumpExpression
- BREAK("break")
- RCURL("}")
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("tag")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ whenCondition
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SomeAnnotation")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ ELSE("else")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semi
+ NL("\n")
+ RCURL("}")
RPAREN(")")
NL("\n")
RCURL("}")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/capturingUninitializedVariableInNonInPlaceLambda.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/capturingUninitializedVariableInNonInPlaceLambda.antlrtree.txt
new file mode 100644
index 000000000..9b2b4dbf4
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/capturingUninitializedVariableInNonInPlaceLambda.antlrtree.txt
@@ -0,0 +1,1808 @@
+File: capturingUninitializedVariableInNonInPlaceLambda.kt - 21d0e8d3d54bd08e7b5a76c7711aea90
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("contracts")
+ DOT(".")
+ MULT("*")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("capture")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS("\n@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("OptIn")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ExperimentalContracts")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ RPAREN(")")
+ NL("\n")
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("inPlace")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("contract")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("callsInPlace")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("InvocationKind")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("EXACTLY_ONCE")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("consume")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("objectProp")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("inPlace")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("localFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("capture")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("localFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/cfgOfFullyIncorrectCode.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/cfgOfFullyIncorrectCode.antlrtree.txt
new file mode 100644
index 000000000..ad192ba46
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/cfgOfFullyIncorrectCode.antlrtree.txt
@@ -0,0 +1,41 @@
+File: cfgOfFullyIncorrectCode.kt - 42e28eb7a0614778b6d46198c6552798 (WITH_ERRORS)
+ NL("\n")
+ NL("\n")
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ TRY("try")
+ LCURL("{")
+ NL("\n")
+ Identifier("with")
+ LPAREN("(")
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ COMMA(",")
+ LCURL("{")
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ RETURN("return")
+ NL("\n")
+ NL("\n")
+ RCURL("}")
+ RCURL("}")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ FINALLY("finally")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ TRY("try")
+ LCURL("{")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ FINALLY("finally")
+ NL("\n")
+ packageHeader
+ importList
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/deadCodeInLocalDeclarations.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/deadCodeInLocalDeclarations.antlrtree.txt
index 9d1c1d575..14fe5837b 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/deadCodeInLocalDeclarations.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/deadCodeInLocalDeclarations.antlrtree.txt
@@ -1,4 +1,5 @@
-File: deadCodeInLocalDeclarations.kt - ab3461974da987a82f7adb982c67e7c2
+File: deadCodeInLocalDeclarations.kt - f51650a6dab147d98a5ed80932f68cee
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/initializationInUnreachableCode.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/initializationInUnreachableCode.antlrtree.txt
new file mode 100644
index 000000000..16564a83a
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/initializationInUnreachableCode.antlrtree.txt
@@ -0,0 +1,178 @@
+File: initializationInUnreachableCode.kt - 58c925ab2125a21993669ded8af20eb0
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("error")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Nothing")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ THROW("throw")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Exception")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Some")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("error")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ SEMICOLON(";")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/reassignementInUnreachableCode.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/reassignementInUnreachableCode.antlrtree.txt
new file mode 100644
index 000000000..1bff9a946
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/deadCode/reassignementInUnreachableCode.antlrtree.txt
@@ -0,0 +1,86 @@
+File: reassignementInUnreachableCode.kt - 88b0ce70a8aa2915569a4470a1f028ac
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ NL("\n")
+ controlStructureBody
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.antlrtree.txt
new file mode 100644
index 000000000..40d3814c7
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.antlrtree.txt
@@ -0,0 +1,119 @@
+File: returnAliasedUnitNotRequired.kt - 1643df21f32988c38d02398a7ce854ad
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ typeAlias
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("T")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ INTERNAL("internal")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("x")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("something")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("OK")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("something")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("hashCode")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/definiteReturn/singleReturnFromTry.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/definiteReturn/singleReturnFromTry.antlrtree.txt
new file mode 100644
index 000000000..708414618
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/definiteReturn/singleReturnFromTry.antlrtree.txt
@@ -0,0 +1,711 @@
+File: singleReturnFromTry.kt - e07488d0d917993cea16270e594e6de5
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("myRun")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("myRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_2")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ RCURL("}")
+ finallyBlock
+ FINALLY("finally")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_3")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("myRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ finallyBlock
+ FINALLY("finally")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_4")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("myRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ RCURL("}")
+ finallyBlock
+ FINALLY("finally")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_5")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("myRun")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ catchBlock
+ CATCH("catch")
+ LPAREN("(")
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Exception")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("hello")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ finallyBlock
+ FINALLY("finally")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/delegatedConstructorArguments.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/delegatedConstructorArguments.antlrtree.txt
new file mode 100644
index 000000000..69e858fb9
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/delegatedConstructorArguments.antlrtree.txt
@@ -0,0 +1,482 @@
+File: delegatedConstructorArguments.kt - 237324eceeaede93c9fa043464d0ec64
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Test")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("size")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("values")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("size")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("map")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Map")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ THIS("this")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("map")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("values")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("map")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("size")
+ assignmentAndOperator
+ ADD_ASSIGNMENT("+=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("values")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("size")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ SET("set")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Set")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ THIS("this")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ SET("set")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("map")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("size")
+ assignmentAndOperator
+ ADD_ASSIGNMENT("+=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("values")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("size")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("list")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RANGLE(">")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("values")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/delegatedMemberProperyWriteInInit.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/delegatedMemberProperyWriteInInit.antlrtree.txt
new file mode 100644
index 000000000..b4ba3d9c5
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/delegatedMemberProperyWriteInInit.antlrtree.txt
@@ -0,0 +1,707 @@
+File: delegatedMemberProperyWriteInInit.kt - f048d00f26a65a20ae1becad463401a0
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Delegate")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("setValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ simpleIdentifier
+ DELEGATE("delegate")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("consume")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ DELEGATE("delegate")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ DELEGATE("delegate")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("10")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("consume")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/delegatedPropertyEarlyAccess.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/delegatedPropertyEarlyAccess.antlrtree.txt
index b759e9bc6..4bf121794 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/delegatedPropertyEarlyAccess.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/delegatedPropertyEarlyAccess.antlrtree.txt
@@ -1,4 +1,4 @@
-File: delegatedPropertyEarlyAccess.kt - 0da1eb50a8a9283d4ca39ba1799510f5
+File: delegatedPropertyEarlyAccess.kt - 71d717bb83f34303737de73dc79efa1c
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/inlinedBreakContinueFeatureDisabled.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/inlinedBreakContinueFeatureDisabled.antlrtree.txt
new file mode 100644
index 000000000..1d311bef7
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/inlinedBreakContinueFeatureDisabled.antlrtree.txt
@@ -0,0 +1,1291 @@
+File: inlinedBreakContinueFeatureDisabled.kt - d92c182d29465a0973d978818d76a1eb
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block1")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ COMMA(",")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ NOINLINE("noinline")
+ parameter
+ simpleIdentifier
+ Identifier("block2")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ COMMA(",")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ CROSSINLINE("crossinline")
+ parameter
+ simpleIdentifier
+ Identifier("block3")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block1")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block2")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block3")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test2")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test3")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/kt2330.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/kt2330.antlrtree.txt
index 44c756bb7..b11a4650d 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/kt2330.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/kt2330.antlrtree.txt
@@ -128,10 +128,9 @@ File: kt2330.kt - 0c7cef6a99a44e2be67eaa7bedce81e3
valueArguments
LPAREN("(")
RPAREN(")")
- semis
- SEMICOLON(";")
- NL("\n")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
classMemberDeclaration
anonymousInitializer
INIT("init")
@@ -511,9 +510,8 @@ File: kt2330.kt - 0c7cef6a99a44e2be67eaa7bedce81e3
valueArguments
LPAREN("(")
RPAREN(")")
- semis
- SEMICOLON(";")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
classMemberDeclaration
anonymousInitializer
INIT("init")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/kt2845.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/kt2845.antlrtree.txt
index cf5265894..c839b3f48 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/kt2845.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/kt2845.antlrtree.txt
@@ -75,8 +75,8 @@ File: kt2845.kt - 0ba0a08dc0750c51b992e95769c7485b
RANGLE(">")
quest
QUEST_WS("? ")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
expression
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/kt2960.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/kt2960.antlrtree.txt
index cc4b0f297..40a66c13e 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/kt2960.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/kt2960.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt2960.kt - 35a177e1168ebc63489aa020675758d4
- NL("\n")
+File: kt2960.kt - 8c7fb76e2e2f0b126d93bc0d169bcf2d
NL("\n")
NL("\n")
packageHeader
@@ -603,4 +602,6 @@ File: kt2960.kt - 35a177e1168ebc63489aa020675758d4
primaryExpression
simpleIdentifier
Identifier("i")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/reassignmentInCatch.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/reassignmentInCatch.antlrtree.txt
new file mode 100644
index 000000000..67f57861c
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/reassignmentInCatch.antlrtree.txt
@@ -0,0 +1,295 @@
+File: reassignmentInCatch.kt - cb09ecc988b2f174e69a686b98720b1b
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("run")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("inc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ THROW("throw")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Exception")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("hmm")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ catchBlock
+ CATCH("catch")
+ LPAREN("(")
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Exception")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("inc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/safeCallAfterVariableInitialization.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/safeCallAfterVariableInitialization.antlrtree.txt
new file mode 100644
index 000000000..d67a0697e
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/safeCallAfterVariableInitialization.antlrtree.txt
@@ -0,0 +1,138 @@
+File: safeCallAfterVariableInitialization.kt - 64100f7a3b6c987c9439af44c1099399
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("run")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RCURL("}")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ safeNav
+ QUEST_NO_WS("?")
+ DOT(".")
+ simpleIdentifier
+ Identifier("let")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("inc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/smartCastInCatch.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/smartCastInCatch.antlrtree.txt
new file mode 100644
index 000000000..53842328b
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/smartCastInCatch.antlrtree.txt
@@ -0,0 +1,472 @@
+File: smartCastInCatch.kt - a80f5de85f5e5b7fbcb83345de1044c2
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("exc")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("flag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("flag")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ THROW("throw")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("RuntimeException")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("flag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("exc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("flag")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("exc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ unaryPrefix
+ prefixUnaryOperator
+ excl
+ EXCL_NO_WS("!")
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("flag")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ catchBlock
+ CATCH("catch")
+ LPAREN("(")
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Throwable")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("inc")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/uninintializedProperyWithDirectAndDelayedInitialization.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/uninintializedProperyWithDirectAndDelayedInitialization.antlrtree.txt
new file mode 100644
index 000000000..515e50234
--- /dev/null
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/uninintializedProperyWithDirectAndDelayedInitialization.antlrtree.txt
@@ -0,0 +1,247 @@
+File: uninintializedProperyWithDirectAndDelayedInitialization.kt - cf5274b52b3b09fa53a57d8ebe762aab
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ NL("\n")
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_after.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_after.antlrtree.txt
index 709b66d35..f5e448699 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_after.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_after.antlrtree.txt
@@ -1,4 +1,4 @@
-File: uninitializedCompanionOfEnum_after.kt - 0e1b4bc995a4231ab3fdb4f824f26d06
+File: uninitializedCompanionOfEnum_after.kt - 7df03a003efa197223cb4af5ecf420f4
NL("\n")
NL("\n")
NL("\n")
@@ -851,4 +851,530 @@ File: uninitializedCompanionOfEnum_after.kt - 0e1b4bc995a4231ab3fdb4f824f26d06
semis
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("lambda")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("M")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("companionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("extensionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("extensionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("extensionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("extensionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ RPAREN(")")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("companionProp")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("someString")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("companionFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("someString")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("extensionFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("extensionProp")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionProp")
+ semis
+ NL("\n")
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_before.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_before.antlrtree.txt
index 684b99bca..7bcb3deb7 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_before.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedCompanionOfEnum_before.antlrtree.txt
@@ -1,4 +1,4 @@
-File: uninitializedCompanionOfEnum_before.kt - 86075542b2276730262b598650ee1836
+File: uninitializedCompanionOfEnum_before.kt - 2f55901b57b7bd7822ff13ad3aa9ea48
NL("\n")
NL("\n")
NL("\n")
@@ -851,4 +851,530 @@ File: uninitializedCompanionOfEnum_before.kt - 86075542b2276730262b598650ee1836
semis
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("lambda")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("M")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("companionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("companionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("extensionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("extensionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("extensionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("extensionProp")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ RPAREN(")")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("companionProp")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("someString")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("companionFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("someString")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("extensionFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionFun")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("EnumWithLambda")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("extensionProp")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("companionProp")
+ semis
+ NL("\n")
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedQualifiedEnumEntry.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedQualifiedEnumEntry.antlrtree.txt
index a6c6fc201..81c9eb6cb 100644
--- a/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedQualifiedEnumEntry.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlFlowAnalysis/uninitializedQualifiedEnumEntry.antlrtree.txt
@@ -1,4 +1,5 @@
-File: uninitializedQualifiedEnumEntry.kt - 02264c790426875f419b7bb6765188d8
+File: uninitializedQualifiedEnumEntry.kt - e4289fe09b02711f0a29c1c4cd3e5ee7
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/controlFlowAnalysis/unusedInAnonymous.antlrtree.txt b/grammar/testData/diagnostics/controlFlowAnalysis/unusedInAnonymous.antlrtree.txt
deleted file mode 100644
index 77b75faff..000000000
--- a/grammar/testData/diagnostics/controlFlowAnalysis/unusedInAnonymous.antlrtree.txt
+++ /dev/null
@@ -1,170 +0,0 @@
-File: unusedInAnonymous.kt - 64591083e73c120e8ed1eb21c638438d
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("someApi")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("f")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("42")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("someApi")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- anonymousFunction
- FUN("fun")
- parametersWithOptionalType
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- RCURL("}")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/controlStructures/breakContinueInCrossInlineLambda.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/breakContinueInCrossInlineLambda.antlrtree.txt
new file mode 100644
index 000000000..a04276364
--- /dev/null
+++ b/grammar/testData/diagnostics/controlStructures/breakContinueInCrossInlineLambda.antlrtree.txt
@@ -0,0 +1,312 @@
+File: breakContinueInCrossInlineLambda.kt - ce28b8d9c1f0af5fc8588ced72a396d2
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ CROSSINLINE("crossinline")
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ label
+ simpleIdentifier
+ Identifier("L1")
+ AT_POST_WS("@ ")
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK_AT("break@L1")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE_AT("continue@L1")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlStructures/breakContinueInNoInlineLambda.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/breakContinueInNoInlineLambda.antlrtree.txt
new file mode 100644
index 000000000..93b9d00ed
--- /dev/null
+++ b/grammar/testData/diagnostics/controlStructures/breakContinueInNoInlineLambda.antlrtree.txt
@@ -0,0 +1,312 @@
+File: breakContinueInNoInlineLambda.kt - 72ec2254ad17fb44230108fef47fed80
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameterModifiers
+ parameterModifier
+ NOINLINE("noinline")
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ label
+ simpleIdentifier
+ Identifier("L1")
+ AT_POST_WS("@ ")
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK("break")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ BREAK_AT("break@L1")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE_AT("continue@L1")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlStructures/continueInInitBlock.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/continueInInitBlock.antlrtree.txt
new file mode 100644
index 000000000..6a3f4886e
--- /dev/null
+++ b/grammar/testData/diagnostics/controlStructures/continueInInitBlock.antlrtree.txt
@@ -0,0 +1,123 @@
+File: continueInInitBlock.kt - 05f79e5198a765d02f4c9f43a1d47a6d
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ loopStatement
+ whileStatement
+ WHILE("while")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ anonymousInitializer
+ INIT("init")
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ CONTINUE("continue")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ SUPER("super")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlStructures/forWithIncorrectTypeSpecializer.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/forWithIncorrectTypeSpecializer.antlrtree.txt
new file mode 100644
index 000000000..80008809c
--- /dev/null
+++ b/grammar/testData/diagnostics/controlStructures/forWithIncorrectTypeSpecializer.antlrtree.txt
@@ -0,0 +1,222 @@
+File: forWithIncorrectTypeSpecializer.kt - aac13245045add4c19cc391f565bcecc
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("derivedList")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Derived")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Derived")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Derived")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ loopStatement
+ forStatement
+ FOR("for")
+ LPAREN("(")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("derived")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Derived")
+ IN("in")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("derivedList")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlStructures/improperElseInExpression.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/improperElseInExpression.antlrtree.txt
index ca1daa9e3..293aca01c 100644
--- a/grammar/testData/diagnostics/controlStructures/improperElseInExpression.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlStructures/improperElseInExpression.antlrtree.txt
@@ -535,9 +535,9 @@ File: improperElseInExpression.kt - f017877954aa23be6748cd4e67201c3b
valueArguments
LPAREN("(")
RPAREN(")")
+ SEMICOLON(";")
+ NL("\n")
semis
- SEMICOLON(";")
- NL("\n")
NL("\n")
statement
expression
diff --git a/grammar/testData/diagnostics/controlStructures/incorrectElvis.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/incorrectElvis.antlrtree.txt
new file mode 100644
index 000000000..a0da0eea7
--- /dev/null
+++ b/grammar/testData/diagnostics/controlStructures/incorrectElvis.antlrtree.txt
@@ -0,0 +1,84 @@
+File: incorrectElvis.kt - 6d6acc8bef63d52b5f6fea838d89a27f
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ safeNav
+ QUEST_NO_WS("?")
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ elvis
+ QUEST_NO_WS("?")
+ COLON(":")
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("smth")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/controlStructures/kt30406.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/kt30406.antlrtree.txt
index 908a8f672..8945493a2 100644
--- a/grammar/testData/diagnostics/controlStructures/kt30406.antlrtree.txt
+++ b/grammar/testData/diagnostics/controlStructures/kt30406.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt30406.kt - 2976aa9f515de9b712ec13f010bdb1f9
- NL("\n")
+File: kt30406.kt - af42af881c150f343f5220b1b04c378f
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/controlStructures/whenWithNoSubjectAndCommas.antlrtree.txt b/grammar/testData/diagnostics/controlStructures/whenWithNoSubjectAndCommas.antlrtree.txt
new file mode 100644
index 000000000..c9ed21f48
--- /dev/null
+++ b/grammar/testData/diagnostics/controlStructures/whenWithNoSubjectAndCommas.antlrtree.txt
@@ -0,0 +1,74 @@
+File: whenWithNoSubjectAndCommas.kt - 8f9c4164b0f097cc571f276c956d8192 (WITH_ERRORS)
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("someFun")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ WHEN("when")
+ LCURL("{")
+ NL("\n")
+ IS("is")
+ Identifier("SomeClass")
+ COMMA(",")
+ IS("is")
+ Identifier("OtherClass")
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ WHEN("when")
+ LCURL("{")
+ NL("\n")
+ Identifier("x")
+ EQEQ("==")
+ IntegerLiteral("1")
+ COMMA(",")
+ Identifier("x")
+ EQEQ("==")
+ IntegerLiteral("2")
+ ARROW("->")
+ LCURL("{")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/coroutines/callableReference/outsideSuspend.antlrtree.txt b/grammar/testData/diagnostics/coroutines/callableReference/outsideSuspend.antlrtree.txt
index 595fb7bea..2f59821fd 100644
--- a/grammar/testData/diagnostics/coroutines/callableReference/outsideSuspend.antlrtree.txt
+++ b/grammar/testData/diagnostics/coroutines/callableReference/outsideSuspend.antlrtree.txt
@@ -1,5 +1,4 @@
-File: outsideSuspend.kt - 7cc3c6fb8c4dc9edf9abea4bb9d4e632
- NL("\n")
+File: outsideSuspend.kt - 9d32dc1347d9d40a90cb8b08b0f6b66a
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/coroutines/inlineSuspendTypealias.antlrtree.txt b/grammar/testData/diagnostics/coroutines/inlineSuspendTypealias.antlrtree.txt
new file mode 100644
index 000000000..01a51aef6
--- /dev/null
+++ b/grammar/testData/diagnostics/coroutines/inlineSuspendTypealias.antlrtree.txt
@@ -0,0 +1,84 @@
+File: inlineSuspendTypealias.kt - 85c934aee35560bd7d816da1ea08a349
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("Handler")
+ ASSIGNMENT("=")
+ type
+ typeModifiers
+ typeModifier
+ SUSPEND("suspend")
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ SUSPEND("suspend")
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("handler")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Handler")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Unit")
+ EOF("")
diff --git a/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaKotlinCycle.ll.I.antlrtree.txt b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaKotlinCycle.ll.I.antlrtree.txt
new file mode 100644
index 000000000..1a753bb9e
--- /dev/null
+++ b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaKotlinCycle.ll.I.antlrtree.txt
@@ -0,0 +1,50 @@
+File: kotlinJavaKotlinCycle.ll.I.kt - 80a2c948fd8bbea13bd02f45bfe9e67e
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("I")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("K")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaKotlinCycle.ll.K.antlrtree.txt b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaKotlinCycle.ll.K.antlrtree.txt
new file mode 100644
index 000000000..32d0de6fa
--- /dev/null
+++ b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaKotlinCycle.ll.K.antlrtree.txt
@@ -0,0 +1,49 @@
+File: kotlinJavaKotlinCycle.ll.K.kt - 5e95812431839afa9b9e0f58a97284be
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("K")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("J")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaNestedCycle.ll.ExceptionTracker.antlrtree.txt b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaNestedCycle.ll.ExceptionTracker.antlrtree.txt
new file mode 100644
index 000000000..d0fc02aff
--- /dev/null
+++ b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaNestedCycle.ll.ExceptionTracker.antlrtree.txt
@@ -0,0 +1,30 @@
+File: kotlinJavaNestedCycle.ll.ExceptionTracker.kt - 2041ce8b7e288e0e7af08cec46f1f08c
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("ExceptionTracker")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("LockBasedStorageManager")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("ExceptionHandlingStrategy")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaNestedCycle.ll.StorageManager.antlrtree.txt b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaNestedCycle.ll.StorageManager.antlrtree.txt
new file mode 100644
index 000000000..276a244ee
--- /dev/null
+++ b/grammar/testData/diagnostics/cyclicHierarchy/kotlinJavaNestedCycle.ll.StorageManager.antlrtree.txt
@@ -0,0 +1,37 @@
+File: kotlinJavaNestedCycle.ll.StorageManager.kt - 35784e2299bd2abf98dd0b28bf7c5618
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("StorageManager")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ExceptionTracker")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/dataClasses/companionDataObject.antlrtree.txt b/grammar/testData/diagnostics/dataClasses/companionDataObject.antlrtree.txt
new file mode 100644
index 000000000..5d889e4e9
--- /dev/null
+++ b/grammar/testData/diagnostics/dataClasses/companionDataObject.antlrtree.txt
@@ -0,0 +1,29 @@
+File: companionDataObject.kt - 6833734e6e9e0d70e291fb8c83df6c2e
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ DATA("data")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/dataClasses/dataObject.antlrtree.txt b/grammar/testData/diagnostics/dataClasses/dataObject.antlrtree.txt
deleted file mode 100644
index 80798dfde..000000000
--- a/grammar/testData/diagnostics/dataClasses/dataObject.antlrtree.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-File: dataObject.kt - c4976cc27afaa524cbac22714b17cbb3 (WITH_ERRORS)
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- objectDeclaration
- modifiers
- modifier
- classModifier
- DATA("data")
- OBJECT("object")
- simpleIdentifier
- Identifier("Object")
- LPAREN("(")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("y")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/dataClasses/dataObjectDisabled.antlrtree.txt b/grammar/testData/diagnostics/dataClasses/dataObjectDisabled.antlrtree.txt
new file mode 100644
index 000000000..278944064
--- /dev/null
+++ b/grammar/testData/diagnostics/dataClasses/dataObjectDisabled.antlrtree.txt
@@ -0,0 +1,17 @@
+File: dataObjectDisabled.kt - c632c6755e85af8f8014bd113c5cb7e1
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Object")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/dataClasses/dataObjectEnabled.antlrtree.txt b/grammar/testData/diagnostics/dataClasses/dataObjectEnabled.antlrtree.txt
new file mode 100644
index 000000000..13ac30baf
--- /dev/null
+++ b/grammar/testData/diagnostics/dataClasses/dataObjectEnabled.antlrtree.txt
@@ -0,0 +1,18 @@
+File: dataObjectEnabled.kt - ddc17262de0db54c9c1be8fe6c541f3e
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Object")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/dataClasses/dataObjectLiteral.antlrtree.txt b/grammar/testData/diagnostics/dataClasses/dataObjectLiteral.antlrtree.txt
new file mode 100644
index 000000000..be172d23a
--- /dev/null
+++ b/grammar/testData/diagnostics/dataClasses/dataObjectLiteral.antlrtree.txt
@@ -0,0 +1,93 @@
+File: dataObjectLiteral.kt - d0c18ce2725cfe8be090356a1b9cc399
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("o")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ DATA("data")
+ OBJECT("object")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("I")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/dataClasses/strange.antlrtree.txt b/grammar/testData/diagnostics/dataClasses/strange.antlrtree.txt
index a772ecb60..f26a8975a 100644
--- a/grammar/testData/diagnostics/dataClasses/strange.antlrtree.txt
+++ b/grammar/testData/diagnostics/dataClasses/strange.antlrtree.txt
@@ -1,4 +1,7 @@
-File: strange.kt - 447f1312fec4cda59968d246ec12bc09
+File: strange.kt - b727f060c8440aed91c617d441ca5c07
+ NL("\n")
+ NL("\n")
+ NL("\n")
packageHeader
importList
topLevelObject
@@ -144,4 +147,6 @@ File: strange.kt - 447f1312fec4cda59968d246ec12bc09
simpleIdentifier
Identifier("Int")
RPAREN(")")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/dataObjects/overrideEqualsAndHashCode.antlrtree.txt b/grammar/testData/diagnostics/dataObjects/overrideEqualsAndHashCode.antlrtree.txt
new file mode 100644
index 000000000..8247eae18
--- /dev/null
+++ b/grammar/testData/diagnostics/dataObjects/overrideEqualsAndHashCode.antlrtree.txt
@@ -0,0 +1,825 @@
+File: overrideEqualsAndHashCode.kt - 92c0c5b10f561ea579d78dc4f7da5d62
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Override")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("equals")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("other")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("hashCode")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Base")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("hashCode")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("NoOverride")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("equals")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("other")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("tag")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("true")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("hashCode")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PARAM("param")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("hashCode")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Super")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("equals")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("other")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ superExpression
+ SUPER("super")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("equals")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("other")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("hashCode")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("OverridenInSuper")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Super")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("equals")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("other")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ superExpression
+ SUPER("super")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("equals")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("other")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/declarationChecks/DataFlowInfoInMultiDecl.antlrtree.txt b/grammar/testData/diagnostics/declarationChecks/DataFlowInfoInMultiDecl.antlrtree.txt
index 0e0ebc29c..feed17f91 100644
--- a/grammar/testData/diagnostics/declarationChecks/DataFlowInfoInMultiDecl.antlrtree.txt
+++ b/grammar/testData/diagnostics/declarationChecks/DataFlowInfoInMultiDecl.antlrtree.txt
@@ -232,9 +232,8 @@ File: DataFlowInfoInMultiDecl.kt - a34a5ab85232230fee709442a8238144
primaryExpression
simpleIdentifier
Identifier("aa")
- semis
- SEMICOLON(";")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
RCURL("}")
semis
NL("\n")
@@ -324,9 +323,8 @@ File: DataFlowInfoInMultiDecl.kt - a34a5ab85232230fee709442a8238144
primaryExpression
simpleIdentifier
Identifier("b")
- semis
- SEMICOLON(";")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
RCURL("}")
semis
NL("\n")
diff --git a/grammar/testData/diagnostics/declarationChecks/RedeclarationsInMultiDecl.antlrtree.txt b/grammar/testData/diagnostics/declarationChecks/RedeclarationsInMultiDecl.antlrtree.txt
index b3f24291f..190249c7a 100644
--- a/grammar/testData/diagnostics/declarationChecks/RedeclarationsInMultiDecl.antlrtree.txt
+++ b/grammar/testData/diagnostics/declarationChecks/RedeclarationsInMultiDecl.antlrtree.txt
@@ -191,8 +191,8 @@ File: RedeclarationsInMultiDecl.kt - 0d7bcbe9b64d3edf33292f001b928392
valueArguments
LPAREN("(")
RPAREN(")")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
declaration
@@ -305,9 +305,8 @@ File: RedeclarationsInMultiDecl.kt - 0d7bcbe9b64d3edf33292f001b928392
valueArguments
LPAREN("(")
RPAREN(")")
- semis
- SEMICOLON(";")
- NL("\n")
+ SEMICOLON(";")
+ NL("\n")
RCURL("}")
semis
NL("\n")
diff --git a/grammar/testData/diagnostics/delegatedProperty/backingField.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/backingField.antlrtree.txt
index 869683e93..c6b5e4a91 100644
--- a/grammar/testData/diagnostics/delegatedProperty/backingField.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegatedProperty/backingField.antlrtree.txt
@@ -79,24 +79,11 @@ File: backingField.kt - 1ceb121d76a832b1b694e95c6afdd817 (WITH_ERRORS)
functionBody
ASSIGNMENT("=")
FieldIdentifier("$a")
- NL("\n")
- RCURL("}")
- NL("\n")
- NL("\n")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
classDeclaration
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/callableReferenceArgumentInDelegatedExpression.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/callableReferenceArgumentInDelegatedExpression.antlrtree.txt
index e3d5f1bfb..eb16ec0a2 100644
--- a/grammar/testData/diagnostics/delegatedProperty/inference/callableReferenceArgumentInDelegatedExpression.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/callableReferenceArgumentInDelegatedExpression.antlrtree.txt
@@ -1,5 +1,4 @@
-File: callableReferenceArgumentInDelegatedExpression.kt - 995d900cdc961a761d18411af7e0956b
- NL("\n")
+File: callableReferenceArgumentInDelegatedExpression.kt - 580cd01121ba7ae474c8c270912f70be
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/decoratedLambda.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/decoratedLambda.antlrtree.txt
new file mode 100644
index 000000000..246001679
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/decoratedLambda.antlrtree.txt
@@ -0,0 +1,356 @@
+File: decoratedLambda.kt - 9a41cd3df806c08241bbcd9467ec4b36
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("P2")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("xComponent")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("builder")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ parameter
+ simpleIdentifier
+ Identifier("prop1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P2")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ parameter
+ simpleIdentifier
+ Identifier("prop1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P2")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("P1")
+ RANGLE(">")
+ receiverType
+ parenthesizedType
+ LPAREN("(")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ parameter
+ simpleIdentifier
+ Identifier("prop1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P1")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ parameter
+ simpleIdentifier
+ Identifier("prop1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P1")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("pdfDocumentViewer")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("xComponent")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("_")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("? ")
+ ARROW("->")
+ NL("\n")
+ statements
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("xPDFDocumentViewer")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("href")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ quest
+ QUEST_WS("?\n")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pdfDocumentViewer")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("href")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/delegatedExpressionWithLabeledReturnInsideLambda.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/delegatedExpressionWithLabeledReturnInsideLambda.antlrtree.txt
index 94029fe3b..7ae3313af 100644
--- a/grammar/testData/diagnostics/delegatedProperty/inference/delegatedExpressionWithLabeledReturnInsideLambda.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/delegatedExpressionWithLabeledReturnInsideLambda.antlrtree.txt
@@ -1,5 +1,4 @@
-File: delegatedExpressionWithLabeledReturnInsideLambda.kt - a169d49616a91cd5ceedfe5de5100fad
- NL("\n")
+File: delegatedExpressionWithLabeledReturnInsideLambda.kt - dfaed867b48333e2a4af0dd20b72bccc
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/elvisInDelegated.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/elvisInDelegated.antlrtree.txt
new file mode 100644
index 000000000..7e548ea3c
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/elvisInDelegated.antlrtree.txt
@@ -0,0 +1,435 @@
+File: elvisInDelegated.kt - 5368ac540936ada157aaa916f889da85
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ref")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("D")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("D")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("hisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("t")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ RSQUARE("]")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("list")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ DATA("data")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ elvis
+ QUEST_NO_WS("?")
+ COLON(":")
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("error")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/ifInDelegated.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/ifInDelegated.antlrtree.txt
new file mode 100644
index 000000000..f0176ab4b
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/ifInDelegated.antlrtree.txt
@@ -0,0 +1,499 @@
+File: ifInDelegated.kt - 6765d0943d00b3c11168824cf2f62c12
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ref")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("D")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("D")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("hisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("t")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ RSQUARE("]")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("list")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ DATA("data")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("arg")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/kt41952.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/kt41952.antlrtree.txt
new file mode 100644
index 000000000..f9e68d1ae
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/kt41952.antlrtree.txt
@@ -0,0 +1,521 @@
+File: kt41952.kt - fd9567d10e08dbff5ba099519251a2fd
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KClass")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Issue")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("strings")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bidir_collection")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("String")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("takeIssue")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("takeIssue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("issue")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Issue")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Self")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Target")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ DOT(".")
+ simpleIdentifier
+ Identifier("bidir_collection")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("targetType")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KClass")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("f")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Unit")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Collection")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ RANGLE(">")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Delegate")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("setValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/nestedPartiallyResolvedCalls.main.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/nestedPartiallyResolvedCalls.main.antlrtree.txt
new file mode 100644
index 000000000..d1d4271f3
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/nestedPartiallyResolvedCalls.main.antlrtree.txt
@@ -0,0 +1,313 @@
+File: nestedPartiallyResolvedCalls.main.kt - b90f9b6db308e8aed9b6be1d30de566b
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ COMMA(",")
+ classParameter
+ simpleIdentifier
+ Identifier("myType")
+ COLON(":")
+ type
+ nullableType
+ parenthesizedType
+ LPAREN("(")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("arguments")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JavaClass")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("lazySoft")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ simpleIdentifier
+ Identifier("myType")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ BooleanLiteral("false")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("c")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_WS("! ")
+ RCURL("}")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/nestedPartiallyResolvedCallsSimple.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/nestedPartiallyResolvedCallsSimple.antlrtree.txt
new file mode 100644
index 000000000..6185b4761
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/nestedPartiallyResolvedCallsSimple.antlrtree.txt
@@ -0,0 +1,421 @@
+File: nestedPartiallyResolvedCallsSimple.kt - 4335fc87b469fc2019ee26d281b17df2
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("KotlinVal")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("initializer")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("instance")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("metadata")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("myType")
+ COLON(":")
+ type
+ nullableType
+ parenthesizedType
+ LPAREN("(")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ quest
+ QUEST_WS("?\n")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("arguments")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("KotlinVal")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("select")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ anonymousFunction
+ FUN("fun")
+ parametersWithOptionalType
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RCURL("}")
+ RPAREN(")")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("select")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("f")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/notNullAssertionInLocalDelegated.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/notNullAssertionInLocalDelegated.antlrtree.txt
new file mode 100644
index 000000000..228a1b6cb
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/notNullAssertionInLocalDelegated.antlrtree.txt
@@ -0,0 +1,401 @@
+File: notNullAssertionInLocalDelegated.kt - ee557e102a98a6123992aed1fe30cef6
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ref")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("D")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("D")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("hisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("t")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ RSQUARE("]")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("list")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ DATA("data")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/inference/tryInGenerated.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/inference/tryInGenerated.antlrtree.txt
new file mode 100644
index 000000000..c63633167
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/inference/tryInGenerated.antlrtree.txt
@@ -0,0 +1,425 @@
+File: tryInGenerated.kt - 749c6e9f81846966a4c0b32b383af3a4
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ref")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("D")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("D")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("hisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("t")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ RSQUARE("]")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("list")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ DATA("data")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ tryExpression
+ TRY("try")
+ block
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ RCURL("}")
+ finallyBlock
+ FINALLY("finally")
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/kt48546.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/kt48546.antlrtree.txt
index 4246803d8..3cd8966a8 100644
--- a/grammar/testData/diagnostics/delegatedProperty/kt48546.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegatedProperty/kt48546.antlrtree.txt
@@ -1,4 +1,5 @@
-File: kt48546.kt - b90fcf56700409966ac7910ac8bca9fc
+File: kt48546.kt - 80881da695ce72ab21dd39e26d8cf144
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
@@ -280,4 +281,6 @@ File: kt48546.kt - b90fcf56700409966ac7910ac8bca9fc
RCURL("}")
NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/kt48546Strict.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/kt48546Strict.antlrtree.txt
index 09a8def3c..39877e602 100644
--- a/grammar/testData/diagnostics/delegatedProperty/kt48546Strict.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegatedProperty/kt48546Strict.antlrtree.txt
@@ -1,4 +1,4 @@
-File: kt48546Strict.kt - a7a853fef944a472ac525d5e5072e45c
+File: kt48546Strict.kt - ba8375809611cc047bf04be4b0afeb97
NL("\n")
NL("\n")
NL("\n")
@@ -280,5 +280,470 @@ File: kt48546Strict.kt - a7a853fef944a472ac525d5e5072e45c
NL("\n")
RCURL("}")
NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("intResult")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i1")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("intResult")
+ assignmentAndOperator
+ ADD_ASSIGNMENT("+=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i1")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i2")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("intResult")
+ assignmentAndOperator
+ SUB_ASSIGNMENT("-=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i2")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i3")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("intResult")
+ assignmentAndOperator
+ MULT_ASSIGNMENT("*=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i3")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i4")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("intResult")
+ assignmentAndOperator
+ DIV_ASSIGNMENT("/=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i4")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("i5")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ assignableExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("intResult")
+ assignmentAndOperator
+ MOD_ASSIGNMENT("%=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i5")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/noInferenceFromGetValueThroughSetValue.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/noInferenceFromGetValueThroughSetValue.antlrtree.txt
new file mode 100644
index 000000000..a3902ad4d
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/noInferenceFromGetValueThroughSetValue.antlrtree.txt
@@ -0,0 +1,559 @@
+File: noInferenceFromGetValueThroughSetValue.kt - 18583b191d80d7b8bc717db38b2f6255
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("M")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("X")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("X")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("value")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Z")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Z")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("setValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Z")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("U")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("m")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("U")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("M")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("m")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("m")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("takeString")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("takeString")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("a")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("takeString")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("b")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/noInferenceFromWrappedDelegate.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/noInferenceFromWrappedDelegate.antlrtree.txt
new file mode 100644
index 000000000..c2841811d
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/noInferenceFromWrappedDelegate.antlrtree.txt
@@ -0,0 +1,364 @@
+File: noInferenceFromWrappedDelegate.kt - 6691502163f006260e70edba87566e05
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("State")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("S")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAR("var")
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("S")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("State")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("M")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("remember")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("block")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("block")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("list")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("remember")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("State")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ RPAREN(")")
+ RCURL("}")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("first")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("first")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/noPreliminarySetterInferenceForImplicitlyTypedVar.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/noPreliminarySetterInferenceForImplicitlyTypedVar.antlrtree.txt
new file mode 100644
index 000000000..f1498b947
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/noPreliminarySetterInferenceForImplicitlyTypedVar.antlrtree.txt
@@ -0,0 +1,595 @@
+File: noPreliminarySetterInferenceForImplicitlyTypedVar.kt - 4abe4d6131ae04f1a93ce47b6f29f6b4
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("M")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PUBLIC("public")
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("X")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("X")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ OUT("out")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("X")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Y")
+ functionBody
+ ASSIGNMENT("=")
+ NL("\n")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PUBLIC("public")
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Z")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Z")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("setValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Z")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("U")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("m")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("u")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("U")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("M")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("U")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("m")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("mutableMapOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ simpleIdentifier
+ Identifier("to")
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("b")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("23")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("and")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/provideDelegate/notNullAssertionInLocalDelegated.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/notNullAssertionInLocalDelegated.antlrtree.txt
new file mode 100644
index 000000000..18626aeec
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/notNullAssertionInLocalDelegated.antlrtree.txt
@@ -0,0 +1,634 @@
+File: notNullAssertionInLocalDelegated.kt - b1b9c2346e34009f582fbea16f0d3053
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ DATA("data")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ref")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("D")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("D")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("GenericDelegate")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("G")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("G")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("provideDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("p")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("GenericDelegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GenericDelegate")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("t")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("W")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("GenericDelegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("W")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("p")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("W")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ RSQUARE("]")
+ asOperator
+ AS("as")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("list")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Ref")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ DATA("data")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("data2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("list")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("getElement")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/provideDelegate/onObject.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/onObject.antlrtree.txt
new file mode 100644
index 000000000..c4ef76dfb
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/onObject.antlrtree.txt
@@ -0,0 +1,217 @@
+File: onObject.kt - cdaddf381eb681be9d29654ea37e8c78
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ objectDeclaration
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("O")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("provideDelegate")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("C")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("O")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/provideDelegate/overloadResolutionForSeveralProvideDelegates.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/overloadResolutionForSeveralProvideDelegates.antlrtree.txt
index 10c384119..e8345ba33 100644
--- a/grammar/testData/diagnostics/delegatedProperty/provideDelegate/overloadResolutionForSeveralProvideDelegates.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/overloadResolutionForSeveralProvideDelegates.antlrtree.txt
@@ -1,5 +1,4 @@
-File: overloadResolutionForSeveralProvideDelegates.kt - 68aeeaab38d479a6e3d76b3a5de14f63
- NL("\n")
+File: overloadResolutionForSeveralProvideDelegates.kt - 8885573dc4dc9ec75796010c68faae28
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/delegatedProperty/provideDelegate/unsupportedOperatorProvideDelegate.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/provideDelegate/unsupportedOperatorProvideDelegate.antlrtree.txt
deleted file mode 100644
index ee5aa4fa8..000000000
--- a/grammar/testData/diagnostics/delegatedProperty/provideDelegate/unsupportedOperatorProvideDelegate.antlrtree.txt
+++ /dev/null
@@ -1,385 +0,0 @@
-File: unsupportedOperatorProvideDelegate.kt - 1412269f97e4f0931227eb65e7832b99
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("WrongDelegate")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- functionModifier
- OPERATOR("operator")
- FUN("fun")
- simpleIdentifier
- Identifier("getValue")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("thisRef")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- quest
- QUEST_NO_WS("?")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("prop")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- RPAREN(")")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("x")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- functionModifier
- OPERATOR("operator")
- FUN("fun")
- receiverType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- DOT(".")
- simpleIdentifier
- Identifier("provideDelegate")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("thisRef")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- quest
- QUEST_NO_WS("?")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("prop")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("WrongDelegate")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("this")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("length")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- modifiers
- modifier
- functionModifier
- OPERATOR("operator")
- FUN("fun")
- receiverType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- DOT(".")
- simpleIdentifier
- Identifier("getValue")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("thisRef")
- COLON(":")
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- quest
- QUEST_NO_WS("?")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("prop")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- thisExpression
- THIS("this")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("test1")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- propertyDelegate
- BY("by")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("OK")
- QUOTE_CLOSE(""")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("test2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- propertyDelegate
- BY("by")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("OK")
- QUOTE_CLOSE(""")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("test3")
- propertyDelegate
- BY("by")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- lineStringContent
- LineStrText("OK")
- QUOTE_CLOSE(""")
- NL("\n")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/recursiveType.reversed.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/recursiveType.reversed.antlrtree.txt
new file mode 100644
index 000000000..7c1e3e3b9
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/recursiveType.reversed.antlrtree.txt
@@ -0,0 +1,285 @@
+File: recursiveType.reversed.kt - 41f7b956ac9245afd41eda87c464d384
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Delegate")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("c")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Delegate")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("p")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegatedProperty/useTypeParameterOfExtensionProperty2.antlrtree.txt b/grammar/testData/diagnostics/delegatedProperty/useTypeParameterOfExtensionProperty2.antlrtree.txt
new file mode 100644
index 000000000..9add9015e
--- /dev/null
+++ b/grammar/testData/diagnostics/delegatedProperty/useTypeParameterOfExtensionProperty2.antlrtree.txt
@@ -0,0 +1,1040 @@
+File: useTypeParameterOfExtensionProperty2.kt - 8203e263401aed558b84b973383f1746
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("properties")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("logged")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("getter")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ NL("\n")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ReadOnlyProperty")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("V")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("thisRef")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ PROPERTY("property")
+ ARROW("->")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("println")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("Getter for ")
+ lineStringContent
+ LineStrRef("$property")
+ lineStringContent
+ LineStrText(" is invoked")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("getter")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("thisRef")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("second")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("logged")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RSQUARE("]")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Delegate")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ simpleIdentifier
+ Identifier("fn")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("cache")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ quest
+ QUEST_WS("? ")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ OPERATOR("operator")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getValue")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("thisRef")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("kProperty")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ NL("\n")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("cache")
+ elvis
+ QUEST_NO_WS("?")
+ COLON(":")
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("fn")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("thisRef")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("also")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ Identifier("cache")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("leakingT")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Delegate")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ postfixUnarySuffix
+ indexingSuffix
+ LSQUARE("[")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ RSQUARE("]")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("println")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("listOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("xx")
+ QUOTE_CLOSE(""")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("yy")
+ QUOTE_CLOSE(""")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("zz")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("leakingT")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("arrayListOf")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("3")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("add")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("leakingT")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("println")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegation/kt48546.antlrtree.txt b/grammar/testData/diagnostics/delegation/kt48546.antlrtree.txt
index 20b2fee6c..ed9a3225f 100644
--- a/grammar/testData/diagnostics/delegation/kt48546.antlrtree.txt
+++ b/grammar/testData/diagnostics/delegation/kt48546.antlrtree.txt
@@ -1,4 +1,4 @@
-File: kt48546.kt - 2a297a262f0e27d1eb5a30ffa3d4049f
+File: kt48546.kt - d95dd5d75d439efaf57dd28911d2eaab
NL("\n")
NL("\n")
packageHeader
@@ -145,4 +145,6 @@ File: kt48546.kt - 2a297a262f0e27d1eb5a30ffa3d4049f
RCURL("}")
NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/delegation/kt49477.reversed.antlrtree.txt b/grammar/testData/diagnostics/delegation/kt49477.reversed.antlrtree.txt
new file mode 100644
index 000000000..50c0dd41c
--- /dev/null
+++ b/grammar/testData/diagnostics/delegation/kt49477.reversed.antlrtree.txt
@@ -0,0 +1,940 @@
+File: kt49477.reversed.kt - 9183ffd9dfdbacc4393ecb851212311b
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("properties")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ReadWriteProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty1")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ reificationModifier
+ REIFIED("reified")
+ simpleIdentifier
+ Identifier("Self")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ COMMA(",")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ reificationModifier
+ REIFIED("reified")
+ simpleIdentifier
+ Identifier("Target")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ DOT(".")
+ simpleIdentifier
+ Identifier("parent")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty1")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MutableCollection")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ COMMA(",")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("GitLabBuildProcessor")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("processor")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("parent")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GitLabChangesProcessor")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("buildProcessors")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Entity")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("ResourceFactory")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("ValueFilter")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("K")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Delegate")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadWriteProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ COMMA(",")
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ValueFilter")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("name")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("desc")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ BY("by")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("name")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("resource")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("factory")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ResourceFactory")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("filter")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("filter")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("GitLabChangesProcessor")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("buildProcessors")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("child_many")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GitLabBuildProcessor")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("java")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GitLabBuildProcessor")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("processor")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Self")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Target")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ DOT(".")
+ simpleIdentifier
+ Identifier("child_many")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("clazz")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Class")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty1")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ COMMA(",")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("name")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ PROPERTY("property")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("name")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MutableCollection")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ RANGLE(">")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegation/kt49477Error.reversed.antlrtree.txt b/grammar/testData/diagnostics/delegation/kt49477Error.reversed.antlrtree.txt
new file mode 100644
index 000000000..5fb7bd23e
--- /dev/null
+++ b/grammar/testData/diagnostics/delegation/kt49477Error.reversed.antlrtree.txt
@@ -0,0 +1,941 @@
+File: kt49477Error.reversed.kt - 904f46fadb092dd07e34c74b4085f912
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("properties")
+ DOT(".")
+ simpleIdentifier
+ Identifier("ReadWriteProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("kotlin")
+ DOT(".")
+ simpleIdentifier
+ Identifier("reflect")
+ DOT(".")
+ simpleIdentifier
+ Identifier("KProperty1")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ reificationModifier
+ REIFIED("reified")
+ simpleIdentifier
+ Identifier("Self")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ COMMA(",")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ reificationModifier
+ REIFIED("reified")
+ simpleIdentifier
+ Identifier("Target")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ DOT(".")
+ simpleIdentifier
+ Identifier("parent")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty1")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MutableCollection")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ RANGLE(">")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ COMMA(",")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("GitLabBuildProcessor")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("processor")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("parent")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GitLabChangesProcessor")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("buildProcessors")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Entity")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("ResourceFactory")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("ValueFilter")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("K")
+ RANGLE(">")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Delegate")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ReadWriteProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ COMMA(",")
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ValueFilter")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("name")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("desc")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ BY("by")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("name")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("resource")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("factory")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ResourceFactory")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INFIX("infix")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("filter")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("filter")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("GitLabChangesProcessor")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("buildProcessors")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("child_many")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GitLabBuildProcessor")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("class")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("java")
+ COMMA(",")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("GitLabBuildProcessor")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("processor")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("Self")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("Target")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DatabaseEntity")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ DOT(".")
+ simpleIdentifier
+ Identifier("child_many")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("clazz")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Class")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ PROPERTY("property")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KProperty1")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ COMMA(",")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("name")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ PROPERTY("property")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("name")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Delegate")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Self")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MutableCollection")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Target")
+ RANGLE(">")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("TODO")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/delegationTypeMismatch.antlrtree.txt b/grammar/testData/diagnostics/delegationTypeMismatch.antlrtree.txt
new file mode 100644
index 000000000..7d2fc8e0b
--- /dev/null
+++ b/grammar/testData/diagnostics/delegationTypeMismatch.antlrtree.txt
@@ -0,0 +1,187 @@
+File: delegationTypeMismatch.kt - 2500103588c4cae3ff183b94a19e7cc1
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("B2")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("d")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B")
+ RPAREN(")")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ explicitDelegation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("B2")
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("C")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("B")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedCompanionAndClassReference.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedCompanionAndClassReference.antlrtree.txt
new file mode 100644
index 000000000..906735c35
--- /dev/null
+++ b/grammar/testData/diagnostics/deprecated/deprecatedCompanionAndClassReference.antlrtree.txt
@@ -0,0 +1,140 @@
+File: deprecatedCompanionAndClassReference.kt - 02fbde6846a328d759f9ef63cd7a137d
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Deprecated")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("Deprecated companion")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
+ COMPANION("companion")
+ OBJECT("object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ CLASS("class")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedConstructor.C.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedConstructor.C.antlrtree.txt
index 766201fa1..2e95e803d 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedConstructor.C.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedConstructor.C.antlrtree.txt
@@ -1,9 +1,13 @@
-File: deprecatedConstructor.C.kt - 67665900b3a8d0cc4b0c25c5a06db430
+File: deprecatedConstructor.C.kt - 9bd661e3f5dad749eb14fb220f93567b
packageHeader
importList
topLevelObject
declaration
classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
CLASS("class")
simpleIdentifier
Identifier("C")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedConstructor.use.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedConstructor.use.antlrtree.txt
index 8c8abd7f0..e18bf2a75 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedConstructor.use.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedConstructor.use.antlrtree.txt
@@ -1,6 +1,48 @@
-File: deprecatedConstructor.use.kt - 080c5b8ca785056b85b7e912a4a95957
+File: deprecatedConstructor.use.kt - 959d7b88e81b3303479aea9e44caee83
packageHeader
importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("D")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("C")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
functionDeclaration
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedConstructorProperty.A.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedConstructorProperty.A.antlrtree.txt
new file mode 100644
index 000000000..a99554df0
--- /dev/null
+++ b/grammar/testData/diagnostics/deprecated/deprecatedConstructorProperty.A.antlrtree.txt
@@ -0,0 +1,129 @@
+File: deprecatedConstructorProperty.A.kt - f163bf22b0621919ed9afdeae75cedc4
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ modifiers
+ annotation
+ singleAnnotation
+ AT_NO_WS("@")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Deprecated")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ VAL("val")
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ secondaryConstructor
+ CONSTRUCTOR("constructor")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ COLON(":")
+ constructorDelegationCall
+ THIS("this")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("toString")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RPAREN(")")
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedConstructorProperty.use.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedConstructorProperty.use.antlrtree.txt
new file mode 100644
index 000000000..65b96ebe8
--- /dev/null
+++ b/grammar/testData/diagnostics/deprecated/deprecatedConstructorProperty.use.antlrtree.txt
@@ -0,0 +1,125 @@
+File: deprecatedConstructorProperty.use.kt - 423e26ef353f21c87c39df995dfa1dfe
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("use")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("s")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedEnumEntry.A.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedEnumEntry.A.antlrtree.txt
new file mode 100644
index 000000000..75681b945
--- /dev/null
+++ b/grammar/testData/diagnostics/deprecated/deprecatedEnumEntry.A.antlrtree.txt
@@ -0,0 +1,66 @@
+File: deprecatedEnumEntry.A.kt - d973bd6a38b779b9dad00d8fa5bc7878
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Deprecated")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
+ simpleIdentifier
+ Identifier("DeprecatedEntry")
+ COMMA(",")
+ NL("\n")
+ enumEntry
+ simpleIdentifier
+ Identifier("RegularEntry")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedEnumEntry.use.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedEnumEntry.use.antlrtree.txt
new file mode 100644
index 000000000..d3b08a4e0
--- /dev/null
+++ b/grammar/testData/diagnostics/deprecated/deprecatedEnumEntry.use.antlrtree.txt
@@ -0,0 +1,75 @@
+File: deprecatedEnumEntry.use.kt - 6bd0da79394e81a1225fbaa48438cfda
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("use")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("DeprecatedEntry")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("RegularEntry")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedField.use.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedField.use.antlrtree.txt
new file mode 100644
index 000000000..cb3051b64
--- /dev/null
+++ b/grammar/testData/diagnostics/deprecated/deprecatedField.use.antlrtree.txt
@@ -0,0 +1,86 @@
+File: deprecatedField.use.kt - a3daba07399d5474a6fe3c5e4ca24791
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("use")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("j")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JavaClass")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("j")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("deprecatedField")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("j")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("regularField")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedInheritance.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedInheritance.antlrtree.txt
deleted file mode 100644
index 869df647f..000000000
--- a/grammar/testData/diagnostics/deprecated/deprecatedInheritance.antlrtree.txt
+++ /dev/null
@@ -1,2024 +0,0 @@
-File: deprecatedInheritance.kt - fb5d417f2f4b30cff77dc5fd4f5f673e
- packageHeader
- PACKAGE("package")
- identifier
- simpleIdentifier
- Identifier("foo")
- semi
- NL("\n")
- NL("\n")
- importList
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("WarningDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("WARNING")
- RPAREN(")")
- NL("\n")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("ErrorDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("ERROR")
- RPAREN(")")
- NL("\n")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("HIDDEN")
- RPAREN(")")
- NL("\n")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("NotDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("WE")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("WH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("EH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("NW")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NotDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("NE")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NotDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("NH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NotDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("WEH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("NWEH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NotDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("WE2")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WE")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("NWE2")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WE")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NotDeprecated")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("NWE3")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WE")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NotDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("E2")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- semis
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("W2")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("EW2")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("E2")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("W2")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("HEW2")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("EW2")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("ExplicitError")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HEW2")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("ERROR")
- RPAREN(")")
- NL("\n")
- modifier
- memberModifier
- OVERRIDE("override")
- FUN("fun")
- simpleIdentifier
- Identifier("f")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- superExpression
- SUPER("super")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("use")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("wd")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("ed")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("hd")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("we")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WE")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("wh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("eh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("EH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("nw")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NW")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("ne")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NE")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("nh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("weh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WEH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("nweh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NWEH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("we2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WE2")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("nwe2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NWE2")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("nwe3")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NWE3")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("e2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("E2")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("w2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("W2")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("ew2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("EW2")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("hew2")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HEW2")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("explicitError")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ExplicitError")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("wd")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ed")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("hd")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("we")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("wh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("eh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("nw")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ne")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("nh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("weh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("nweh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("we2")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("nwe2")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("nwe3")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("e2")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("w2")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ew2")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("hew2")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("explicitError")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("f")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedPropertyInheritance.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedPropertyInheritance.antlrtree.txt
deleted file mode 100644
index 27972adc2..000000000
--- a/grammar/testData/diagnostics/deprecated/deprecatedPropertyInheritance.antlrtree.txt
+++ /dev/null
@@ -1,2420 +0,0 @@
-File: deprecatedPropertyInheritance.kt - e5102dc957b03937cc1c239a1fb68a80
- packageHeader
- PACKAGE("package")
- identifier
- simpleIdentifier
- Identifier("foo")
- semi
- NL("\n")
- NL("\n")
- importList
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("HIDDEN")
- RPAREN(")")
- NL("\n")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("NoDeprecation")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("WarningDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("WARNING")
- RPAREN(")")
- NL("\n")
- modifier
- inheritanceModifier
- OPEN("open")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("ErrorDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("ERROR")
- RPAREN(")")
- NL("\n")
- modifier
- inheritanceModifier
- OPEN("open")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("GetterDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- getter
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- RPAREN(")")
- GET("get")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- CLASS("class")
- simpleIdentifier
- Identifier("SetterDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- inheritanceModifier
- OPEN("open")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- RPAREN(")")
- SET("set")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("WD")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("ED")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("GD")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("GetterDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("SD")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("SetterDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("SDH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("SetterDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("EDH")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("NED")
- COLON(":")
- delegationSpecifiers
- annotatedDelegationSpecifier
- delegationSpecifier
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- valueArguments
- LPAREN("(")
- RPAREN(")")
- COMMA(",")
- annotatedDelegationSpecifier
- delegationSpecifier
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NoDeprecation")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- modifier
- memberModifier
- OVERRIDE("override")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("Diff")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("WARNING")
- RPAREN(")")
- NL("\n")
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("p")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- NL("\n")
- getter
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("ERROR")
- RPAREN(")")
- GET("get")
- LPAREN("(")
- RPAREN(")")
- functionBody
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("3")
- NL("\n")
- setter
- modifiers
- annotation
- singleAnnotation
- AT_PRE_WS(" @")
- unescapedAnnotation
- constructorInvocation
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Deprecated")
- valueArguments
- LPAREN("(")
- valueArgument
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- COMMA(",")
- valueArgument
- simpleIdentifier
- Identifier("level")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("DeprecationLevel")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("HIDDEN")
- RPAREN(")")
- SET("set")
- LPAREN("(")
- functionValueParameterWithOptionalType
- parameterWithOptionalType
- simpleIdentifier
- VALUE("value")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- NL("\n")
- statements
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("use")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("warningDeprecated")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WarningDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("errorDeprecated")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ErrorDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("setterDeprecated")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("SetterDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("getterDeprecated")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("GetterDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("hiddenDeprecated")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("HiddenDeprecated")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("wd")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("WD")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("ed")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("ED")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("gd")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("GD")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("sd")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("SD")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("sdh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("SDH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("edh")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("EDH")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("ned")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("NED")
- COMMA(",")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("diff")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Diff")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("warningDeprecated")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("warningDeprecated")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("errorDeprecated")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("errorDeprecated")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("getterDeprecated")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("getterDeprecated")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("setterDeprecated")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("setterDeprecated")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("hiddenDeprecated")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("hiddenDeprecated")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("wd")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("wd")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ed")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ed")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("gd")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("gd")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("sd")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("sd")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("sdh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("sdh")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("edh")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("edh")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ned")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("ned")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("diff")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("diff")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("p")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- IntegerLiteral("1")
- semis
- NL("\n")
- RCURL("}")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinHiddenOnReferenceArgument.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinHiddenOnReferenceArgument.antlrtree.txt
index 155bbc4bc..aa4a63386 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinHiddenOnReferenceArgument.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinHiddenOnReferenceArgument.antlrtree.txt
@@ -1,4 +1,5 @@
-File: deprecatedSinceKotlinHiddenOnReferenceArgument.kt - 110e39a528fd0e9b2568ae3712a4b74d
+File: deprecatedSinceKotlinHiddenOnReferenceArgument.kt - 6a4ee4f0309297022d2bd67cf4ffe864
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinWithoutArguments.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinWithoutArguments.antlrtree.txt
index 9c4be3e7c..93a5d5036 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinWithoutArguments.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/deprecatedSinceKotlinWithoutArguments.antlrtree.txt
@@ -1,4 +1,5 @@
-File: deprecatedSinceKotlinWithoutArguments.kt - 0eda659dc93fac79807f8bf0f4d33f9d
+File: deprecatedSinceKotlinWithoutArguments.kt - 01a8bdad836f1f4c5fb167048a5f46ec
+ NL("\n")
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/error.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/error.antlrtree.txt
index 2b094773b..22fadafc6 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/error.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/error.antlrtree.txt
@@ -1,4 +1,6 @@
-File: error.kt - 066ac3cdfbe9137d8a75771b933f2f95
+File: error.kt - 045ab9ba958618f2665108dc6676f7f5
+ NL("\n")
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/hidden.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/hidden.antlrtree.txt
index 03c26abcf..c8d24c67b 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/hidden.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/hidden.antlrtree.txt
@@ -1,4 +1,5 @@
-File: hidden.kt - 29dbc5130fa735a601b3cb5e53c8faf4
+File: hidden.kt - 656260816d1d50b30230dfae4056c3a5
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.antlrtree.txt
index 63f3c4cb2..69775e707 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.antlrtree.txt
@@ -1,4 +1,6 @@
-File: messageFromDeprecatedAnnotation.kt - a1823a0d64b6908ed105aa67710b770e
+File: messageFromDeprecatedAnnotation.kt - ed4e8efa36d2f33d8d98337a5ee632e8
+ NL("\n")
+ NL("\n")
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/warning.antlrtree.txt b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/warning.antlrtree.txt
index d6fb57c5a..fe2e4e313 100644
--- a/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/warning.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/deprecatedSinceKotlin/warning.antlrtree.txt
@@ -1,4 +1,5 @@
-File: warning.kt - 98ea224606ab331fd1070735fb566f6f
+File: warning.kt - a5066d50cc36cada92261929025e42e8
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/deprecated/genericConstructorUsage.antlrtree.txt b/grammar/testData/diagnostics/deprecated/genericConstructorUsage.antlrtree.txt
index 5072d3ba7..a3434996e 100644
--- a/grammar/testData/diagnostics/deprecated/genericConstructorUsage.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/genericConstructorUsage.antlrtree.txt
@@ -1,4 +1,5 @@
-File: genericConstructorUsage.kt - 7143ddbf7d0d9120141cf69e00094f16
+File: genericConstructorUsage.kt - e0ef8618f6b042a35bc26a10238f2efc
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/deprecated/typealiasConstructor.antlrtree.txt b/grammar/testData/diagnostics/deprecated/typealiasConstructor.antlrtree.txt
index a7658cce3..80d429b60 100644
--- a/grammar/testData/diagnostics/deprecated/typealiasConstructor.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/typealiasConstructor.antlrtree.txt
@@ -1,4 +1,4 @@
-File: typealiasConstructor.kt - cff54a735b116bf135eac101fba42d71
+File: typealiasConstructor.kt - 017a743e8e615a1b8805098ac2112596
packageHeader
importList
topLevelObject
@@ -281,4 +281,5 @@ File: typealiasConstructor.kt - cff54a735b116bf135eac101fba42d71
valueArguments
LPAREN("(")
RPAREN(")")
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/deprecated/typealiasForDeprecatedClass.antlrtree.txt b/grammar/testData/diagnostics/deprecated/typealiasForDeprecatedClass.antlrtree.txt
index a1581940c..99fb05c26 100644
--- a/grammar/testData/diagnostics/deprecated/typealiasForDeprecatedClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/deprecated/typealiasForDeprecatedClass.antlrtree.txt
@@ -1,4 +1,4 @@
-File: typealiasForDeprecatedClass.kt - 8148ce862cda3e1481ac1eefe279fb9d
+File: typealiasForDeprecatedClass.kt - 8a9d03a274d79c2a839604df8eda8a86
packageHeader
importList
topLevelObject
@@ -7,7 +7,7 @@ File: typealiasForDeprecatedClass.kt - 8148ce862cda3e1481ac1eefe279fb9d
modifiers
annotation
singleAnnotation
- AT_NO_WS("@")
+ AT_PRE_WS("\n@")
unescapedAnnotation
constructorInvocation
userType
diff --git a/grammar/testData/diagnostics/derivedIntersectionPropertyShadowsBaseClassField.test.antlrtree.txt b/grammar/testData/diagnostics/derivedIntersectionPropertyShadowsBaseClassField.test.antlrtree.txt
new file mode 100644
index 000000000..b2c4f790f
--- /dev/null
+++ b/grammar/testData/diagnostics/derivedIntersectionPropertyShadowsBaseClassField.test.antlrtree.txt
@@ -0,0 +1,170 @@
+File: derivedIntersectionPropertyShadowsBaseClassField.test.kt - ac75347ee0e7af8e97df03a6f6d11ab4
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Proxy")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Intermediate")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText(" ")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Proxy")
+ COMMA(",")
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Intermediate")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/differentNumericTypesFromSmartCast.antlrtree.txt b/grammar/testData/diagnostics/differentNumericTypesFromSmartCast.antlrtree.txt
new file mode 100644
index 000000000..f3edc8376
--- /dev/null
+++ b/grammar/testData/diagnostics/differentNumericTypesFromSmartCast.antlrtree.txt
@@ -0,0 +1,197 @@
+File: differentNumericTypesFromSmartCast.kt - f8910b54b3b22613940a633f460621f6
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ NL("\n")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Float")
+ CONJ("&&")
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Double")
+ CONJ("&&")
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Float")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Double")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ NL("\n")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.antlrtree.txt b/grammar/testData/diagnostics/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.antlrtree.txt
index b5ab76e34..c1330bb3d 100644
--- a/grammar/testData/diagnostics/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.antlrtree.txt
+++ b/grammar/testData/diagnostics/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.antlrtree.txt
@@ -1,4 +1,5 @@
-File: enumMembers.kt - 920a215ba99082cce8a26974fae57d54
+File: enumMembers.kt - 23cc69629c8ca38c95654315c7c059bc
+ NL("\n")
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/enum/AbstractInEnum.antlrtree.txt b/grammar/testData/diagnostics/enum/AbstractInEnum.antlrtree.txt
index 1fb3f5700..707fa9e7a 100644
--- a/grammar/testData/diagnostics/enum/AbstractInEnum.antlrtree.txt
+++ b/grammar/testData/diagnostics/enum/AbstractInEnum.antlrtree.txt
@@ -1,4 +1,4 @@
-File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
+File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560
packageHeader
PACKAGE("package")
identifier
@@ -196,8 +196,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
modifiers
modifier
@@ -269,8 +268,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
modifiers
modifier
@@ -373,8 +371,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
SET("set")
LPAREN("(")
@@ -522,8 +519,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
SET("set")
LPAREN("(")
@@ -644,8 +640,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
GET("get")
LPAREN("(")
@@ -753,8 +748,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
GET("get")
LPAREN("(")
@@ -908,18 +902,19 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
modifiers
modifier
inheritanceModifier
ABSTRACT("abstract")
GET("get")
- classMemberDeclaration
- classMemberDeclaration
- ABSTRACT("abstract")
- SET("set")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
semis
NL("\n")
NL("\n")
@@ -1004,8 +999,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
GET("get")
LPAREN("(")
@@ -1030,12 +1024,14 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
simpleIdentifier
Identifier("i")
- semis
- SEMICOLON(";")
- classMemberDeclaration
- classMemberDeclaration
- ABSTRACT("abstract")
- SET("set")
+ semi
+ SEMICOLON(";")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
semis
NL("\n")
NL("\n")
@@ -1094,8 +1090,7 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
setter
modifiers
modifier
@@ -1166,18 +1161,19 @@ File: AbstractInEnum.kt - 3122735d29c6652627ec7162de9bb560 (WITH_ERRORS)
primaryExpression
literalConstant
IntegerLiteral("0")
- semi
- SEMICOLON(";")
+ SEMICOLON(";")
getter
modifiers
modifier
inheritanceModifier
ABSTRACT("abstract")
GET("get")
- classMemberDeclaration
- classMemberDeclaration
- ABSTRACT("abstract")
- SET("set")
+ setter
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ SET("set")
semis
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/enum/declaringClass.antlrtree.txt b/grammar/testData/diagnostics/enum/declaringClass.antlrtree.txt
index ea607a6ad..63283d2d1 100644
--- a/grammar/testData/diagnostics/enum/declaringClass.antlrtree.txt
+++ b/grammar/testData/diagnostics/enum/declaringClass.antlrtree.txt
@@ -1,4 +1,4 @@
-File: declaringClass.kt - 4ded203a62d4c4187dfa08fc0565274f
+File: declaringClass.kt - 9c38a4533e70f3b441b5026fbcaa93d0
NL("\n")
NL("\n")
NL("\n")
@@ -18,6 +18,77 @@ File: declaringClass.kt - 4ded203a62d4c4187dfa08fc0565274f
semi
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("SomeEnum")
+ enumClassBody
+ LCURL("{")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("A")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SomeEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("declaringClass")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
topLevelObject
declaration
functionDeclaration
diff --git a/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReference.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReference.antlrtree.txt
new file mode 100644
index 000000000..5c4573e9e
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReference.antlrtree.txt
@@ -0,0 +1,233 @@
+File: conflictingPropertyEntriesAndReference.kt - d3dc5a350eb4e7575be343b55689b89b
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("ref")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("refType")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("refTypeWithAnyExpectedType")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReferenceOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReferenceOn.antlrtree.txt
new file mode 100644
index 000000000..59bed9521
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReferenceOn.antlrtree.txt
@@ -0,0 +1,234 @@
+File: conflictingPropertyEntriesAndReferenceOn.kt - 849857d361665c91bfc93cade8a31c0d
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("ref")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("refType")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("refTypeWithAnyExpectedType")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.antlrtree.txt
new file mode 100644
index 000000000..2e0f8677f
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/conflictingPropertyEntriesAndReferencePrioritized.antlrtree.txt
@@ -0,0 +1,234 @@
+File: conflictingPropertyEntriesAndReferencePrioritized.kt - 24186690edf3bc21538bdb63f7b357c1
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("ref")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("refType")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("refTypeWithAnyExpectedType")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClash.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClash.antlrtree.txt
new file mode 100644
index 000000000..a3667d46e
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClash.antlrtree.txt
@@ -0,0 +1,409 @@
+File: entriesPropertyAsExtensionClash.kt - d47657d42ed1e241d0754b73ae6b90b1
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aCompanion")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("aCompanion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClashOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClashOn.antlrtree.txt
new file mode 100644
index 000000000..c136e930b
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClashOn.antlrtree.txt
@@ -0,0 +1,412 @@
+File: entriesPropertyAsExtensionClashOn.kt - 2eb0580613cabe636a5592f997823af1
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aCompanion")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("aCompanion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClashPrioritized.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClashPrioritized.antlrtree.txt
new file mode 100644
index 000000000..a99d6f6ac
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyAsExtensionClashPrioritized.antlrtree.txt
@@ -0,0 +1,412 @@
+File: entriesPropertyAsExtensionClashPrioritized.kt - d9499e1d3d2f291294e11f3e2538a3c5
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleUserType
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aCompanion")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("aCompanion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClash.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClash.antlrtree.txt
new file mode 100644
index 000000000..0de079258
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClash.antlrtree.txt
@@ -0,0 +1,207 @@
+File: entriesPropertyImportedClash.kt - f1258bf5d824a0c330768f286ccd1c55
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClashOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClashOn.antlrtree.txt
new file mode 100644
index 000000000..98f6c6fc3
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClashOn.antlrtree.txt
@@ -0,0 +1,208 @@
+File: entriesPropertyImportedClashOn.kt - 143bfb9452efc787296963b103a56024
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClashPrioritized.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClashPrioritized.antlrtree.txt
new file mode 100644
index 000000000..654c9033c
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyImportedClashPrioritized.antlrtree.txt
@@ -0,0 +1,208 @@
+File: entriesPropertyImportedClashPrioritized.kt - d4c5add0574e574e3cfc32d10a46ac9c
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyInCompanionClash.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyInCompanionClash.antlrtree.txt
new file mode 100644
index 000000000..2d4779a14
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyInCompanionClash.antlrtree.txt
@@ -0,0 +1,410 @@
+File: entriesPropertyInCompanionClash.kt - 8902fe79df40a643c85abe1b500224a4
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("values")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aCompanion")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("aCompanion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyInCompanionClashOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyInCompanionClashOn.antlrtree.txt
new file mode 100644
index 000000000..4f32f2309
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyInCompanionClashOn.antlrtree.txt
@@ -0,0 +1,411 @@
+File: entriesPropertyInCompanionClashOn.kt - 1258a92bc4769891c1888381f81b5f77
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("values")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("aCompanion")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("aCompanion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClash.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClash.antlrtree.txt
new file mode 100644
index 000000000..8436b307e
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClash.antlrtree.txt
@@ -0,0 +1,227 @@
+File: entriesPropertyWithJvmStaticClash.kt - ffe3fefda2a847c412db421294a240a3
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmStatic")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClashOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClashOn.antlrtree.txt
new file mode 100644
index 000000000..bf66de4cd
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClashOn.antlrtree.txt
@@ -0,0 +1,228 @@
+File: entriesPropertyWithJvmStaticClashOn.kt - 65f801a3d0d90d68c79b20a84d7ae3de
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmStatic")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.antlrtree.txt
new file mode 100644
index 000000000..4786e32fb
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesPropertyWithJvmStaticClashPrioritized.antlrtree.txt
@@ -0,0 +1,228 @@
+File: entriesPropertyWithJvmStaticClashPrioritized.kt - 0792f9eaf2d51b709342bdfb5d127e7a
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ annotation
+ singleAnnotation
+ AT_PRE_WS(" @")
+ unescapedAnnotation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JvmStatic")
+ NL("\n")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/entriesUnsupported.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/entriesUnsupported.antlrtree.txt
new file mode 100644
index 000000000..d8e0db9c2
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/entriesUnsupported.antlrtree.txt
@@ -0,0 +1,76 @@
+File: entriesUnsupported.kt - 1bbe019c5d6039b7f111e5ddc188bbab
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("BAR")
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclarations
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Foo")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/enumEntriesAmbiguity.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/enumEntriesAmbiguity.antlrtree.txt
new file mode 100644
index 000000000..3ec50f627
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/enumEntriesAmbiguity.antlrtree.txt
@@ -0,0 +1,75 @@
+File: enumEntriesAmbiguity.kt - 42c603529958138c258b83379c7e8b13
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Ambiguous")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("first")
+ COMMA(",")
+ enumEntry
+ simpleIdentifier
+ Identifier("entries")
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclarations
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Ambiguous")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("ordinal")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/genericEntriesPropertyClash.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/genericEntriesPropertyClash.antlrtree.txt
new file mode 100644
index 000000000..bd629f500
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/genericEntriesPropertyClash.antlrtree.txt
@@ -0,0 +1,172 @@
+File: genericEntriesPropertyClash.kt - 8417e5afd6862b889120dc563203ea5e
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/genericEntriesPropertyClashOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/genericEntriesPropertyClashOn.antlrtree.txt
new file mode 100644
index 000000000..2ddb85de8
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/genericEntriesPropertyClashOn.antlrtree.txt
@@ -0,0 +1,173 @@
+File: genericEntriesPropertyClashOn.kt - 23a7c48fc63f3d2807950212c87cc18e
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("Companion")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/javaEnumEntriesAmbiguity.test.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/javaEnumEntriesAmbiguity.test.antlrtree.txt
new file mode 100644
index 000000000..572cffb45
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/javaEnumEntriesAmbiguity.test.antlrtree.txt
@@ -0,0 +1,103 @@
+File: javaEnumEntriesAmbiguity.test.kt - 43fa99876e2be378b8ebec12d1febd7e
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JEnumEntry")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JEnumStaticField")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JEnumField")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/javaEnumEntriesAmbiguityOn.test.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/javaEnumEntriesAmbiguityOn.test.antlrtree.txt
new file mode 100644
index 000000000..4aa19578e
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/javaEnumEntriesAmbiguityOn.test.antlrtree.txt
@@ -0,0 +1,179 @@
+File: javaEnumEntriesAmbiguityOn.test.kt - 04c861a7de1df8e1bcf06d7b5868bbc5
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("first")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JEnumEntry")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("second")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JEnumStaticField")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("third")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("JEnumField")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("entries")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrRef("$first")
+ lineStringContent
+ LineStrRef("$second")
+ lineStringContent
+ LineStrRef("$third")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/javaFakeEnumEntries.test.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/javaFakeEnumEntries.test.antlrtree.txt
new file mode 100644
index 000000000..06480cd5c
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/javaFakeEnumEntries.test.antlrtree.txt
@@ -0,0 +1,157 @@
+File: javaFakeEnumEntries.test.kt - 01adc62849bb96799528b3ea6eedbdfa
+ packageHeader
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ DOT(".")
+ simpleIdentifier
+ Identifier("JEnumStaticField")
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ DOT(".")
+ simpleIdentifier
+ Identifier("JEnumStaticField")
+ DOT(".")
+ simpleIdentifier
+ Identifier("somethingElse")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("somethingElse")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("somethingElse")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntries.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntries.antlrtree.txt
new file mode 100644
index 000000000..05eb08e3a
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntries.antlrtree.txt
@@ -0,0 +1,353 @@
+File: nameShadowingOfExternallyDefinedEntries.kt - 6b4c857cc36071c274058b13f2f5c17e
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("E")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pckg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pckg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.antlrtree.txt
new file mode 100644
index 000000000..bdc26dd25
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntriesOn.antlrtree.txt
@@ -0,0 +1,396 @@
+File: nameShadowingOfExternallyDefinedEntriesOn.kt - c0bf0bf95197a69bfabdcb541a7e0d3b
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("E")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pckg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pckg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.antlrtree.txt
new file mode 100644
index 000000000..2d6fbf165
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/nameShadowingOfExternallyDefinedEntriesPrioritized.antlrtree.txt
@@ -0,0 +1,396 @@
+File: nameShadowingOfExternallyDefinedEntriesPrioritized.kt - 7ce1f5396c178ef3092ddb61e9225839
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pckg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("E")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pckg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("pckg")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("length")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("entries")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("4")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsic.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsic.antlrtree.txt
new file mode 100644
index 000000000..f985b980d
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsic.antlrtree.txt
@@ -0,0 +1,98 @@
+File: redeclarationOfEnumEntriesNameWithIntrinsic.kt - e9412af7ff03c52aae76800f71820d72
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("entries")
+ COMMA(",")
+ enumEntry
+ simpleIdentifier
+ Identifier("Entries")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.antlrtree.txt b/grammar/testData/diagnostics/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.antlrtree.txt
new file mode 100644
index 000000000..90025c9c1
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/entries/redeclarationOfEnumEntriesNameWithIntrinsicOn.antlrtree.txt
@@ -0,0 +1,113 @@
+File: redeclarationOfEnumEntriesNameWithIntrinsicOn.kt - 44e1908d530756a5cb789750a38c708e
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("entries")
+ COMMA(",")
+ enumEntry
+ simpleIdentifier
+ Identifier("Entries")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("ordinal")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("E")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("entries")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("ordinal")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/enumInheritance.test.antlrtree.txt b/grammar/testData/diagnostics/enum/enumInheritance.test.antlrtree.txt
index 253c59a7d..dddb4c2fe 100644
--- a/grammar/testData/diagnostics/enum/enumInheritance.test.antlrtree.txt
+++ b/grammar/testData/diagnostics/enum/enumInheritance.test.antlrtree.txt
@@ -1,4 +1,4 @@
-File: enumInheritance.test.kt - 1d83eae1ee77a52655b0955f77d518c6
+File: enumInheritance.test.kt - 3d4ed5f15a5ee68928f9afe1dd43e9cc
packageHeader
importList
topLevelObject
@@ -61,6 +61,38 @@ File: enumInheritance.test.kt - 1d83eae1ee77a52655b0955f77d518c6
RCURL("}")
semis
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("MyEnum2_1")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("MyTrait")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ classMemberDeclarations
+ RCURL("}")
+ semis
+ NL("\n")
topLevelObject
declaration
classDeclaration
diff --git a/grammar/testData/diagnostics/enum/equalityOfEnumAndParameter.antlrtree.txt b/grammar/testData/diagnostics/enum/equalityOfEnumAndParameter.antlrtree.txt
new file mode 100644
index 000000000..03318a999
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/equalityOfEnumAndParameter.antlrtree.txt
@@ -0,0 +1,1415 @@
+File: equalityOfEnumAndParameter.kt - 2bcdcf17ff0d6ddea303cc9eb0fe7122
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Buffered")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("flush")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("AIPowered")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getAvatarReleaseYear")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("BufferedEnum")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Buffered")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("A")
+ COMMA(",")
+ enumEntry
+ simpleIdentifier
+ Identifier("B")
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("flush")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("UsualEnum")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("C")
+ COMMA(",")
+ enumEntry
+ simpleIdentifier
+ Identifier("D")
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclarations
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("CleverEnum")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Buffered")
+ COMMA(",")
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("AIPowered")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ enumEntry
+ simpleIdentifier
+ Identifier("F")
+ SEMICOLON(";")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("flush")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("getAvatarReleaseYear")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("2022")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("P")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("processInfo1")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("info")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("printer")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("P")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Buffered")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("P")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("AIPowered")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("20")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BufferedEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("UsualEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("C")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("CleverEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("E")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("P")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("processInfo2")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("info")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("printer")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("P")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("AIPowered")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("P")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Buffered")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("20")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BufferedEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("UsualEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("C")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("CleverEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("E")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Printer")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("print")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("command")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("P")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("processInfo3")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("info")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("printer")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("P")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("P")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Buffered")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("P")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Printer")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("20")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("BufferedEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("UsualEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("C")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("printer")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("CleverEnum")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("E")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ equalityOperator
+ EQEQEQ("===")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("rest")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ equalityOperator
+ EQEQEQ("===")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("nest")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ equalityOperator
+ EQEQEQ("===")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("K")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("mest")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("K")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("K")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ equalityOperator
+ EQEQEQ("===")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/equalityOfFlexibleTypeParameters.B.antlrtree.txt b/grammar/testData/diagnostics/enum/equalityOfFlexibleTypeParameters.B.antlrtree.txt
new file mode 100644
index 000000000..8a81ef8de
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/equalityOfFlexibleTypeParameters.B.antlrtree.txt
@@ -0,0 +1,191 @@
+File: equalityOfFlexibleTypeParameters.B.kt - c26f949cc05e2060ab7670f8f91e085a
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("K")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("mest")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("K")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("K")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("MyHelpers")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("id")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ RPAREN(")")
+ equalityOperator
+ EQEQEQ("===")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("MyHelpers")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("id")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/enum/incompatibleEnumEntryClasses.antlrtree.txt b/grammar/testData/diagnostics/enum/incompatibleEnumEntryClasses.antlrtree.txt
index e09c8ba41..cdd1beac4 100644
--- a/grammar/testData/diagnostics/enum/incompatibleEnumEntryClasses.antlrtree.txt
+++ b/grammar/testData/diagnostics/enum/incompatibleEnumEntryClasses.antlrtree.txt
@@ -1,4 +1,5 @@
-File: incompatibleEnumEntryClasses.kt - 97650b50356cb6ee135843fe421d5908
+File: incompatibleEnumEntryClasses.kt - 3b452cacdd233744889e338d3ce5c07c
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/enum/referenceToEnumEntry.antlrtree.txt b/grammar/testData/diagnostics/enum/referenceToEnumEntry.antlrtree.txt
new file mode 100644
index 000000000..1e92a21dd
--- /dev/null
+++ b/grammar/testData/diagnostics/enum/referenceToEnumEntry.antlrtree.txt
@@ -0,0 +1,74 @@
+File: referenceToEnumEntry.kt - 34756dc2aa3528204a7aac14f2726ef5
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("My")
+ enumClassBody
+ LCURL("{")
+ enumEntries
+ enumEntry
+ simpleIdentifier
+ Identifier("V")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("ref")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("My")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("V")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/equalityComparisonToSelf.antlrtree.txt b/grammar/testData/diagnostics/equalityComparisonToSelf.antlrtree.txt
new file mode 100644
index 000000000..22e1218fe
--- /dev/null
+++ b/grammar/testData/diagnostics/equalityComparisonToSelf.antlrtree.txt
@@ -0,0 +1,114 @@
+File: equalityComparisonToSelf.kt - d46e72109783519f139d5d909de9ccb8
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("0")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/equalityWithSmartCastInIfBlock.antlrtree.txt b/grammar/testData/diagnostics/equalityWithSmartCastInIfBlock.antlrtree.txt
new file mode 100644
index 000000000..17c2ec6ed
--- /dev/null
+++ b/grammar/testData/diagnostics/equalityWithSmartCastInIfBlock.antlrtree.txt
@@ -0,0 +1,223 @@
+File: equalityWithSmartCastInIfBlock.kt - b6b12734727483ad18a43aea3eb4a479
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("i")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ CONJ("&&")
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("i")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/evaluate/binaryMinusDepOnExpType.antlrtree.txt b/grammar/testData/diagnostics/evaluate/binaryMinusDepOnExpType.antlrtree.txt
index c69a93389..73c21a0e5 100644
--- a/grammar/testData/diagnostics/evaluate/binaryMinusDepOnExpType.antlrtree.txt
+++ b/grammar/testData/diagnostics/evaluate/binaryMinusDepOnExpType.antlrtree.txt
@@ -1,5 +1,4 @@
-File: binaryMinusDepOnExpType.kt - c4ea7d87f0615dd8fb6a27410447008d
- NL("\n")
+File: binaryMinusDepOnExpType.kt - 5a306d6d00df533ad7fc5493c82d1659
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/evaluate/numberBinaryOperations.antlrtree.txt b/grammar/testData/diagnostics/evaluate/numberBinaryOperations.antlrtree.txt
index 5467c2237..cb0b8d0b7 100644
--- a/grammar/testData/diagnostics/evaluate/numberBinaryOperations.antlrtree.txt
+++ b/grammar/testData/diagnostics/evaluate/numberBinaryOperations.antlrtree.txt
@@ -1,5 +1,4 @@
-File: numberBinaryOperations.kt - 392f4210939ca193a1752a5cb63866dc
- NL("\n")
+File: numberBinaryOperations.kt - 35e1a44f9c09a84e96b94d08f5060bd5
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/evaluate/numberBinaryOperationsCall.antlrtree.txt b/grammar/testData/diagnostics/evaluate/numberBinaryOperationsCall.antlrtree.txt
index 27fa66383..fbec877a2 100644
--- a/grammar/testData/diagnostics/evaluate/numberBinaryOperationsCall.antlrtree.txt
+++ b/grammar/testData/diagnostics/evaluate/numberBinaryOperationsCall.antlrtree.txt
@@ -1,5 +1,4 @@
-File: numberBinaryOperationsCall.kt - 32a9d486e5a8422f38f64dd3e4374176
- NL("\n")
+File: numberBinaryOperationsCall.kt - 528831974a60c2acb48acdef3748ca1c
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/evaluate/numberBinaryOperationsInfixCall.antlrtree.txt b/grammar/testData/diagnostics/evaluate/numberBinaryOperationsInfixCall.antlrtree.txt
index 6694ef488..4d6b50a27 100644
--- a/grammar/testData/diagnostics/evaluate/numberBinaryOperationsInfixCall.antlrtree.txt
+++ b/grammar/testData/diagnostics/evaluate/numberBinaryOperationsInfixCall.antlrtree.txt
@@ -1,5 +1,4 @@
-File: numberBinaryOperationsInfixCall.kt - ef6221ffef78ec1f3d38d47f3426a23f
- NL("\n")
+File: numberBinaryOperationsInfixCall.kt - aa0075489ffd771f2bda908c797e2ff3
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/evaluate/parentesized.antlrtree.txt b/grammar/testData/diagnostics/evaluate/parentesized.antlrtree.txt
index ce415c28f..58a727c99 100644
--- a/grammar/testData/diagnostics/evaluate/parentesized.antlrtree.txt
+++ b/grammar/testData/diagnostics/evaluate/parentesized.antlrtree.txt
@@ -1,5 +1,4 @@
-File: parentesized.kt - 304aa0d0fd2fb469a01b9f39a9890867
- NL("\n")
+File: parentesized.kt - 30fd27632079782bbd0747fcdb08c1ab
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/approximation.antlrtree.txt b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/approximation.antlrtree.txt
index d5845af89..f1a82088e 100644
--- a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/approximation.antlrtree.txt
+++ b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/approximation.antlrtree.txt
@@ -1,4 +1,5 @@
-File: approximation.kt - 0c65ee5f9ed13de8bfc998f4d512ffcb
+File: approximation.kt - 9da100b4e645a5dbcebc59856f818d6e
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/bareTypes.antlrtree.txt b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/bareTypes.antlrtree.txt
index d8fd53856..4d544f3dd 100644
--- a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/bareTypes.antlrtree.txt
+++ b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/bareTypes.antlrtree.txt
@@ -1,4 +1,5 @@
-File: bareTypes.kt - 8721d3e3d50dcb919a594c195b06a900
+File: bareTypes.kt - 1f4d6def735e09b78d4fe76448856506
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/recursiveBounds.antlrtree.txt b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/recursiveBounds.antlrtree.txt
index 5ae34c577..819c7a02e 100644
--- a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/recursiveBounds.antlrtree.txt
+++ b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/recursiveBounds.antlrtree.txt
@@ -1,4 +1,4 @@
-File: recursiveBounds.kt - 355cabe2e8fac4bac997827450b3f6a0
+File: recursiveBounds.kt - 5930fd9a383967f0b46e1832f46b1d45
NL("\n")
NL("\n")
packageHeader
@@ -233,7 +233,51 @@ File: recursiveBounds.kt - 355cabe2e8fac4bac997827450b3f6a0
Identifier("Any")
RANGLE(">")
simpleIdentifier
- Identifier("baz")
+ Identifier("baz1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ definitelyNonNullableType
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ AMP("&")
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ RANGLE(">")
+ receiverType
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ quest
+ QUEST_NO_WS("?")
+ DOT(".")
+ simpleIdentifier
+ Identifier("baz2")
functionValueParameters
LPAREN("(")
RPAREN(")")
diff --git a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.antlrtree.txt b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.antlrtree.txt
index cc546a117..eba9e71ac 100644
--- a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.antlrtree.txt
+++ b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/reifiedArguments.antlrtree.txt
@@ -1,4 +1,5 @@
-File: reifiedArguments.kt - 36d9e6bd4fadb8e4f1378a4340d4e41a
+File: reifiedArguments.kt - 996d89eaad39eab15979c2faab899262
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
@@ -115,4 +116,214 @@ File: reifiedArguments.kt - 36d9e6bd4fadb8e4f1378a4340d4e41a
RCURL("}")
semis
NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("KAnnotatedElement")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("annotations")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("List")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ RANGLE(">")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ reificationModifier
+ REIFIED("reified")
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Iterable")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("firstIsInstanceOrNull")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ quest
+ QUEST_WS("? ")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ modifier
+ functionModifier
+ INLINE("inline")
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ reificationModifier
+ REIFIED("reified")
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("KAnnotatedElement")
+ DOT(".")
+ simpleIdentifier
+ Identifier("findAnnotation")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ quest
+ QUEST_WS("? ")
+ functionBody
+ ASSIGNMENT("=")
+ NL("\n")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("annotations")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("firstIsInstanceOrNull")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
EOF("")
diff --git a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/simple.antlrtree.txt b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/simple.antlrtree.txt
index 85f0b7eda..6841b1769 100644
--- a/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/simple.antlrtree.txt
+++ b/grammar/testData/diagnostics/explicitDefinitelyNotNullableViaIntersection/simple.antlrtree.txt
@@ -1,4 +1,5 @@
-File: simple.kt - 4482a6f3cdd69af1a4bacf61667391e2
+File: simple.kt - c5919f98ec3612695bf1dad76ba0589c
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/exposed/protectedInProtected.antlrtree.txt b/grammar/testData/diagnostics/exposed/protectedInProtected.antlrtree.txt
index ad891dcfb..1217f45b2 100644
--- a/grammar/testData/diagnostics/exposed/protectedInProtected.antlrtree.txt
+++ b/grammar/testData/diagnostics/exposed/protectedInProtected.antlrtree.txt
@@ -1,4 +1,4 @@
-File: protectedInProtected.kt - d7920dcf747ff0f9e5877b77ee4ff922
+File: protectedInProtected.kt - 63efbb55b722058623864d584d3528a9
NL("\n")
NL("\n")
NL("\n")
@@ -103,4 +103,126 @@ File: protectedInProtected.kt - d7920dcf747ff0f9e5877b77ee4ff922
semis
NL("\n")
NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Owner")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PROTECTED("protected")
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Owner")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PROTECTED("protected")
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("ProtectedInA")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PROTECTED("protected")
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PROTECTED("protected")
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ProtectedInA")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/extensions/contextReceivers/fromKEEP/functionalType.antlrtree.txt b/grammar/testData/diagnostics/extensions/contextReceivers/fromKEEP/functionalType.antlrtree.txt
index 876c2b1bd..3c24d3f48 100644
--- a/grammar/testData/diagnostics/extensions/contextReceivers/fromKEEP/functionalType.antlrtree.txt
+++ b/grammar/testData/diagnostics/extensions/contextReceivers/fromKEEP/functionalType.antlrtree.txt
@@ -1,4 +1,5 @@
-File: functionalType.kt - 829d89f6624189f39795e2f76c3e0adf (WITH_ERRORS)
+File: functionalType.kt - b76e031d635f1e1a30b7b67f839b19e6 (WITH_ERRORS)
+ NL("\n")
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/extensions/contextReceivers/noContextReceiversOnInlineClasses.antlrtree.txt b/grammar/testData/diagnostics/extensions/contextReceivers/noContextReceiversOnInlineClasses.antlrtree.txt
deleted file mode 100644
index cc6f89d29..000000000
--- a/grammar/testData/diagnostics/extensions/contextReceivers/noContextReceiversOnInlineClasses.antlrtree.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-File: noContextReceiversOnInlineClasses.kt - aab8d11f630cb30f89124e96739ed824 (WITH_ERRORS)
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- CLASS("class")
- simpleIdentifier
- Identifier("A")
- semis
- NL("\n")
- NL("\n")
- Identifier("context")
- LPAREN("(")
- Identifier("A")
- RPAREN(")")
- NL("\n")
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- functionModifier
- INLINE("inline")
- CLASS("class")
- simpleIdentifier
- Identifier("B")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RPAREN(")")
- EOF("")
diff --git a/grammar/testData/diagnostics/extensions/contextReceivers/noContextReceiversOnValueClasses.antlrtree.txt b/grammar/testData/diagnostics/extensions/contextReceivers/noContextReceiversOnValueClasses.antlrtree.txt
new file mode 100644
index 000000000..f48b8a6df
--- /dev/null
+++ b/grammar/testData/diagnostics/extensions/contextReceivers/noContextReceiversOnValueClasses.antlrtree.txt
@@ -0,0 +1,169 @@
+File: noContextReceiversOnValueClasses.kt - 1b33dfade05b2933952e3e49db73b161 (WITH_ERRORS)
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ fileAnnotation
+ AT_PRE_WS("\n@")
+ FILE("file")
+ COLON(":")
+ unescapedAnnotation
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Suppress")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("INLINE_CLASS_DEPRECATED")
+ QUOTE_CLOSE(""")
+ RPAREN(")")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ NL("\n")
+ Identifier("context")
+ LPAREN("(")
+ Identifier("A")
+ RPAREN(")")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ functionModifier
+ INLINE("inline")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B1")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ Identifier("context")
+ LPAREN("(")
+ Identifier("A")
+ RPAREN(")")
+ NL("\n")
+ Identifier("OPTIONAL_JVM_INLINE_ANNOTATION")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ VALUE("value")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B2")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ Identifier("context")
+ LPAREN("(")
+ Identifier("A")
+ RPAREN(")")
+ NL("\n")
+ Identifier("OPTIONAL_JVM_INLINE_ANNOTATION")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ VALUE("value")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("C")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ COMMA(",")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("y")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/extensions/contextReceivers/twoReceiverCandidatesError.antlrtree.txt b/grammar/testData/diagnostics/extensions/contextReceivers/twoReceiverCandidatesError.antlrtree.txt
new file mode 100644
index 000000000..376718454
--- /dev/null
+++ b/grammar/testData/diagnostics/extensions/contextReceivers/twoReceiverCandidatesError.antlrtree.txt
@@ -0,0 +1,227 @@
+File: twoReceiverCandidatesError.kt - ef4f9891a2591e8b77f5af0d810c3b01 (WITH_ERRORS)
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ Identifier("context")
+ LPAREN("(")
+ Identifier("Int")
+ COMMA(",")
+ Identifier("Double")
+ RPAREN(")")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("with")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ RealLiteral("2.0")
+ RPAREN(")")
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/extensions/contextReceivers/typeParameterAsContextReceiver.antlrtree.txt b/grammar/testData/diagnostics/extensions/contextReceivers/typeParameterAsContextReceiver.antlrtree.txt
index f32654f3b..7da0c13b5 100644
--- a/grammar/testData/diagnostics/extensions/contextReceivers/typeParameterAsContextReceiver.antlrtree.txt
+++ b/grammar/testData/diagnostics/extensions/contextReceivers/typeParameterAsContextReceiver.antlrtree.txt
@@ -1,4 +1,4 @@
-File: typeParameterAsContextReceiver.kt - a8a0ef7d9a33481425bd28f48dc4c56d (WITH_ERRORS)
+File: typeParameterAsContextReceiver.kt - 93378a17b47db47cb751814569a8a6c4 (WITH_ERRORS)
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/extensions/extensionMemberInClassObject.antlrtree.txt b/grammar/testData/diagnostics/extensions/extensionMemberInClassObject.antlrtree.txt
index e57f0bafc..0f854bb5f 100644
--- a/grammar/testData/diagnostics/extensions/extensionMemberInClassObject.antlrtree.txt
+++ b/grammar/testData/diagnostics/extensions/extensionMemberInClassObject.antlrtree.txt
@@ -1,4 +1,5 @@
-File: extensionMemberInClassObject.kt - e6f9c0bf53efdfe6e8d892c9910d321e
+File: extensionMemberInClassObject.kt - 5b7eae34a7e2adc3be1898c88ee7e3a7
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/fieldRename/derivedClassPropertyShadowsBaseClassField.test.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/derivedClassPropertyShadowsBaseClassField.test.antlrtree.txt
new file mode 100644
index 000000000..b1c939bb7
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/derivedClassPropertyShadowsBaseClassField.test.antlrtree.txt
@@ -0,0 +1,598 @@
+File: derivedClassPropertyShadowsBaseClassField.test.kt - 158808c8153acb887ba8da7e3f893c79
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("regular")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("aa")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("withGetter")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("bb")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ LATEINIT("lateinit")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("lateInit")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("lazyProp")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("dd")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("withSetter")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("ee")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("println")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("openProp")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("ff")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Derived")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("regular")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("withGetter")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("lateInit")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("lazyProp")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("withSetter")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("openProp")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("withGetter")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Derived")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("withGetter")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/derivedClassPropertyShadowsBaseClassField13.test.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/derivedClassPropertyShadowsBaseClassField13.test.antlrtree.txt
new file mode 100644
index 000000000..ef50c0302
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/derivedClassPropertyShadowsBaseClassField13.test.antlrtree.txt
@@ -0,0 +1,476 @@
+File: derivedClassPropertyShadowsBaseClassField13.test.kt - 653ceb9152c076a31e4c9ac11c704b7b
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("aa")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("bb")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ memberModifier
+ LATEINIT("lateinit")
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("c")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("d")
+ propertyDelegate
+ BY("by")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("lazy")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("dd")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("e")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("ee")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ setter
+ SET("set")
+ LPAREN("(")
+ functionValueParameterWithOptionalType
+ parameterWithOptionalType
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("println")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ simpleIdentifier
+ FIELD("field")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Derived")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("c")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("d")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("e")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyDifferentType.Main.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyDifferentType.Main.antlrtree.txt
new file mode 100644
index 000000000..3ae99473a
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyDifferentType.Main.antlrtree.txt
@@ -0,0 +1,204 @@
+File: javaFieldKotlinPropertyDifferentType.Main.kt - f14d8a43f9aa2fd19b250ddbd0b20f02
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Base")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("something")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("extension")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("42")
+ semis
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("something")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("extension")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyDifferentType2.Main.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyDifferentType2.Main.antlrtree.txt
new file mode 100644
index 000000000..6f12204b7
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyDifferentType2.Main.antlrtree.txt
@@ -0,0 +1,102 @@
+File: javaFieldKotlinPropertyDifferentType2.Main.kt - 42f8bebe80b60bb38089952a28f130e0
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Rectangle")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("TimelineSliderUI")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BasicSliderUI")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("thumbRect")
+ COLON(":")
+ type
+ functionType
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Rectangle")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("thumbRect")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaFieldInPackagePrivate.B.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaFieldInPackagePrivate.B.antlrtree.txt
new file mode 100644
index 000000000..e3e6e07a5
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaFieldInPackagePrivate.B.antlrtree.txt
@@ -0,0 +1,76 @@
+File: javaFieldKotlinPropertyJavaFieldInPackagePrivate.B.kt - 6027a78e43fa2e1fe9f663fa91a11421
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("base")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("FAIL")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaFieldInPackagePrivate.test.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaFieldInPackagePrivate.test.antlrtree.txt
new file mode 100644
index 000000000..46f60c848
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaFieldInPackagePrivate.test.antlrtree.txt
@@ -0,0 +1,78 @@
+File: javaFieldKotlinPropertyJavaFieldInPackagePrivate.test.kt - 9c16b191caf60ba211c7f16e47e1910b
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("box")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("C")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("f")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaPackagePrivateField.B.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaPackagePrivateField.B.antlrtree.txt
new file mode 100644
index 000000000..721f8a727
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaPackagePrivateField.B.antlrtree.txt
@@ -0,0 +1,76 @@
+File: javaFieldKotlinPropertyJavaPackagePrivateField.B.kt - 6027a78e43fa2e1fe9f663fa91a11421
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("base")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("B")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("f")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("FAIL")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaPackagePrivateField.test.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaPackagePrivateField.test.antlrtree.txt
new file mode 100644
index 000000000..6ce9ba413
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaFieldKotlinPropertyJavaPackagePrivateField.test.antlrtree.txt
@@ -0,0 +1,78 @@
+File: javaFieldKotlinPropertyJavaPackagePrivateField.test.kt - 9c16b191caf60ba211c7f16e47e1910b
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("box")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("C")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("f")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaProtectedFieldAndKotlinInvisiblePropertyReference.Base.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaProtectedFieldAndKotlinInvisiblePropertyReference.Base.antlrtree.txt
new file mode 100644
index 000000000..634421ac0
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaProtectedFieldAndKotlinInvisiblePropertyReference.Base.antlrtree.txt
@@ -0,0 +1,217 @@
+File: javaProtectedFieldAndKotlinInvisiblePropertyReference.Base.kt - ad5865676c0d78fa9c12780390d5bce4
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("base")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("BaseKotlin")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Intermediate")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Intermediate")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("DerivedFromDerivedJava")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DerivedJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/fieldRename/javaProtectedFieldAndKotlinInvisiblePropertyReference.Derived.antlrtree.txt b/grammar/testData/diagnostics/fieldRename/javaProtectedFieldAndKotlinInvisiblePropertyReference.Derived.antlrtree.txt
new file mode 100644
index 000000000..3c0c6ecff
--- /dev/null
+++ b/grammar/testData/diagnostics/fieldRename/javaProtectedFieldAndKotlinInvisiblePropertyReference.Derived.antlrtree.txt
@@ -0,0 +1,849 @@
+File: javaProtectedFieldAndKotlinInvisiblePropertyReference.Derived.kt - 77da87f7a262526429021c8af127e324
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("derived")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("base")
+ DOT(".")
+ simpleIdentifier
+ Identifier("BaseJava")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Intermediate")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("IntermediateWithoutField")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ getter
+ GET("get")
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("IntermediatePublic")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Derived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Intermediate")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("b")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("Alias")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Intermediate")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("DerivedAlias")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Alias")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("local")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ OPEN("open")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("LocalIntermediate")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("LocalDerived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("LocalIntermediate")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("DerivedWithoutBackingField")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("IntermediateWithoutField")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("DerivedPublic")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("IntermediatePublic")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("DirectlyDerived")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("BaseJava")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS("this")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Derived")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ COLONCOLON("::")
+ simpleIdentifier
+ Identifier("a")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/finalSupertype.antlrtree.txt b/grammar/testData/diagnostics/finalSupertype.antlrtree.txt
new file mode 100644
index 000000000..f71b3053b
--- /dev/null
+++ b/grammar/testData/diagnostics/finalSupertype.antlrtree.txt
@@ -0,0 +1,52 @@
+File: finalSupertype.kt - 5a86de24a899cb3429f86b35651828f2
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("OOO")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ typeAlias
+ TYPE_ALIAS("typealias")
+ simpleIdentifier
+ Identifier("Alias")
+ ASSIGNMENT("=")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("OOO")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Child")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Alias")
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/funInterface/basicFunInterfaceConversion.antlrtree.txt b/grammar/testData/diagnostics/funInterface/basicFunInterfaceConversion.antlrtree.txt
index be294391f..0498bcf3c 100644
--- a/grammar/testData/diagnostics/funInterface/basicFunInterfaceConversion.antlrtree.txt
+++ b/grammar/testData/diagnostics/funInterface/basicFunInterfaceConversion.antlrtree.txt
@@ -1,4 +1,4 @@
-File: basicFunInterfaceConversion.kt - d61e77c1f8b4e535cb0eb1af17bf3a6f
+File: basicFunInterfaceConversion.kt - 29bd197d4c768e20c5f6b7a30501c9f4
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/funInterface/funInterfaceDeclarationCheck.antlrtree.txt b/grammar/testData/diagnostics/funInterface/funInterfaceDeclarationCheck.antlrtree.txt
index 59f3f7eb3..8906843fc 100644
--- a/grammar/testData/diagnostics/funInterface/funInterfaceDeclarationCheck.antlrtree.txt
+++ b/grammar/testData/diagnostics/funInterface/funInterfaceDeclarationCheck.antlrtree.txt
@@ -1,4 +1,5 @@
-File: funInterfaceDeclarationCheck.kt - d2be1d846f7bcf3a4f27eb3abc50fef7
+File: funInterfaceDeclarationCheck.kt - c96a633e7c2a2120e6beaa480a1e7739
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/funInterface/funInterfaceSyntheticConstructors.antlrtree.txt b/grammar/testData/diagnostics/funInterface/funInterfaceSyntheticConstructors.antlrtree.txt
index 3767d8d62..1df0e661b 100644
--- a/grammar/testData/diagnostics/funInterface/funInterfaceSyntheticConstructors.antlrtree.txt
+++ b/grammar/testData/diagnostics/funInterface/funInterfaceSyntheticConstructors.antlrtree.txt
@@ -1,4 +1,4 @@
-File: funInterfaceSyntheticConstructors.kt - 166d8953810ad8018a61a6af83e50be0
+File: funInterfaceSyntheticConstructors.kt - f392b8890e1a7b059d7a6ec81249ed57
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/funInterface/funIsNotInheritedFromBaseInterface.antlrtree.txt b/grammar/testData/diagnostics/funInterface/funIsNotInheritedFromBaseInterface.antlrtree.txt
index 1179326cb..e08b069b4 100644
--- a/grammar/testData/diagnostics/funInterface/funIsNotInheritedFromBaseInterface.antlrtree.txt
+++ b/grammar/testData/diagnostics/funInterface/funIsNotInheritedFromBaseInterface.antlrtree.txt
@@ -1,4 +1,4 @@
-File: funIsNotInheritedFromBaseInterface.kt - 5ce086c013c92961093ae2b0d82ed83d
+File: funIsNotInheritedFromBaseInterface.kt - dfb132d63ed11a3685322fbb510090fe
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/funInterface/genericSubstitutionForFunInterface.antlrtree.txt b/grammar/testData/diagnostics/funInterface/genericSubstitutionForFunInterface.antlrtree.txt
index f7d2e7a01..edbefb6f5 100644
--- a/grammar/testData/diagnostics/funInterface/genericSubstitutionForFunInterface.antlrtree.txt
+++ b/grammar/testData/diagnostics/funInterface/genericSubstitutionForFunInterface.antlrtree.txt
@@ -1,4 +1,4 @@
-File: genericSubstitutionForFunInterface.kt - a971b7c0577e6f007e83d1e78304f303
+File: genericSubstitutionForFunInterface.kt - 7340f471df1f07936661938a9c9dca3d
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/funInterface/prohibitFunInterfaceConstructorReferences.antlrtree.txt b/grammar/testData/diagnostics/funInterface/prohibitFunInterfaceConstructorReferences.antlrtree.txt
deleted file mode 100644
index 2ffc06a1e..000000000
--- a/grammar/testData/diagnostics/funInterface/prohibitFunInterfaceConstructorReferences.antlrtree.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-File: prohibitFunInterfaceConstructorReferences.kt - db052b25ab50feedacb21c8b49800bc2
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- FUN("fun")
- INTERFACE("interface")
- simpleIdentifier
- Identifier("Foo")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("run")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("x")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("Foo")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("y")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("Foo")
- postfixUnarySuffix
- callSuffix
- annotatedLambda
- lambdaLiteral
- LCURL("{")
- statements
- RCURL("}")
- NL("\n")
- topLevelObject
- declaration
- propertyDeclaration
- VAL("val")
- variableDeclaration
- simpleIdentifier
- Identifier("z")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- callableReference
- COLONCOLON("::")
- simpleIdentifier
- Identifier("Runnable")
- semis
- EOF("")
- EOF("")
diff --git a/grammar/testData/diagnostics/funInterface/suspendFunInterfaceConversion.antlrtree.txt b/grammar/testData/diagnostics/funInterface/suspendFunInterfaceConversion.antlrtree.txt
index 3fe0fb367..bc5828404 100644
--- a/grammar/testData/diagnostics/funInterface/suspendFunInterfaceConversion.antlrtree.txt
+++ b/grammar/testData/diagnostics/funInterface/suspendFunInterfaceConversion.antlrtree.txt
@@ -1,4 +1,4 @@
-File: suspendFunInterfaceConversion.kt - 480f66ec04719f259063721128997e69
+File: suspendFunInterfaceConversion.kt - 9b84e750a7ad55cdd729aa7f5df1dfae
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/funReturnsAny.antlrtree.txt b/grammar/testData/diagnostics/funReturnsAny.antlrtree.txt
new file mode 100644
index 000000000..a6e190c6a
--- /dev/null
+++ b/grammar/testData/diagnostics/funReturnsAny.antlrtree.txt
@@ -0,0 +1,52 @@
+File: funReturnsAny.kt - d5064c4ab2179dcb9ac8b59929bd5996
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("someFunction")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ jumpExpression
+ RETURN("return")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/functionLiterals/destructuringInLambdas/unsupportedFeature.antlrtree.txt b/grammar/testData/diagnostics/functionLiterals/destructuringInLambdas/unsupportedFeature.antlrtree.txt
deleted file mode 100644
index b8da0fbb7..000000000
--- a/grammar/testData/diagnostics/functionLiterals/destructuringInLambdas/unsupportedFeature.antlrtree.txt
+++ /dev/null
@@ -1,286 +0,0 @@
-File: unsupportedFeature.kt - 4ef819087f47283c80e91204d0cd2433
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- modifiers
- modifier
- classModifier
- DATA("data")
- CLASS("class")
- simpleIdentifier
- Identifier("A")
- primaryConstructor
- classParameters
- LPAREN("(")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("x")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- COMMA(",")
- classParameter
- VAL("val")
- simpleIdentifier
- Identifier("y")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RPAREN(")")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("foo")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("block")
- COLON(":")
- type
- functionType
- functionTypeParameters
- LPAREN("(")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("A")
- RPAREN(")")
- ARROW("->")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Unit")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- statements
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("bar")
- functionValueParameters
- LPAREN("(")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("foo")
- postfixUnarySuffix
- callSuffix
- annotatedLambda
- lambdaLiteral
- LCURL("{")
- lambdaParameters
- lambdaParameter
- multiVariableDeclaration
- LPAREN("(")
- variableDeclaration
- simpleIdentifier
- Identifier("a")
- COMMA(",")
- variableDeclaration
- simpleIdentifier
- Identifier("b")
- RPAREN(")")
- ARROW("->")
- NL("\n")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("a")
- simpleIdentifier
- Identifier("checkType")
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("_")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Int")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- RCURL("}")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("b")
- simpleIdentifier
- Identifier("checkType")
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("_")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("String")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- EOF("")
diff --git a/grammar/testData/diagnostics/functionLiterals/functionLiteralInIf.antlrtree.txt b/grammar/testData/diagnostics/functionLiterals/functionLiteralInIf.antlrtree.txt
index 4d8077950..428f8ef3a 100644
--- a/grammar/testData/diagnostics/functionLiterals/functionLiteralInIf.antlrtree.txt
+++ b/grammar/testData/diagnostics/functionLiterals/functionLiteralInIf.antlrtree.txt
@@ -144,8 +144,8 @@ File: functionLiteralInIf.kt - aa89fd0a1996f7b477b936e579313274
valueArguments
LPAREN("(")
RPAREN(")")
+ SEMICOLON(";")
semis
- SEMICOLON(";")
NL("\n")
statement
expression
diff --git a/grammar/testData/diagnostics/functionLiterals/higherOrderCallMissingParameters.antlrtree.txt b/grammar/testData/diagnostics/functionLiterals/higherOrderCallMissingParameters.antlrtree.txt
index b99500654..7eed556b2 100644
--- a/grammar/testData/diagnostics/functionLiterals/higherOrderCallMissingParameters.antlrtree.txt
+++ b/grammar/testData/diagnostics/functionLiterals/higherOrderCallMissingParameters.antlrtree.txt
@@ -1,4 +1,5 @@
-File: higherOrderCallMissingParameters.kt - 1c284db5ed628ac0eabf2b045b1376a1
+File: higherOrderCallMissingParameters.kt - 834319207ffa57f87fdd656a176e06de
+ NL("\n")
NL("\n")
NL("\n")
packageHeader
@@ -565,4 +566,6 @@ File: higherOrderCallMissingParameters.kt - 1c284db5ed628ac0eabf2b045b1376a1
semis
NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/functionLiterals/kt47493.antlrtree.txt b/grammar/testData/diagnostics/functionLiterals/kt47493.antlrtree.txt
index 29a8f7766..f2304f4e6 100644
--- a/grammar/testData/diagnostics/functionLiterals/kt47493.antlrtree.txt
+++ b/grammar/testData/diagnostics/functionLiterals/kt47493.antlrtree.txt
@@ -1,4 +1,5 @@
-File: kt47493.kt - 28d66f5a78070c5a4e22bd44836f7dae
+File: kt47493.kt - 753af52b8c152d964fa09c8f90a77adf
+ NL("\n")
packageHeader
importList
topLevelObject
diff --git a/grammar/testData/diagnostics/functionLiterals/kt56138.antlrtree.txt b/grammar/testData/diagnostics/functionLiterals/kt56138.antlrtree.txt
new file mode 100644
index 000000000..6db8e809f
--- /dev/null
+++ b/grammar/testData/diagnostics/functionLiterals/kt56138.antlrtree.txt
@@ -0,0 +1,1122 @@
+File: kt56138.kt - 0cae61364362eeeae1cf868d66be0e4b
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("takeLambda1")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("f")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("takeLambda2")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("f")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x1")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str2")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("this")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x2")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x3")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("x")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_2")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("takeLambda2")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str2")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("this")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("takeLambda1")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("takeLambda1")
+ postfixUnarySuffix
+ callSuffix
+ annotatedLambda
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("x")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_3")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Boolean")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x1")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str2")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("this")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ ELSE("else")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str")
+ COMMA(",")
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("str2")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("this")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x2")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ ELSE("else")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("it")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x3")
+ COLON(":")
+ type
+ functionType
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ DOT(".")
+ functionTypeParameters
+ LPAREN("(")
+ RPAREN(")")
+ ARROW("->")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ RPAREN(")")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("x")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ ELSE("else")
+ controlStructureBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ lambdaParameters
+ lambdaParameter
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ ARROW("->")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ lineStringContent
+ LineStrText("x")
+ QUOTE_CLOSE(""")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/functionLiterals/prematurelyAnalyzingLambdaWhileFixingTypeVariableForAnotherArgument.antlrtree.txt b/grammar/testData/diagnostics/functionLiterals/prematurelyAnalyzingLambdaWhileFixingTypeVariableForAnotherArgument.antlrtree.txt
index b419ef8ec..9b176384b 100644
--- a/grammar/testData/diagnostics/functionLiterals/prematurelyAnalyzingLambdaWhileFixingTypeVariableForAnotherArgument.antlrtree.txt
+++ b/grammar/testData/diagnostics/functionLiterals/prematurelyAnalyzingLambdaWhileFixingTypeVariableForAnotherArgument.antlrtree.txt
@@ -1,5 +1,4 @@
-File: prematurelyAnalyzingLambdaWhileFixingTypeVariableForAnotherArgument.kt - a135f97a25de5c3745b643b07ab58e3e
- NL("\n")
+File: prematurelyAnalyzingLambdaWhileFixingTypeVariableForAnotherArgument.kt - 9243d3eb515e1cb66027b1dbf4450279
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/generics/approximationOfInProjection.antlrtree.txt b/grammar/testData/diagnostics/generics/approximationOfInProjection.antlrtree.txt
new file mode 100644
index 000000000..14bb67e14
--- /dev/null
+++ b/grammar/testData/diagnostics/generics/approximationOfInProjection.antlrtree.txt
@@ -0,0 +1,296 @@
+File: approximationOfInProjection.kt - c6464c9eafa98c1b5432bab48fc016ce
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Bound")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Number")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ VALUE("value")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_1")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Bound")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ typeProjectionModifiers
+ typeProjectionModifier
+ varianceModifier
+ IN("in")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Bound")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("vl")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Number")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test_2")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Bound")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Bound")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("vl")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Number")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("b")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ VALUE("value")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/generics/bareTypesWithStarProjections.antlrtree.txt b/grammar/testData/diagnostics/generics/bareTypesWithStarProjections.antlrtree.txt
index 285258ff3..0beee51d3 100644
--- a/grammar/testData/diagnostics/generics/bareTypesWithStarProjections.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/bareTypesWithStarProjections.antlrtree.txt
@@ -1,5 +1,4 @@
-File: bareTypesWithStarProjections.kt - 7621e937985ac04ea26e7906c78f3ebe
- NL("\n")
+File: bareTypesWithStarProjections.kt - b4e00a8177871c124bccc1b2881ccd34
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/generics/capturedParameters/captured.antlrtree.txt b/grammar/testData/diagnostics/generics/capturedParameters/captured.antlrtree.txt
index c92dfb5f9..1c63c8b2a 100644
--- a/grammar/testData/diagnostics/generics/capturedParameters/captured.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/capturedParameters/captured.antlrtree.txt
@@ -1,5 +1,4 @@
-File: captured.kt - 3cb5ab76f9abb3588f6cae98a47be938
- NL("\n")
+File: captured.kt - 9cbb256e627f112867863a811d55e95c
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/generics/kt34729.antlrtree.txt b/grammar/testData/diagnostics/generics/kt34729.antlrtree.txt
index 0eca00e64..7250fc851 100644
--- a/grammar/testData/diagnostics/generics/kt34729.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/kt34729.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt34729.kt - d667d8a4d288fa33199de543bbf11c5f
- NL("\n")
+File: kt34729.kt - 33db2f80217447944d64cd73e1d84942
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/generics/kt53656.antlrtree.txt b/grammar/testData/diagnostics/generics/kt53656.antlrtree.txt
new file mode 100644
index 000000000..fa112c628
--- /dev/null
+++ b/grammar/testData/diagnostics/generics/kt53656.antlrtree.txt
@@ -0,0 +1,710 @@
+File: kt53656.kt - 59076d52855cfe87caff5fcfe5aff0f6
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("One")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Number")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("One")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("R")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("One")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Entity")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ inheritanceModifier
+ ABSTRACT("abstract")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("SecuredEntity")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ varianceModifier
+ OUT("out")
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ VAL("val")
+ simpleIdentifier
+ Identifier("entity")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RPAREN(")")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecurityCodeAware")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ COMMA(",")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("SecurityCodeAware")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ typeParameterModifiers
+ typeParameterModifier
+ varianceModifier
+ OUT("out")
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecuredEntity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ RANGLE(">")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecurityCodeAware")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecuredEntity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ RANGLE(">")
+ RANGLE(">")
+ receiverType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecurityCodeAware")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ DOT(".")
+ simpleIdentifier
+ Identifier("secured")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ typeConstraints
+ WHERE("where")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ COMMA(",")
+ typeConstraint
+ simpleIdentifier
+ Identifier("E")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecurityCodeAware")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("E")
+ COMMA(",")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ whenExpression
+ WHEN("when")
+ whenSubject
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("this")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ whenEntry
+ whenCondition
+ typeTest
+ isOperator
+ IS("is")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Order")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("SecuredOrder")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("this")
+ RPAREN(")")
+ semi
+ NL("\n")
+ whenEntry
+ ELSE("else")
+ ARROW("->")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semi
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Order")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Entity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ RANGLE(">")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("SecuredOrder")
+ primaryConstructor
+ classParameters
+ LPAREN("(")
+ classParameter
+ simpleIdentifier
+ Identifier("order")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Order")
+ RPAREN(")")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ constructorInvocation
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("SecuredEntity")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Order")
+ RANGLE(">")
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("order")
+ RPAREN(")")
+ semis
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("securedOrder")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("Order")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("secured")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/generics/nullability/considerTypeNotNullOnlyIfItHasNotNullBound.antlrtree.txt b/grammar/testData/diagnostics/generics/nullability/considerTypeNotNullOnlyIfItHasNotNullBound.antlrtree.txt
index 5444e7cee..84d80544d 100644
--- a/grammar/testData/diagnostics/generics/nullability/considerTypeNotNullOnlyIfItHasNotNullBound.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/nullability/considerTypeNotNullOnlyIfItHasNotNullBound.antlrtree.txt
@@ -1,5 +1,4 @@
-File: considerTypeNotNullOnlyIfItHasNotNullBound.kt - f9113eb60b00b52e92581ab9d2d1b741
- NL("\n")
+File: considerTypeNotNullOnlyIfItHasNotNullBound.kt - b50c052c6abcf51fa9b6fcfca8090b30
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/generics/nullability/inferNotNullTypeFromIntersectionOfNullableTypes.antlrtree.txt b/grammar/testData/diagnostics/generics/nullability/inferNotNullTypeFromIntersectionOfNullableTypes.antlrtree.txt
index b3b567786..e36c5a646 100644
--- a/grammar/testData/diagnostics/generics/nullability/inferNotNullTypeFromIntersectionOfNullableTypes.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/nullability/inferNotNullTypeFromIntersectionOfNullableTypes.antlrtree.txt
@@ -1,5 +1,4 @@
-File: inferNotNullTypeFromIntersectionOfNullableTypes.kt - 36c80fd78892abd119329b2c33850d60
- NL("\n")
+File: inferNotNullTypeFromIntersectionOfNullableTypes.kt - a038a9df8ee42bef58919027941f9a03
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/generics/nullability/kt25182.antlrtree.txt b/grammar/testData/diagnostics/generics/nullability/kt25182.antlrtree.txt
index ece098c58..6b30091be 100644
--- a/grammar/testData/diagnostics/generics/nullability/kt25182.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/nullability/kt25182.antlrtree.txt
@@ -1,5 +1,4 @@
-File: kt25182.kt - 47d2170d972edaa07733f87ebc8b41b8
- NL("\n")
+File: kt25182.kt - 7759a64b4fe2e1749360e62262e4f98b
NL("\n")
NL("\n")
NL("\n")
diff --git a/grammar/testData/diagnostics/generics/nullability/notNullSmartcastOnIntersectionOfNullables.antlrtree.txt b/grammar/testData/diagnostics/generics/nullability/notNullSmartcastOnIntersectionOfNullables.antlrtree.txt
index 607e71a31..aa3aba35d 100644
--- a/grammar/testData/diagnostics/generics/nullability/notNullSmartcastOnIntersectionOfNullables.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/nullability/notNullSmartcastOnIntersectionOfNullables.antlrtree.txt
@@ -1,5 +1,4 @@
-File: notNullSmartcastOnIntersectionOfNullables.kt - 4d27a26549288730606c98d55d4e9e53
- NL("\n")
+File: notNullSmartcastOnIntersectionOfNullables.kt - 13ed1769862bd5c2d741adca321510e7
NL("\n")
NL("\n")
packageHeader
diff --git a/grammar/testData/diagnostics/generics/nullableTypeParameterScope.antlrtree.txt b/grammar/testData/diagnostics/generics/nullableTypeParameterScope.antlrtree.txt
new file mode 100644
index 000000000..1742a27b0
--- /dev/null
+++ b/grammar/testData/diagnostics/generics/nullableTypeParameterScope.antlrtree.txt
@@ -0,0 +1,308 @@
+File: nullableTypeParameterScope.kt - df17a84e39864056a94b1e0baae4374b
+ NL("\n")
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("ConverterFromString")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("ofS")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("nullable")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("nullText")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ConverterFromString")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ConverterFromString")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ memberModifier
+ OVERRIDE("override")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("ofS")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("s")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("String")
+ RPAREN(")")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ quest
+ QUEST_WS("? ")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ ifExpression
+ IF("if")
+ LPAREN("(")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ equalityOperator
+ EQEQ("==")
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("nullText")
+ RPAREN(")")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ ELSE("else")
+ controlStructureBody
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ thisExpression
+ THIS_AT("this@ConverterFromString")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("ofS")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("s")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/generics/outerTypeParametersInNestedClasses.antlrtree.txt b/grammar/testData/diagnostics/generics/outerTypeParametersInNestedClasses.antlrtree.txt
new file mode 100644
index 000000000..c17014345
--- /dev/null
+++ b/grammar/testData/diagnostics/generics/outerTypeParametersInNestedClasses.antlrtree.txt
@@ -0,0 +1,445 @@
+File: outerTypeParametersInNestedClasses.kt - 28c29f2091db4fe2337d0e477d045d5f
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ companionObject
+ COMPANION("companion")
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ objectDeclaration
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("O")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Nested")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ INNER("inner")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Inner")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("InnerNested")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ classModifier
+ ENUM("enum")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("E")
+ enumClassBody
+ LCURL("{")
+ NL("\n")
+ SEMICOLON(";")
+ NL("\n")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("obj")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ objectLiteral
+ OBJECT("object")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("R")
+ RANGLE(">")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Local")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg1")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ COMMA(",")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("arg2")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("R")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/generics/projectionsScope/unsafeVarianceInAliasedFunctionalType.antlrtree.txt b/grammar/testData/diagnostics/generics/projectionsScope/unsafeVarianceInAliasedFunctionalType.antlrtree.txt
index 76481f211..c1c2b2f4f 100644
--- a/grammar/testData/diagnostics/generics/projectionsScope/unsafeVarianceInAliasedFunctionalType.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/projectionsScope/unsafeVarianceInAliasedFunctionalType.antlrtree.txt
@@ -1,4 +1,5 @@
-File: unsafeVarianceInAliasedFunctionalType.kt - 6cee3389ba807b09fec52ebfca92e11d
+File: unsafeVarianceInAliasedFunctionalType.kt - ee392582e4533e9453912b44a00c5964
+ NL("\n")
NL("\n")
packageHeader
importList
diff --git a/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutAssign.antlrtree.txt b/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutAssign.antlrtree.txt
deleted file mode 100644
index 19bc2e570..000000000
--- a/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutAssign.antlrtree.txt
+++ /dev/null
@@ -1,262 +0,0 @@
-File: setterProjectedOutAssign.kt - 5ba660243500e3bb74987449c37ef625
- NL("\n")
- NL("\n")
- NL("\n")
- NL("\n")
- packageHeader
- importList
- topLevelObject
- declaration
- classDeclaration
- INTERFACE("interface")
- simpleIdentifier
- Identifier("Tr")
- typeParameters
- LANGLE("<")
- typeParameter
- simpleIdentifier
- Identifier("T")
- RANGLE(">")
- classBody
- LCURL("{")
- NL("\n")
- classMemberDeclarations
- classMemberDeclaration
- declaration
- propertyDeclaration
- VAR("var")
- variableDeclaration
- simpleIdentifier
- Identifier("v")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("T")
- NL("\n")
- RCURL("}")
- semis
- NL("\n")
- NL("\n")
- topLevelObject
- declaration
- functionDeclaration
- FUN("fun")
- simpleIdentifier
- Identifier("test")
- functionValueParameters
- LPAREN("(")
- functionValueParameter
- parameter
- simpleIdentifier
- Identifier("t")
- COLON(":")
- type
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Tr")
- typeArguments
- LANGLE("<")
- typeProjection
- MULT("*")
- RANGLE(">")
- RPAREN(")")
- functionBody
- block
- LCURL("{")
- NL("\n")
- statements
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("t")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("v")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- NullLiteral("null")
- postfixUnarySuffix
- postfixUnaryOperator
- EXCL_NO_WS("!")
- excl
- EXCL_NO_WS("!")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("t")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("v")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- stringLiteral
- lineStringLiteral
- QUOTE_OPEN(""")
- QUOTE_CLOSE(""")
- semis
- NL("\n")
- statement
- assignment
- directlyAssignableExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("t")
- assignableSuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("v")
- ASSIGNMENT("=")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- literalConstant
- NullLiteral("null")
- semis
- NL("\n")
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("t")
- postfixUnarySuffix
- navigationSuffix
- memberAccessOperator
- DOT(".")
- simpleIdentifier
- Identifier("v")
- simpleIdentifier
- Identifier("checkType")
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- functionLiteral
- lambdaLiteral
- LCURL("{")
- statements
- statement
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
- postfixUnaryExpression
- primaryExpression
- simpleIdentifier
- Identifier("_")
- postfixUnarySuffix
- typeArguments
- LANGLE("<")
- typeProjection
- type
- nullableType
- typeReference
- userType
- simpleUserType
- simpleIdentifier
- Identifier("Any")
- quest
- QUEST_NO_WS("?")
- RANGLE(">")
- postfixUnarySuffix
- callSuffix
- valueArguments
- LPAREN("(")
- RPAREN(")")
- RCURL("}")
- semis
- NL("\n")
- RCURL("}")
- EOF("")
diff --git a/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutAssign.test.antlrtree.txt b/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutAssign.test.antlrtree.txt
new file mode 100644
index 000000000..68d2a4a16
--- /dev/null
+++ b/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutAssign.test.antlrtree.txt
@@ -0,0 +1,483 @@
+File: setterProjectedOutAssign.test.kt - 9fb4ff4eb8059db01fc4767da2dc56aa
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("Tr")
+ typeParameters
+ LANGLE("<")
+ typeParameter
+ simpleIdentifier
+ Identifier("T")
+ RANGLE(">")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAR("var")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("v")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("T")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Tr")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ simpleIdentifier
+ Identifier("checkType")
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("_")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("test2")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("t")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("JavaClass")
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ MULT("*")
+ RANGLE(">")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ postfixUnarySuffix
+ postfixUnaryOperator
+ EXCL_NO_WS("!")
+ excl
+ EXCL_NO_WS("!")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ stringLiteral
+ lineStringLiteral
+ QUOTE_OPEN(""")
+ QUOTE_CLOSE(""")
+ semis
+ NL("\n")
+ statement
+ assignment
+ directlyAssignableExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ assignableSuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ NullLiteral("null")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("t")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("v")
+ simpleIdentifier
+ Identifier("checkType")
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ functionLiteral
+ lambdaLiteral
+ LCURL("{")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("_")
+ postfixUnarySuffix
+ typeArguments
+ LANGLE("<")
+ typeProjection
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Any")
+ quest
+ QUEST_NO_WS("?")
+ RANGLE(">")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutNoPlusAssign.antlrtree.txt b/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutNoPlusAssign.antlrtree.txt
index 6822e6d97..c3a86dc7e 100644
--- a/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutNoPlusAssign.antlrtree.txt
+++ b/grammar/testData/diagnostics/generics/varProjection/setterProjectedOutNoPlusAssign.antlrtree.txt
@@ -1,5 +1,4 @@
-File: setterProjectedOutNoPlusAssign.kt - b31632e2ebbc7a262edcdec99f5414ec
- NL("\n")
+File: setterProjectedOutNoPlusAssign.kt - fc4d392794cdee0c344352b40873d1a3
NL("\n")
packageHeader
importList
@@ -121,4 +120,6 @@ File: setterProjectedOutNoPlusAssign.kt - b31632e2ebbc7a262edcdec99f5414ec
semis
NL("\n")
RCURL("}")
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/imports/CheckJavaVisibility.k1.antlrtree.txt b/grammar/testData/diagnostics/imports/CheckJavaVisibility.k1.antlrtree.txt
index a1f042c48..edda14d47 100644
--- a/grammar/testData/diagnostics/imports/CheckJavaVisibility.k1.antlrtree.txt
+++ b/grammar/testData/diagnostics/imports/CheckJavaVisibility.k1.antlrtree.txt
@@ -1,4 +1,4 @@
-File: CheckJavaVisibility.k1.kt - b4585c81636850f11411a28f418b8e22
+File: CheckJavaVisibility.k1.kt - c3a98ee3abd257c1c40dac98b47fbfa5
packageHeader
PACKAGE("package")
identifier
@@ -57,6 +57,19 @@ File: CheckJavaVisibility.k1.kt - b4585c81636850f11411a28f418b8e22
Identifier("javaPackageLocal")
semi
NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("j")
+ DOT(".")
+ simpleIdentifier
+ Identifier("JavaPublic")
+ DOT(".")
+ simpleIdentifier
+ Identifier("javaProtected")
+ semi
+ NL("\n")
NL("\n")
importHeader
IMPORT("import")
diff --git a/grammar/testData/diagnostics/imports/CheckJavaVisibility.k2.antlrtree.txt b/grammar/testData/diagnostics/imports/CheckJavaVisibility.k2.antlrtree.txt
index 32fc793f8..fb9fff140 100644
--- a/grammar/testData/diagnostics/imports/CheckJavaVisibility.k2.antlrtree.txt
+++ b/grammar/testData/diagnostics/imports/CheckJavaVisibility.k2.antlrtree.txt
@@ -1,4 +1,4 @@
-File: CheckJavaVisibility.k2.kt - 657d6a1942b062664884f4055db20a9f
+File: CheckJavaVisibility.k2.kt - 7b4208301a7fbf73d576d34246aeb766
packageHeader
PACKAGE("package")
identifier
@@ -166,4 +166,6 @@ File: CheckJavaVisibility.k2.kt - 657d6a1942b062664884f4055db20a9f
DOT(".")
simpleIdentifier
Identifier("javaPPrivate")
+ semi
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentName.antlrtree.txt b/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentName.antlrtree.txt
index 7d95f46c4..9e9ae21e3 100644
--- a/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentName.antlrtree.txt
+++ b/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentName.antlrtree.txt
@@ -1,4 +1,5 @@
-File: ImportFromCurrentWithDifferentName.kt - d7544a26a604fcc1a0569a0115dc529a
+File: ImportFromCurrentWithDifferentName.kt - 782d3791035e9277a5645bdc4a82e1dd
+ NL("\n")
packageHeader
PACKAGE("package")
identifier
diff --git a/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentNameComplex.antlrtree.txt b/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentNameComplex.antlrtree.txt
new file mode 100644
index 000000000..5548f84eb
--- /dev/null
+++ b/grammar/testData/diagnostics/imports/ImportFromCurrentWithDifferentNameComplex.antlrtree.txt
@@ -0,0 +1,415 @@
+File: ImportFromCurrentWithDifferentNameComplex.kt - 4d90bc950c2e501ed013f6ae870fa192
+ NL("\n")
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ importAlias
+ AS("as")
+ simpleIdentifier
+ Identifier("ER")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("x")
+ importAlias
+ AS("as")
+ simpleIdentifier
+ Identifier("y")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("foo")
+ importAlias
+ AS("as")
+ simpleIdentifier
+ Identifier("bar")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("x")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Int")
+ functionBody
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("A")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("B")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("a")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ NL("\n")
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("b")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("ER")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("ER")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("a")
+ postfixUnarySuffix
+ navigationSuffix
+ memberAccessOperator
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("x")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("y")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("bar")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ RPAREN(")")
+ additiveOperator
+ ADD("+")
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ literalConstant
+ IntegerLiteral("1")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/imports/OptionalAnnotationClasses.antlrtree.txt b/grammar/testData/diagnostics/imports/OptionalAnnotationClasses.antlrtree.txt
index 99f558e02..e93995994 100644
--- a/grammar/testData/diagnostics/imports/OptionalAnnotationClasses.antlrtree.txt
+++ b/grammar/testData/diagnostics/imports/OptionalAnnotationClasses.antlrtree.txt
@@ -1,4 +1,4 @@
-File: OptionalAnnotationClasses.kt - df566f7245e0ca84e377a2062748831b
+File: OptionalAnnotationClasses.kt - 3b57a0bb0e1aa85b6868e9dd294823ae
NL("\n")
NL("\n")
fileAnnotation
@@ -133,7 +133,7 @@ File: OptionalAnnotationClasses.kt - df566f7245e0ca84e377a2062748831b
userType
simpleUserType
simpleIdentifier
- Identifier("SharedImmutable")
+ Identifier("ThreadLocal")
NL("\n")
modifier
visibilityModifier
diff --git a/grammar/testData/diagnostics/imports/brokenImport.Klass.antlrtree.txt b/grammar/testData/diagnostics/imports/brokenImport.Klass.antlrtree.txt
new file mode 100644
index 000000000..88e374f24
--- /dev/null
+++ b/grammar/testData/diagnostics/imports/brokenImport.Klass.antlrtree.txt
@@ -0,0 +1,173 @@
+File: brokenImport.Klass.kt - 3ee8a32b368aa884d42059b0d977d34f
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Klass")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ objectDeclaration
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Bar")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo2")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Bar")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ CLASS("class")
+ simpleIdentifier
+ Identifier("Foo3")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ objectDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ OBJECT("object")
+ simpleIdentifier
+ Identifier("Bar")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ functionDeclaration
+ modifiers
+ modifier
+ visibilityModifier
+ PRIVATE("private")
+ FUN("fun")
+ simpleIdentifier
+ Identifier("baz")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/imports/brokenImport.test.antlrtree.txt b/grammar/testData/diagnostics/imports/brokenImport.test.antlrtree.txt
new file mode 100644
index 000000000..8aed09bd4
--- /dev/null
+++ b/grammar/testData/diagnostics/imports/brokenImport.test.antlrtree.txt
@@ -0,0 +1,114 @@
+File: brokenImport.test.kt - 8a47264aff4e7f1dce2b630feb9a5a30
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("pack")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("foo")
+ DOT(".")
+ simpleIdentifier
+ Identifier("bar")
+ DOT(".")
+ simpleIdentifier
+ Identifier("baz")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("Outer")
+ DOT(".")
+ simpleIdentifier
+ Identifier("``")
+ DOT(".")
+ simpleIdentifier
+ Identifier("getInner")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pack")
+ DOT(".")
+ simpleIdentifier
+ Identifier("UnresolvedName")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Klass")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Foo")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Bar")
+ DOT(".")
+ simpleIdentifier
+ Identifier("baz")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Foo2")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Bar")
+ DOT(".")
+ simpleIdentifier
+ Identifier("baz")
+ semi
+ NL("\n")
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("pkg")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Foo3")
+ DOT(".")
+ simpleIdentifier
+ Identifier("Bar")
+ DOT(".")
+ simpleIdentifier
+ Identifier("baz")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ CLASS("class")
+ simpleIdentifier
+ Identifier("MainSource")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/imports/renamedImportInDifferentFile.first.antlrtree.txt b/grammar/testData/diagnostics/imports/renamedImportInDifferentFile.first.antlrtree.txt
new file mode 100644
index 000000000..fb394bfd9
--- /dev/null
+++ b/grammar/testData/diagnostics/imports/renamedImportInDifferentFile.first.antlrtree.txt
@@ -0,0 +1,53 @@
+File: renamedImportInDifferentFile.first.kt - 753a5d1cf667e11837d6cbbe9bb59054
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("b")
+ semi
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("b")
+ DOT(".")
+ simpleIdentifier
+ Identifier("DependencyAnalyzerDependency")
+ importAlias
+ AS("as")
+ simpleIdentifier
+ Identifier("Dependency")
+ semi
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("foo")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("Dependency")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ statements
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/imports/renamedImportInDifferentFile.main.antlrtree.txt b/grammar/testData/diagnostics/imports/renamedImportInDifferentFile.main.antlrtree.txt
new file mode 100644
index 000000000..f0f9fb425
--- /dev/null
+++ b/grammar/testData/diagnostics/imports/renamedImportInDifferentFile.main.antlrtree.txt
@@ -0,0 +1,134 @@
+File: renamedImportInDifferentFile.main.kt - 29c5750efe42f0c0d58d538d897b3634
+ packageHeader
+ PACKAGE("package")
+ identifier
+ simpleIdentifier
+ Identifier("b")
+ semi
+ NL("\n")
+ NL("\n")
+ importList
+ importHeader
+ IMPORT("import")
+ identifier
+ simpleIdentifier
+ Identifier("a")
+ DOT(".")
+ simpleIdentifier
+ Identifier("A")
+ semi
+ NL("\n")
+ topLevelObject
+ declaration
+ classDeclaration
+ INTERFACE("interface")
+ simpleIdentifier
+ Identifier("DependencyAnalyzerDependency")
+ COLON(":")
+ delegationSpecifiers
+ annotatedDelegationSpecifier
+ delegationSpecifier
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("A")
+ classBody
+ LCURL("{")
+ NL("\n")
+ classMemberDeclarations
+ classMemberDeclaration
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("parent")
+ COLON(":")
+ type
+ nullableType
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DependencyAnalyzerDependency")
+ quest
+ QUEST_WS("? ")
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ NL("\n")
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("bar")
+ functionValueParameters
+ LPAREN("(")
+ functionValueParameter
+ parameter
+ simpleIdentifier
+ Identifier("d")
+ COLON(":")
+ type
+ typeReference
+ userType
+ simpleUserType
+ simpleIdentifier
+ Identifier("DependencyAnalyzerDependency")
+ RPAREN(")")
+ functionBody
+ block
+ LCURL("{")
+ NL("\n")
+ statements
+ statement
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("foo")
+ postfixUnarySuffix
+ callSuffix
+ valueArguments
+ LPAREN("(")
+ valueArgument
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("d")
+ RPAREN(")")
+ semis
+ NL("\n")
+ RCURL("}")
+ semis
+ NL("\n")
+ EOF("")
diff --git a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/checkBackingFieldException.antlrtree.txt b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/checkBackingFieldException.antlrtree.txt
index 6fed6c8d0..444e6f242 100644
--- a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/checkBackingFieldException.antlrtree.txt
+++ b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/checkBackingFieldException.antlrtree.txt
@@ -1,4 +1,5 @@
-File: checkBackingFieldException.kt - 4a8c89056bcbc7c6e3cdc1c9a0e5c170 (WITH_ERRORS)
+File: checkBackingFieldException.kt - 80822ebe1da38d93ec9ca9b6513bf6a9 (WITH_ERRORS)
+ NL("\n")
NL("\n")
packageHeader
PACKAGE("package")
@@ -81,7 +82,6 @@ File: checkBackingFieldException.kt - 4a8c89056bcbc7c6e3cdc1c9a0e5c170 (WITH_ERR
LCURL("{")
semis
NL("\n")
- NL("\n")
FieldIdentifier("$area")
ASSIGNMENT("=")
Identifier("size")
diff --git a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/declarationAfterIncompleteElvis.antlrtree.txt b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/declarationAfterIncompleteElvis.antlrtree.txt
index 7e0842fbe..042c3b505 100644
--- a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/declarationAfterIncompleteElvis.antlrtree.txt
+++ b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/declarationAfterIncompleteElvis.antlrtree.txt
@@ -230,13 +230,7 @@ File: declarationAfterIncompleteElvis.kt - 9c39d1c960594333a4032de8b4dfc112 (WIT
elvis
QUEST_NO_WS("?")
COLON(":")
- NL("\n")
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
+ NL("\n")
topLevelObject
declaration
propertyDeclaration
diff --git a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/funEquals.antlrtree.txt b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/funEquals.antlrtree.txt
index 582b8da8a..14a177ba9 100644
--- a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/funEquals.antlrtree.txt
+++ b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/funEquals.antlrtree.txt
@@ -13,19 +13,6 @@ File: funEquals.kt - 2fb0f054844cd26c7989d17a1329e3d3 (WITH_ERRORS)
RPAREN(")")
functionBody
ASSIGNMENT("=")
- NL("\n")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/incompleteVal.antlrtree.txt b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/incompleteVal.antlrtree.txt
index df3c2b181..4a2c75a1d 100644
--- a/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/incompleteVal.antlrtree.txt
+++ b/grammar/testData/diagnostics/incompleteCode/diagnosticWithSyntaxError/incompleteVal.antlrtree.txt
@@ -17,19 +17,6 @@ File: incompleteVal.kt - c289e77189a74a4320d4f5e12bc670ed (WITH_ERRORS)
simpleIdentifier
Identifier("i")
ASSIGNMENT("=")
- NL("\n")
- expression
- disjunction
- conjunction
- equality
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/incompleteCode/incompleteEquals.antlrtree.txt b/grammar/testData/diagnostics/incompleteCode/incompleteEquals.antlrtree.txt
index bcb505be7..78c68c3a0 100644
--- a/grammar/testData/diagnostics/incompleteCode/incompleteEquals.antlrtree.txt
+++ b/grammar/testData/diagnostics/incompleteCode/incompleteEquals.antlrtree.txt
@@ -50,15 +50,6 @@ File: incompleteEquals.kt - 128457813e0820d4033dc31d0ee6fdbf (WITH_ERRORS)
Identifier("a")
equalityOperator
EQEQ("==")
- NL("\n")
- comparison
- genericCallLikeComparison
- infixOperation
- elvisExpression
- infixFunctionCall
- rangeExpression
- additiveExpression
- multiplicativeExpression
- asExpression
- prefixUnaryExpression
+ semis
+ NL("\n")
EOF("")
diff --git a/grammar/testData/diagnostics/incompleteCode/kt59041.antlrtree.txt b/grammar/testData/diagnostics/incompleteCode/kt59041.antlrtree.txt
new file mode 100644
index 000000000..924802441
--- /dev/null
+++ b/grammar/testData/diagnostics/incompleteCode/kt59041.antlrtree.txt
@@ -0,0 +1,56 @@
+File: kt59041.kt - c760b6913d1fae9c44206ea7b67da696 (WITH_ERRORS)
+ NL("\n")
+ NL("\n")
+ packageHeader
+ importList
+ topLevelObject
+ declaration
+ functionDeclaration
+ FUN("fun")
+ simpleIdentifier
+ Identifier("main")
+ functionValueParameters
+ LPAREN("(")
+ RPAREN(")")
+ LCURL("{")
+ NL("\n")
+ topLevelObject
+ declaration
+ propertyDeclaration
+ VAL("val")
+ variableDeclaration
+ simpleIdentifier
+ Identifier("list")
+ ASSIGNMENT("=")
+ expression
+ disjunction
+ conjunction
+ equality
+ comparison
+ genericCallLikeComparison
+ infixOperation
+ elvisExpression
+ infixFunctionCall
+ rangeExpression
+ additiveExpression
+ multiplicativeExpression
+ asExpression
+ prefixUnaryExpression
+ postfixUnaryExpression
+ primaryExpression
+ simpleIdentifier
+ Identifier("mutable")
+ Identifier("ListOf")
+ LANGLE("<")
+ Identifier("Int")
+ RANGLE(">")
+ LPAREN("(")
+ IntegerLiteral("1")
+ RPAREN(")")
+ LCURL("{")
+ RCURL("}")
+ semis
+ NL("\n")
+ RCURL("}")
+ NL("\n")
+ EOF("