- Rename IdeaKpmProjectModelBuildingContext to IdeaKpmProjectBuildingContext
- Support building IdeaKpmProjectContainer
- Implement IdeaKpmSerializationContext on Gradle side
^KT-52568 In Progress
Instead of filtering local/synthetic classes based on ClassDescriptor
instances, do it by interpreting kotlin.Metadata. This is needed to
enable these tests for JVM IR, where descriptors are not available in
this way.
This is done to avoid a potential `ConcurrentModificationException`:
```
Caused by: java.util.ConcurrentModificationException
at java.util.Hashtable$Enumerator.next(Hashtable.java:1387)
at org.gradle.internal.classpath.Instrumented$DecoratingEntrySet$1.computeNext(Instrumented.java:349)
at org.gradle.internal.classpath.Instrumented$DecoratingEntrySet$1.computeNext(Instrumented.java:343)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:141)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:136)
at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:176)
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:131)
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:156)
at kotlin.collections.MapsKt__MapsKt.putAll(Maps.kt:419)
at kotlin.collections.MapsKt__MapsKt.toMap(Maps.kt:587)
at kotlin.collections.MapsKt__MapsKt.toMap(Maps.kt:581)
at org.jetbrains.kotlin.compilerRunner.KotlinToolRunner.runViaExec(KotlinToolRunner.kt:95)
at org.jetbrains.kotlin.compilerRunner.KotlinToolRunner.run(KotlinToolRunner.kt:85)
```
If only regular kotlin .kt (and .java) files are compiled, do not
register file extensions that may come from discovered script
definitions. Since the discovery is lazy by itself, this should
skip jars processing for regular compilation scenarios without scripts.
#KT-47816 fixed
- process command line properly when plugin is autoloaded
- add and fix options to disable definitions autoloading and discovery
- cleanup unused code
(partial test is added to "avoid definitions discovery" commit)
to support value types erased from runtime classes. See example
in added tests for motivation.
#KT-45065 fixed
also refactor launcher repl test and result type rendering
As stated in JavaDoc for 'PsiElement' (formatting is slightly changed):
Returns the reference from this PSI element to another PSI element
(or elements), if one exists. If the element has multiple associated
references, returns the first associated reference.