Snap for 9281035 from de12a66120554ec8a6e30ca1d810b3239b7aafcd to studio-ee-release
Change-Id: I5457ef46251f26d0638ffae52768cb19d0edb2b8
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index 7617b06..788a9c4 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -9,6 +9,6 @@
<option name="additionalArguments" value="-version -Xallow-kotlin-package -Xskip-metadata-version-check" />
</component>
<component name="KotlinJpsPluginSettings">
- <option name="version" value="1.7.20-dev-2726" />
+ <option name="version" value="1.7.21" />
</component>
</project>
\ No newline at end of file
diff --git a/ChangeLog.md b/ChangeLog.md
index 102f6d4..ac218c8 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,15 +1,162 @@
-## 1.7.20
+## 1.7.21
### Compiler
+- [`KT-54463`](https://youtrack.jetbrains.com/issue/KT-54463) Delegating to a field with a platform type causes java.lang.NoSuchFieldError: value$delegate
+- [`KT-54509`](https://youtrack.jetbrains.com/issue/KT-54509) Ir Interpreter: unable to evaluate string concatenation with "this" as argument
+- [`KT-54004`](https://youtrack.jetbrains.com/issue/KT-54004) Builder type inference does not work correctly with variable assignment and breaks run-time
+- [`KT-54393`](https://youtrack.jetbrains.com/issue/KT-54393) Change in behavior from 1.7.10 to 1.7.20 for java field override.
+- [`KT-54615`](https://youtrack.jetbrains.com/issue/KT-54615) JVM: Internal error in file lowering: java.lang.AssertionError: Error occurred while optimizing an expression
+- [`KT-54581`](https://youtrack.jetbrains.com/issue/KT-54581) JVM: "VerifyError: Bad type on operand stack" with generic inline function and `when` inside try-catch block
+- [`KT-53146`](https://youtrack.jetbrains.com/issue/KT-53146) JVM IR: unnecessary checkcast of null leads to NoClassDefFoundError if the type isn't available at runtime
+- [`KT-54600`](https://youtrack.jetbrains.com/issue/KT-54600) NPE on passing nullable Kotlin lambda as Java's generic SAM interface with `super` type bound
+- [`KT-54707`](https://youtrack.jetbrains.com/issue/KT-54707) "VerifyError: Bad type on operand stack" in inline call chain on a nullable array value
+- [`KT-54650`](https://youtrack.jetbrains.com/issue/KT-54650) Binary incompatible ABI change in Kotlin 1.7.20
+
+
+### Native. Runtime. Memory
+
+- [`KT-54498`](https://youtrack.jetbrains.com/issue/KT-54498) Deprecation message of 'FreezingIsDeprecated' is not really helpful
+
+### Tools. Gradle. Multiplatform
+
+- [`KT-54387`](https://youtrack.jetbrains.com/issue/KT-54387) Remove MPP alpha stability warning
+- [`KT-48436`](https://youtrack.jetbrains.com/issue/KT-48436) False positive "The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation"
+
+### Tools. JPS
+
+- [`KT-45474`](https://youtrack.jetbrains.com/issue/KT-45474) False positive NO_ELSE_IN_WHEN on sealed class with incremental compilation
+
+
+## 1.7.20
+
+### Analysis API
+
+- [`KT-52667`](https://youtrack.jetbrains.com/issue/KT-52667) FIR IDE: fun interfaces (SAM interfaces) are not properly resolved
+- [`KT-52136`](https://youtrack.jetbrains.com/issue/KT-52136) FIR: Implicit type declaration from the other module cannot be used for overloading
+
+### Analysis API. FE1.0
+
+- [`KT-51962`](https://youtrack.jetbrains.com/issue/KT-51962) Analysis API: Finish Analysis API for FE1.0
+
+### Analysis API. FIR
+
+- [`KT-52779`](https://youtrack.jetbrains.com/issue/KT-52779) FIR IDE: Import Optimizer cannot handle generic type qualifiers
+- [`KT-50236`](https://youtrack.jetbrains.com/issue/KT-50236) Fix OOB modification trackers for non-Kotlin code
+- [`KT-51240`](https://youtrack.jetbrains.com/issue/KT-51240) Analysis API: KtAnalysisSession for a specific module cannot create a symbol for PSI that cannot be seen from that module.
+- [`KT-50868`](https://youtrack.jetbrains.com/issue/KT-50868) Analysis API: decompiled type aliases are not resolved
+
+### Compiler
+
+- [`KT-53739`](https://youtrack.jetbrains.com/issue/KT-53739) Builder inference, extension hides members
+- [`KT-53733`](https://youtrack.jetbrains.com/issue/KT-53733) Kotlin/Native: update source documentation for the new default memory manager
+- [`KT-53667`](https://youtrack.jetbrains.com/issue/KT-53667) Compiler crashes on attempt to alloc a string on the stack in new MM
+- [`KT-53480`](https://youtrack.jetbrains.com/issue/KT-53480) Internal error in file lowering: java.lang.ClassNotFoundException: com.android.systemui.R$string
+- [`KT-52843`](https://youtrack.jetbrains.com/issue/KT-52843) Compose: NPE at Parameters.getParameterByDeclarationSlot if inline function with default arguments takes a lambda which captures value class represented by Long
+- [`KT-53475`](https://youtrack.jetbrains.com/issue/KT-53475) Kotlin/Native for iOS: "IllegalArgumentException: Sequence has more than one element"
+
#### New Features
- [`KT-52495`](https://youtrack.jetbrains.com/issue/KT-52495) Support until operator in back-ends
- [`KT-52420`](https://youtrack.jetbrains.com/issue/KT-52420) Implement resolve of until operator
- [`KT-52419`](https://youtrack.jetbrains.com/issue/KT-52419) Implement until operator in the parser
+- [`KT-33755`](https://youtrack.jetbrains.com/issue/KT-33755) Kotlin/Native: Provide a way to customize a bundle Identifier of a generated framework
+- [`KT-51665`](https://youtrack.jetbrains.com/issue/KT-51665) FIR: implement label resolve for "typed this" case
+- [`KT-52361`](https://youtrack.jetbrains.com/issue/KT-52361) Report warning on potentially empty intersection types
+
+#### Performance Improvements
+
+- [`KT-47816`](https://youtrack.jetbrains.com/issue/KT-47816) Disable script discovery for non-script environments
+- [`KT-48635`](https://youtrack.jetbrains.com/issue/KT-48635) JVM IR: Double/Float values are boxed when comparing for equality in equals method of data/value classes
+- [`KT-23397`](https://youtrack.jetbrains.com/issue/KT-23397) Optimize out field for property delegate when it's safe (JVM)
#### Fixes
-
+- [`KT-53272`](https://youtrack.jetbrains.com/issue/KT-53272) Backend Internal error: Exception during IR lowering / No such value argument slot: 2
+- [`KT-53124`](https://youtrack.jetbrains.com/issue/KT-53124) Receiver type mismatch when combining extension properties, type projections, Java sources, and F-bounded type-variables
+- [`KT-51868`](https://youtrack.jetbrains.com/issue/KT-51868) JVM / IR: Inconsistent behaviour between lambda expression and SAM interface conversion for the same interface
+- [`KT-36770`](https://youtrack.jetbrains.com/issue/KT-36770) Prohibit unsafe calls with expected `@NotNull` T and given Kotlin generic parameter with nullable bound
+- [`KT-52974`](https://youtrack.jetbrains.com/issue/KT-52974) "IllegalStateException: Symbol with IrSimpleFunctionSymbolImpl is unbound" compiling native targets of MPP project
+- [`KT-53007`](https://youtrack.jetbrains.com/issue/KT-53007) JVM: "Bad invokespecial instruction: current class isn't assignable to reference class" when call superclass of outer class method from inner class
+- [`KT-53019`](https://youtrack.jetbrains.com/issue/KT-53019) K2: cannot cast callable reference to Function1 in runtime
+- [`KT-53031`](https://youtrack.jetbrains.com/issue/KT-53031) K2 compiler crashes with IllegalStateException: No type in ProtoBuf.ValueParameter
+- [`KT-29168`](https://youtrack.jetbrains.com/issue/KT-29168) Prohibit upper bounds violation with generic typealias using not all type parameters as arguments for underlying type in supertypes
+- [`KT-52432`](https://youtrack.jetbrains.com/issue/KT-52432) Using the IDE compiled with K2 (useFir) throws VerifyError exception
+- [`KT-52327`](https://youtrack.jetbrains.com/issue/KT-52327) False negative: TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM isn't reported
+- [`KT-49682`](https://youtrack.jetbrains.com/issue/KT-49682) Support JVM IR in KAPT stub generation
+- [`KT-24643`](https://youtrack.jetbrains.com/issue/KT-24643) Prohibit using a type parameter declared for an extension property inside delegate
+- [`KT-51972`](https://youtrack.jetbrains.com/issue/KT-51972) FIR, Gradle: "Symbol is invisible" compilation error with enabled Kotlin Lombok compiler plugin
+- [`KT-52011`](https://youtrack.jetbrains.com/issue/KT-52011) [FIR] All-open compiler plugin isn't supported
+- [`KT-51950`](https://youtrack.jetbrains.com/issue/KT-51950) JVM IR: "IndexOutOfBoundsException: Cannot pop operand off an empty stack" with crossinline lambdas and interface delegation
+- [`KT-52540`](https://youtrack.jetbrains.com/issue/KT-52540) Native: kotlin.NotImplementedError with Arrow library
+- [`KT-48031`](https://youtrack.jetbrains.com/issue/KT-48031) "IllegalStateException: Type variable TypeVariable(T) should not be fixed!"
+- [`KT-47708`](https://youtrack.jetbrains.com/issue/KT-47708) RequiresOptIn check does not flag experimental method usage in SAM lambda expressions
+- [`KT-52913`](https://youtrack.jetbrains.com/issue/KT-52913) JVM / IR: "IllegalArgumentException: Inline class types should have the same representation" when trying to down cast cast a value class
+- [`KT-50771`](https://youtrack.jetbrains.com/issue/KT-50771) IR partial linkage: Removed abstract callable members are not supported
+- [`KT-52994`](https://youtrack.jetbrains.com/issue/KT-52994) Enable generic inline classes as experimental feature
+- [`KT-52742`](https://youtrack.jetbrains.com/issue/KT-52742) CYCLE_IN_ANNOTATION_PARAMETER_ERROR false positive on annotations with default values
+- [`KT-52743`](https://youtrack.jetbrains.com/issue/KT-52743) Non-null generic functions throws NPE when assigned to val
+- [`KT-52745`](https://youtrack.jetbrains.com/issue/KT-52745) Frontend / K2: "IncompatibleClassChangeError: class A$B overrides final method A.length()I" caused by delegation in a sealed class
+- [`KT-52832`](https://youtrack.jetbrains.com/issue/KT-52832) Tree-generator's method FirExpression::isFirType returns true and false for different field names; it should always be true
+- [`KT-52403`](https://youtrack.jetbrains.com/issue/KT-52403) IncompatibleClassChangeError when inlining suspend funs
+- [`KT-50107`](https://youtrack.jetbrains.com/issue/KT-50107) Missed USAGE_IS_NOT_INLINABLE diagnostic: Leaking inline lambda parameter through extension receiver
+- [`KT-47965`](https://youtrack.jetbrains.com/issue/KT-47965) Missed USAGE_IS_NOT_INLINABLE diagnostic on inline lambda parameter usage as receiver of .let call
+- [`KT-25787`](https://youtrack.jetbrains.com/issue/KT-25787) No error on crossinline usage of receiver parameter of functional type in an inline function
+- [`KT-52762`](https://youtrack.jetbrains.com/issue/KT-52762) Frontend / K2: Named arguments for Java classes lead to "Cannot find a parameter with this name"
+- [`KT-52680`](https://youtrack.jetbrains.com/issue/KT-52680) K2: overload resolution ambiguity if `this` is casted in a different method
+- [`KT-52676`](https://youtrack.jetbrains.com/issue/KT-52676) K2: Unsupported compile-time value IrGetFieldImpl instead of IrConst in AnnotationCodegen for constant from Java
+- [`KT-50293`](https://youtrack.jetbrains.com/issue/KT-50293) False positive: USELESS_CAST on stub types
+- [`KT-52175`](https://youtrack.jetbrains.com/issue/KT-52175) WRONG_ANNOTATION_TARGET for annotation that used inside if
+- [`KT-52338`](https://youtrack.jetbrains.com/issue/KT-52338) "IncompatibleClassChangeError: Expected non-static field" with Kotlin class with same-named companion object property as base Java class field
+- [`KT-49507`](https://youtrack.jetbrains.com/issue/KT-49507) JVM: "IllegalAccessError: class X tried to access private field" with same-named Kotlin property and Java base class field
+- [`KT-44512`](https://youtrack.jetbrains.com/issue/KT-44512) FIR DFA: incorrect smartcast after null assignment inside a lambda
+- [`KT-49200`](https://youtrack.jetbrains.com/issue/KT-49200) FIR/FE 1.0: different behavior with multiple matching star imports
+- [`KT-52718`](https://youtrack.jetbrains.com/issue/KT-52718) declaringClass deprecation message mentions the wrong replacement in 1.7
+- [`KT-52190`](https://youtrack.jetbrains.com/issue/KT-52190) FIR2IR: Unexpected IrErrorTypeImpl type for put method inside buildMap
+- [`KT-52197`](https://youtrack.jetbrains.com/issue/KT-52197) Incorrect inference of var type inside lambda that passed to extension function with type parameters that defined inside this lambda
+- [`KT-52057`](https://youtrack.jetbrains.com/issue/KT-52057) Unsupported compile-time value STRING_CONCATENATION and GET_FIELD in annotation arguments
+- [`KT-47823`](https://youtrack.jetbrains.com/issue/KT-47823) JVM IR: "IllegalArgumentException: Inline class types should have the same representation" with `break` usage in the loop range
+- [`KT-51883`](https://youtrack.jetbrains.com/issue/KT-51883) Kotlin 1.6.20 generates "-" in type names around lambdas and inline extension function with reified type which breaks Apache Beam
+- [`KT-52684`](https://youtrack.jetbrains.com/issue/KT-52684) Syntax error regression on complicated combination of LT and GTEQ
+- [`KT-52417`](https://youtrack.jetbrains.com/issue/KT-52417) Reflection: Can't reflect on type parameters captured by SAM converted lambda
+- [`KT-46797`](https://youtrack.jetbrains.com/issue/KT-46797) JVM IR: suspendImpl has no generic signature, breaking reified types in anonymous object supertypes when using the type token pattern
+- [`KT-51464`](https://youtrack.jetbrains.com/issue/KT-51464) FIR: Unable to infer type in coroutines flow code
+- [`KT-52163`](https://youtrack.jetbrains.com/issue/KT-52163) JVM IR: Double.compareTo(Int) compiled to integer comparison
+- [`KT-41980`](https://youtrack.jetbrains.com/issue/KT-41980) FIR: erroneous scope during annotation resolve
+- [`KT-47159`](https://youtrack.jetbrains.com/issue/KT-47159) `KtPsiUtils.areParenthesesUseless()` is returning a false positive on expressions for interface delegation
+- [`KT-51418`](https://youtrack.jetbrains.com/issue/KT-51418) Substitute anonymous type's supertypes
+- [`KT-35544`](https://youtrack.jetbrains.com/issue/KT-35544) kotlin.TypeCastException has no message on Native
+- [`KT-52386`](https://youtrack.jetbrains.com/issue/KT-52386) StackOverflowError during Kotlin/Native gradle build
+- [`KT-52592`](https://youtrack.jetbrains.com/issue/KT-52592) NPE from KProperty.getExtensionDelegate on property delegated to another property
+- [`KT-52551`](https://youtrack.jetbrains.com/issue/KT-52551) Delegating to object property reference does not invoke object's initializer
+- [`KT-51704`](https://youtrack.jetbrains.com/issue/KT-51704) Contracts: "AssertionError: Arguments and parameters size mismatch" with companion object
+- [`KT-25527`](https://youtrack.jetbrains.com/issue/KT-25527) False positive UNUSED_VALUE for delegated property/variable
+- [`KT-51002`](https://youtrack.jetbrains.com/issue/KT-51002) [FIR] Hidden declaration hides visible one
+- [`KT-51008`](https://youtrack.jetbrains.com/issue/KT-51008) [FIR] Star import does not work for nested calssifiers of java class
+- [`KT-52407`](https://youtrack.jetbrains.com/issue/KT-52407) FIR: Star import has lower priority than built-in import
+- [`KT-52431`](https://youtrack.jetbrains.com/issue/KT-52431) Reported error instead of warning due to empty intersection type found
+- [`KT-49394`](https://youtrack.jetbrains.com/issue/KT-49394) Bad message and suggestion: The feature "unit conversion" is disabled
+- [`KT-51168`](https://youtrack.jetbrains.com/issue/KT-51168) FIR: Inference error with Java interop and captured types
+- [`KT-49961`](https://youtrack.jetbrains.com/issue/KT-49961) "AssertionError: Left expression was not processed: BINARY_EXPRESSION" when analyzing dangling [bracketed] expression inside elvis
+- [`KT-50108`](https://youtrack.jetbrains.com/issue/KT-50108) Difference in fun interface conversion behavior for uninitialized not-null function values
+- [`KT-51889`](https://youtrack.jetbrains.com/issue/KT-51889) Calls to super-classes constructors with context receivers fail on runtime
+- [`KT-51228`](https://youtrack.jetbrains.com/issue/KT-51228) [FIR] Unresolved reference on callable reference on implicit `this` with smartcast
+- [`KT-52364`](https://youtrack.jetbrains.com/issue/KT-52364) False positive for INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION
+- [`KT-52237`](https://youtrack.jetbrains.com/issue/KT-52237) JVM / IR: "IllegalArgumentException: No argument for parameter VALUE_PARAMETER CONTINUATION_CLASS" when implementing Map interface on class with suspending functions
+- [`KT-50832`](https://youtrack.jetbrains.com/issue/KT-50832) Method references to suspend inline functions are processed incorrectly
+- [`KT-52194`](https://youtrack.jetbrains.com/issue/KT-52194) False positive "Class 'my.packge.MyClass' is compiled by a pre-release version of Kotlin and cannot be loaded by this version of the compiler" but builds fine
+- [`KT-47203`](https://youtrack.jetbrains.com/issue/KT-47203) JVM Debugger: Parameter value doesn't change for tailrec function
+- [`KT-52131`](https://youtrack.jetbrains.com/issue/KT-52131) False positive variable unused warning when calling inline function in finally block
+- [`KT-51738`](https://youtrack.jetbrains.com/issue/KT-51738) Debugger: stepping over in inline function with multiple inline lambda invocations is incorrect
+- [`KT-52198`](https://youtrack.jetbrains.com/issue/KT-52198) Losing reference to the value of an outer variable (Ref$ObjectRef) when using suspend inline with suspendCancellableCoroutine
+- [`KT-50994`](https://youtrack.jetbrains.com/issue/KT-50994) FIR: AssertionError during inference of delegated properties with implicit types
+- [`KT-51757`](https://youtrack.jetbrains.com/issue/KT-51757) FIR does not see various JS/Native specific declarations in common modules
+- [`KT-51201`](https://youtrack.jetbrains.com/issue/KT-51201) FIR: ARGUMENT_TYPE_MISMATCH diagnostic contains generic parameter instead of the actual type
+- [`KT-48444`](https://youtrack.jetbrains.com/issue/KT-48444) FIR: type argument rejected for annotation
+- [`KT-51754`](https://youtrack.jetbrains.com/issue/KT-51754) JVM: Local variable table invalid for do-while with continue
+- [`KT-51936`](https://youtrack.jetbrains.com/issue/KT-51936) Breakpoint not hit on last line of suspend function on Android
+- [`KT-27333`](https://youtrack.jetbrains.com/issue/KT-27333) Forbid `@Synchronized` annotation on suspend functions
+- [`KT-51530`](https://youtrack.jetbrains.com/issue/KT-51530) "StackOverflowError: CoroutineTransformerMethodVisitor.spillVariables" with data class in Flow
+- [`KT-51460`](https://youtrack.jetbrains.com/issue/KT-51460) FIR: Protected property inaccessible from inner class
- [`KT-53947`](https://youtrack.jetbrains.com/issue/KT-53947) IllegalStateException: No mapping for symbol: VALUE_PARAMETER INSTANCE_RECEIVER
- [`KT-51234`](https://youtrack.jetbrains.com/issue/KT-51234) Context receivers can be duplicated in function declaration
- [`KT-51576`](https://youtrack.jetbrains.com/issue/KT-51576) Context receivers: "AssertionError: Callers must check that current token is IDENTIFIER followed with '@'" with `at` character
@@ -41,6 +188,15 @@
- [`KTIJ-22209`](https://youtrack.jetbrains.com/issue/KTIJ-22209) Configure Kotlin on 221 idea adds 1.6.10 Kotlin (despite the fact that IDE plugin is 1.7.10)
- [`KTIJ-22171`](https://youtrack.jetbrains.com/issue/KTIJ-22171) Fix test BuiltInDecompilerConsistencyTest
- [`KTIJ-22016`](https://youtrack.jetbrains.com/issue/KTIJ-22016) Empty .kt file and build.gradle.kts can trigger an error while searching for a facade light class
+- [`KT-52571`](https://youtrack.jetbrains.com/issue/KT-52571) MPP Tasks on import are not up-to-date after subsequent launches
+- [`KT-47777`](https://youtrack.jetbrains.com/issue/KT-47777) ISE thrown from KtLightClassForFacadeImpl.Companion.createForFacadeNoCache has wrong message.
+
+### IDE. FIR
+
+- [`KT-52360`](https://youtrack.jetbrains.com/issue/KT-52360) FIR IDE: Make the fix of `isInheritor` method better
+- [`KT-51786`](https://youtrack.jetbrains.com/issue/KT-51786) FIR IDE: IllegalStateException exception in Inspections' infrastructure
+- [`KT-52331`](https://youtrack.jetbrains.com/issue/KT-52331) Analysis API: ArrayIndexOutOfBoundsException exception in Diagnostics' infrastructure
+
### IDE. Code Style, Formatting
@@ -56,6 +212,7 @@
### IDE. Gradle Integration
+- [`KT-47627`](https://youtrack.jetbrains.com/issue/KT-47627) IDE import fails with com.intellij.util.lang.PathClassLoader error for `runCommonizer` Gradle task on 212, 213 IDEAs
- [`KTIJ-21638`](https://youtrack.jetbrains.com/issue/KTIJ-21638) MPP: IntelliJ can not resolve MPP references in common-code
- [`KT-52216`](https://youtrack.jetbrains.com/issue/KT-52216) HMPP / KTOR: False positive "TYPE_MISMATCH" with Throwable descendant
@@ -76,45 +233,187 @@
- [`KTIJ-21672`](https://youtrack.jetbrains.com/issue/KTIJ-21672) FIR IDE: Method reference on generic class breaks resolve
- [`KTIJ-21714`](https://youtrack.jetbrains.com/issue/KTIJ-21714) FIR IDE: Inherently imported type from another module is not properly resolved
+### IDE. Script
+
+- [`KT-52525`](https://youtrack.jetbrains.com/issue/KT-52525) Update scripts handling in source roots
+
+
### IDE. Misc
- [`KTIJ-21699`](https://youtrack.jetbrains.com/issue/KTIJ-21699) Refactoring: move out parts of the plugin useful for both FE10 and K2
+### JavaScript
+
+#### New Features
+
+- [`KT-39423`](https://youtrack.jetbrains.com/issue/KT-39423) KJS: Optionally generate a method to handle optional parameters for function in typescript
+- [`KT-42282`](https://youtrack.jetbrains.com/issue/KT-42282) KJS IR: add an ability to run separate tests
+
+#### Performance Improvements
+
+- [`KT-50270`](https://youtrack.jetbrains.com/issue/KT-50270) KJS IR: Unnecessary getter and setter calls when accessing class members
+
+#### Fixes
+
+- [`KT-51133`](https://youtrack.jetbrains.com/issue/KT-51133) Kotlin/JS - IR: even simple lambdas generate a lot of useless boilerplate
+- [`KT-51123`](https://youtrack.jetbrains.com/issue/KT-51123) Provide a way to add comments to generated JS
+- [`KT-48493`](https://youtrack.jetbrains.com/issue/KT-48493) KJS / IR: Invalid d.ts for inner classes inside objects
+- [`KT-52553`](https://youtrack.jetbrains.com/issue/KT-52553) KJS / IR: diamond hierarchy with super.toString produces stack overflow in runtime
+- [`KT-23252`](https://youtrack.jetbrains.com/issue/KT-23252) JS: Unit materialization on declaration and assignment
+- [`KT-51128`](https://youtrack.jetbrains.com/issue/KT-51128) Kotlin/JS - IR generate huge count of useless blocks
+- [`KT-50778`](https://youtrack.jetbrains.com/issue/KT-50778) KJS/IR: Inline class has no field when building production distribution
+- [`KT-50157`](https://youtrack.jetbrains.com/issue/KT-50157) KSJ IR: Applying identity equality operator to Chars always returns false
+- [`KT-38262`](https://youtrack.jetbrains.com/issue/KT-38262) Javascript generation (and Typescript) fails on 'then', 'catch' and 'finally' (and others?) claiming they are reserved names
+- [`KT-51066`](https://youtrack.jetbrains.com/issue/KT-51066) KJS / IR: suspend lambda parameter of value class is undefined
+- [`KT-51102`](https://youtrack.jetbrains.com/issue/KT-51102) KJS/IR: Assertion failed at translateCallArguments(jsAstUtils.kt:343)
+- [`KT-51878`](https://youtrack.jetbrains.com/issue/KT-51878) KJS / Legacy: Unit is not materialized in an overridden method, but it should be
+
### Language Design
+- [`KT-47986`](https://youtrack.jetbrains.com/issue/KT-47986) Implicit inferring a type variable into an upper bound in the builder inference context
+- [`KT-49264`](https://youtrack.jetbrains.com/issue/KT-49264) Deprecate infix function calls of functions named "suspend" with dangling function literal
- [`KT-25636`](https://youtrack.jetbrains.com/issue/KT-25636) Native: Object is frozen by default problem
- [`KT-49303`](https://youtrack.jetbrains.com/issue/KT-49303) Implement support for basic compile-time evaluation
### Libraries
+- [`KT-52932`](https://youtrack.jetbrains.com/issue/KT-52932) Open-ended ranges in the standard library
- [`KT-52910`](https://youtrack.jetbrains.com/issue/KT-52910) Provide visit extension functions for java.nio.file.Path
-- [`KT-52909`](https://youtrack.jetbrains.com/issue/KT-52909) Implement a walk extension function for java.nio.file.Path
+- [`KT-48232`](https://youtrack.jetbrains.com/issue/KT-48232) Multiplatform function for computing cubic root
+- [`KT-52778`](https://youtrack.jetbrains.com/issue/KT-52778) The documentation for the `Duration` does not indicate any differences from the ISO-8601
+- [`KT-52618`](https://youtrack.jetbrains.com/issue/KT-52618) ThreadLocalRandom is not a good source of randomness on Android before SDK 34, so don't use it for Kotlin Random
+
+### Native
+
+- [`KT-53346`](https://youtrack.jetbrains.com/issue/KT-53346) MPP project with kotlinx-serialization-json:1.4.0-RC is not built
+
+
+### Native. C Export
+
+- [`KT-45468`](https://youtrack.jetbrains.com/issue/KT-45468) Kotlin/Native: Bitcode verification error when trying to export a cached klib to a static or dynamic library
+
+### Native. C and ObjC Import
+
+- [`KT-53373`](https://youtrack.jetbrains.com/issue/KT-53373) Native: @ExportObjCClass doesn't work with the new memory manager
+- [`KT-49034`](https://youtrack.jetbrains.com/issue/KT-49034) Kotlin/Native: `cnames.structs.Foo` resolves into wrong declaration
+- [`KT-26478`](https://youtrack.jetbrains.com/issue/KT-26478) Objective-C object's class name is null in ClassCastException's message
+
+### Native. ObjC Export
+
+- [`KT-51593`](https://youtrack.jetbrains.com/issue/KT-51593) Include more information in Objective-C header documentation
+- [`KT-33117`](https://youtrack.jetbrains.com/issue/KT-33117) Improve customizing Info.plist in produced frameworks
+- [`KT-52681`](https://youtrack.jetbrains.com/issue/KT-52681) Native: `@end;` for Objective-C is generated with an unnecessary semicolon
+
+### Native. Platforms
+
+- [`KT-52226`](https://youtrack.jetbrains.com/issue/KT-52226) Kotlin/Native: Add support for cross-compilation of MIPS targets from macOS and Windows hosts
+
+### Native. Runtime
+
+- [`KT-52430`](https://youtrack.jetbrains.com/issue/KT-52430) KMM 1.6.21 framework built with Xcode13, new MM GC Can't support iOS 9.x
+- [`KT-53534`](https://youtrack.jetbrains.com/issue/KT-53534) Kotlin/Native: `-Xruntime-logs=gc=info` flag doesn't work with compiler caches in 1.7.20-beta
+
+### Native. Runtime. Memory
+
+- [`KT-52692`](https://youtrack.jetbrains.com/issue/KT-52692) Kotlin/Native: fix tests with aggressive GC
+- [`KT-52130`](https://youtrack.jetbrains.com/issue/KT-52130) Kotlin/Native: use Xallocator for Kotlin objects only
+- [`KT-51436`](https://youtrack.jetbrains.com/issue/KT-51436) Kotlin/Native: optimize mark queue
+
+### Reflection
+
+- [`KT-51804`](https://youtrack.jetbrains.com/issue/KT-51804) An error occurs when callBy a KFunction that contains a value class as an argument, has a default argument set, and has more than 32 arguments.
+
+### Tools. CLI
+
+- [`KT-52465`](https://youtrack.jetbrains.com/issue/KT-52465) CLI: IllegalStateException IrSimpleFunctionPublicSymbolImpl when source root is duplicated
+- [`KT-52380`](https://youtrack.jetbrains.com/issue/KT-52380) Invalid path to compiler plugins should be reported as a compiler error
+- [`KT-51025`](https://youtrack.jetbrains.com/issue/KT-51025) JVM CLI compiler takes class file from classpath instead of input java source file
+- [`KT-51846`](https://youtrack.jetbrains.com/issue/KT-51846) Setting random value to the compiler argument where number is expected should produce an error. "-Xbackend-threads=abcd"
+
+### Tools. Compiler Plugins
+
+- [`KT-52486`](https://youtrack.jetbrains.com/issue/KT-52486) [K2] Looking for function/constructor whose parameters are annotated or meta annotated
+- [`KT-52872`](https://youtrack.jetbrains.com/issue/KT-52872) Mark supportsK2 in ComponentRegistrar.kt as JvmDefault to avoid compatibility problems
+- [`KT-52804`](https://youtrack.jetbrains.com/issue/KT-52804) A function obtained by Fir IrBuiltins has an incorrect package
+- [`KT-52468`](https://youtrack.jetbrains.com/issue/KT-52468) Rename module and jar for lombok compiler plugin
### Tools. Gradle
+- [`KT-53670`](https://youtrack.jetbrains.com/issue/KT-53670) Gradle: Cyclic dependency between kotlin-gradle-plugin-idea-1.7.20-Beta and kotlin-gradle-plugin-idea-proto-1.7.20-Beta
+- [`KT-53615`](https://youtrack.jetbrains.com/issue/KT-53615) Gradle: Fix deprecation warnings in CleanableStoreImpl
+- [`KT-53118`](https://youtrack.jetbrains.com/issue/KT-53118) Fully up-to-date builds are slower with Kotlin 1.7.0
+- [`KT-51923`](https://youtrack.jetbrains.com/issue/KT-51923) Improve usability of errors and warnings by being able to click on them
+- [`KT-53244`](https://youtrack.jetbrains.com/issue/KT-53244) Report from gradle about compiler plugins
+- [`KT-52839`](https://youtrack.jetbrains.com/issue/KT-52839) Warn in Gradle log why incremental compilation failed
+- [`KT-46019`](https://youtrack.jetbrains.com/issue/KT-46019) Compatibility with Gradle 7.1 release
+- [`KT-47047`](https://youtrack.jetbrains.com/issue/KT-47047) Migrate Kotlin Gradle Plugin from using Gradle conventions
+- [`KT-52698`](https://youtrack.jetbrains.com/issue/KT-52698) Don't add InspectClassesForMultiModuleIC task when new incremental compilation is enabled
+- [`KT-52867`](https://youtrack.jetbrains.com/issue/KT-52867) Provide simplified JVM toolchain configuration method
+- [`KT-45747`](https://youtrack.jetbrains.com/issue/KT-45747) Add basic JUnit 5 Kotlin Gradle Plugin Android tests setup
- [`KT-46034`](https://youtrack.jetbrains.com/issue/KT-46034) Shadow Kotlin Gradle plugin dependencies
- [`KT-28664`](https://youtrack.jetbrains.com/issue/KT-28664) Support ExtensionContainer on kotlin targets and source sets.
- [`KT-19472`](https://youtrack.jetbrains.com/issue/KT-19472) Useful extensions of Gradle Kotlin DSL provided by Gradle Kotlin plugin
- [`KT-34393`](https://youtrack.jetbrains.com/issue/KT-34393) Kotlin Gradle DSL: Inconsistent srcDir configuration between Java and Kotlin
- [`KT-51629`](https://youtrack.jetbrains.com/issue/KT-51629) There isn't enough info about incremental compilation state in logs while running build with --info key
+
+### Tools. Gradle. Cocoapods
+
+- [`KT-53174`](https://youtrack.jetbrains.com/issue/KT-53174) CocoaPods: Synthetic Podfile does not specify platform
+- [`KT-53127`](https://youtrack.jetbrains.com/issue/KT-53127) "MaterialComponents normal armv7" in Cocoapods plugin between Kotlin 1.6.21 and 1.7.0
+- [`KT-44155`](https://youtrack.jetbrains.com/issue/KT-44155) Cocoapods doesn't support pods without module map file inside
+- [`KT-49032`](https://youtrack.jetbrains.com/issue/KT-49032) Cocoapods cinterop: some header files are not found
+- [`KT-53337`](https://youtrack.jetbrains.com/issue/KT-53337) Add warning about future changing default linking type of framework provided via cocoapods plugin
+
### Tools. Gradle. JS
+- [`KT-52637`](https://youtrack.jetbrains.com/issue/KT-52637) KJS / Gradle: Add SCSS webpack config
+- [`KT-51527`](https://youtrack.jetbrains.com/issue/KT-51527) Kotlin/JS: BrowserXRun causes full-screen Webpack error "Compiled with problems: asset size limit/entrypoint size limit" for fresh Kotlin-React project from wizard
+- [`KT-51532`](https://youtrack.jetbrains.com/issue/KT-51532) Kotlin/JS: passing environment variable via Gradle script causes "Execution optimizations have been disabled" warnings
- [`KT-52221`](https://youtrack.jetbrains.com/issue/KT-52221) Kotlin/JS: failed Node tests are not reported in a standard way
### Tools. Gradle. Multiplatform
+- [`KT-52243`](https://youtrack.jetbrains.com/issue/KT-52243) CInteropProcess is not cacheable despite the annotation
+- [`KT-52741`](https://youtrack.jetbrains.com/issue/KT-52741) MPP: klib outputs are not reproducible
+- [`KT-52208`](https://youtrack.jetbrains.com/issue/KT-52208) MPP: Gradle plugin 1.7 doesn't support latest api versions (1.8, 1.9)
- [`KT-54071`](https://youtrack.jetbrains.com/issue/KT-54071) MPP/AGP compatibility: Bump maxSupportedVersion to 7.3.0
+### Tools. Gradle. Native
+
+- [`KT-52632`](https://youtrack.jetbrains.com/issue/KT-52632) Gradle / Native: commonizeNativeDistributionTask can never be up-to-date
+- [`KT-52328`](https://youtrack.jetbrains.com/issue/KT-52328) "ld: framework not found SQLCipher" linkDebugTestIosSimulatorArm64 error
+
+### Tools. Incremental Compile
+
+- [`KT-53168`](https://youtrack.jetbrains.com/issue/KT-53168) Incremental compilation doesn't perform correctly after a few iterations
+- [`KT-52925`](https://youtrack.jetbrains.com/issue/KT-52925) [IR BE] Non incremental build occurs after build failure for compileKotlinJs task
+- [`KT-52946`](https://youtrack.jetbrains.com/issue/KT-52946) CompileKotlinJs task is executed non-incrementally if there were changes made to the dependant module
+- [`KT-52329`](https://youtrack.jetbrains.com/issue/KT-52329) Reduce memory usage of classpath snapshot cache
+- [`KT-53266`](https://youtrack.jetbrains.com/issue/KT-53266) Increment Compilation: "IllegalStateException: The following LookupSymbols are not yet converted to ProgramSymbols" when changing companion object constant field
+- [`KT-53231`](https://youtrack.jetbrains.com/issue/KT-53231) New IC reports build failures for missing classpath snapshots
+
### Tools. JPS
+- [`KT-47824`](https://youtrack.jetbrains.com/issue/KT-47824) 'when expression must be exhaustive' isn't thrown during incremental compilation
+- [`KT-51873`](https://youtrack.jetbrains.com/issue/KT-51873) JPS build is incorrect after gdw build
- [`KTIJ-17072`](https://youtrack.jetbrains.com/issue/KTIJ-17072) JPS does not rebuild Kotlin usages of declared in Java when enum entry is added
- [`KT-51537`](https://youtrack.jetbrains.com/issue/KT-51537) Rebuild module on plugin classpaths change
### Tools. REPL
+- [`KT-45065`](https://youtrack.jetbrains.com/issue/KT-45065) REPL: Incorrect output for unsigned value
- [`KT-53043`](https://youtrack.jetbrains.com/issue/KT-53043) Scripting: Changes in REPL protocol: mark end of errors
+### Tools. Scripts
+
+- [`KT-52598`](https://youtrack.jetbrains.com/issue/KT-52598) Scripts and REPL snippets are not checked against using 'kotlin' package
+- [`KT-47187`](https://youtrack.jetbrains.com/issue/KT-47187) Kotlin ScriptEngine Failes to Compile a Trivial Statement After Failing to Compile a Broken One
+- [`KT-47191`](https://youtrack.jetbrains.com/issue/KT-47191) [Kotlin Script Engine] Compiling Without Evaluating Leaves Engine in a Bad State
+
+### Tools. Kapt
+
+- [`KT-52761`](https://youtrack.jetbrains.com/issue/KT-52761) Kotlin 1.7.0 breaks kapt processing for protobuf generated java sources
## 1.7.20-RC
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java
index ed26ee3..dc2605c 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java
@@ -20358,6 +20358,12 @@
}
@Test
+ @TestMetadata("stringConcatenationWithObject.kt")
+ public void testStringConcatenationWithObject() throws Exception {
+ runTest("compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt");
+ }
+
+ @Test
@TestMetadata("types.kt")
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
@@ -35539,6 +35545,24 @@
}
@Test
+ @TestMetadata("unsafeAssignment.kt")
+ public void testUnsafeAssignment() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignmentExtra.kt")
+ public void testUnsafeAssignmentExtra() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignment_noReport.kt")
+ public void testUnsafeAssignment_noReport() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt");
+ }
+
+ @Test
@TestMetadata("useInferenceInformationFromExtension.kt")
public void testUseInferenceInformationFromExtension() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/useInferenceInformationFromExtension.kt");
diff --git a/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt
index 67bde40..6bea207 100644
--- a/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt
+++ b/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt
@@ -26,6 +26,7 @@
import org.jetbrains.kotlin.serialization.deserialization.getClassId
import java.io.File
import java.util.*
+import kotlin.collections.HashSet
/**
* Incremental cache common for JVM and JS, ClassName type aware
@@ -203,12 +204,34 @@
override fun getComplementaryFilesRecursive(dirtyFiles: Collection<File>): Collection<File> {
val complementaryFiles = HashSet<File>()
val filesQueue = ArrayDeque(dirtyFiles)
+
+ val processedClasses = HashSet<FqName>()
+ val processedFiles = HashSet<File>()
+
while (filesQueue.isNotEmpty()) {
val file = filesQueue.pollFirst()
- complementaryFilesMap[file].forEach {
- if (complementaryFiles.add(it)) filesQueue.add(it)
+ if (processedFiles.contains(file)) {
+ continue
}
+ processedFiles.add(file)
+ complementaryFilesMap[file].forEach {
+ if (complementaryFiles.add(it) && !processedFiles.contains(it)) filesQueue.add(it)
+ }
+ val classes2recompile = sourceToClassesMap.getFqNames(file)
+ classes2recompile.filter { !processedClasses.contains(it) }.forEach {class2recompile ->
+ processedClasses.add(class2recompile)
+ val sealedClasses = findSealedSupertypes(class2recompile, listOf(this))
+ val allSubtypes = sealedClasses.flatMap { withSubtypes(it, listOf(this)) }.also {
+ // there could be only one sealed class in hierarchy
+ processedClasses.addAll(it)
+ }
+ val files2add = allSubtypes.mapNotNull { classFqNameToSourceMap[it] }.filter { !processedFiles.contains(it) }
+ filesQueue.addAll(files2add)
+ }
+
+
}
+ complementaryFiles.addAll(processedFiles)
complementaryFiles.removeAll(dirtyFiles)
return complementaryFiles
}
@@ -223,11 +246,11 @@
for (actual in actuals) {
actualToExpect.getOrPut(actual) { hashSetOf() }.add(expect)
}
- complementaryFilesMap[expect] = actuals
+ complementaryFilesMap[expect] = actuals.union(complementaryFilesMap[expect])
}
for ((actual, expects) in actualToExpect) {
- complementaryFilesMap[actual] = expects
+ complementaryFilesMap[actual] = expects.union(complementaryFilesMap[actual])
}
}
}
\ No newline at end of file
diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt
index 4ef5dcf..312e8e7 100644
--- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt
+++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt
@@ -150,8 +150,7 @@
val dirtyLookupSymbols = HashSet<LookupSymbol>()
val dirtyClassesFqNames = HashSet<FqName>()
- val sealedParents = HashMap<FqName, MutableSet<FqName>>()
- val notSealedParents = HashSet<FqName>()
+ val sealedParents = HashSet<FqName>()
for (change in changes()) {
reporter.debug { "Process $change" }
@@ -178,34 +177,12 @@
fqNames.mapTo(dirtyLookupSymbols) { LookupSymbol(SAM_LOOKUP_NAME.asString(), it.asString()) }
} else if (change is ChangeInfo.ParentsChanged) {
- fun FqName.isSealed(): Boolean {
- if (notSealedParents.contains(this)) return false
- if (sealedParents.containsKey(this)) return true
- return isSealed(this, caches).also { sealed ->
- if (sealed) {
- sealedParents[this] = HashSet()
- } else {
- notSealedParents.add(this)
- }
- }
- }
change.parentsChanged.forEach { parent ->
- if (parent.isSealed()) {
- sealedParents.getOrPut(parent) { HashSet() }.add(change.fqName)
- }
+ sealedParents.addAll(findSealedSupertypes(parent, caches))
}
}
}
-
- val forceRecompile = HashSet<FqName>().apply {
- addAll(sealedParents.keys)
- //we should recompile all inheritors with parent sealed class: add known subtypes
- addAll(sealedParents.keys.flatMap { withSubtypes(it, caches) })
- //we should recompile all inheritors with parent sealed class: add new subtypes
- addAll(sealedParents.values.flatten())
- }
-
- return DirtyData(dirtyLookupSymbols, dirtyClassesFqNames, forceRecompile)
+ return DirtyData(dirtyLookupSymbols, dirtyClassesFqNames, sealedParents)
}
fun mapLookupSymbolsToFiles(
@@ -252,7 +229,22 @@
fun isSealed(
fqName: FqName,
caches: Iterable<IncrementalCacheCommon>
-): Boolean = caches.any { it.isSealed(fqName) ?: false }
+): Boolean = caches.any { cache -> cache.isSealed(fqName) ?: false }
+
+/**
+ * Finds sealed supertypes of class in same module.
+ * This method should be used for processing freedomOsSealedClasses feature, because
+ * mutually declared list of sealed subclasses could be declared only in the same module.
+ */
+fun findSealedSupertypes(
+ fqName: FqName,
+ caches: Iterable<IncrementalCacheCommon>
+): Collection<FqName> {
+ if (isSealed(fqName, caches)) {
+ return listOf(fqName)
+ }
+ return caches.flatMap { cache -> cache.getSupertypesOf(fqName).filter { cache.isSealed(it) ?: false }}
+}
fun withSubtypes(
typeFqName: FqName,
diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantCheckCastElimination.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantCheckCastElimination.kt
index 9dd001a..766ee31 100644
--- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantCheckCastElimination.kt
+++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/RedundantCheckCastElimination.kt
@@ -20,6 +20,7 @@
import org.jetbrains.kotlin.codegen.optimization.common.FastMethodAnalyzer
import org.jetbrains.kotlin.codegen.optimization.common.InstructionLivenessAnalyzer
import org.jetbrains.kotlin.codegen.optimization.common.OptimizationBasicInterpreter
+import org.jetbrains.kotlin.codegen.optimization.common.StrictBasicValue
import org.jetbrains.kotlin.codegen.optimization.fixStack.top
import org.jetbrains.kotlin.codegen.optimization.transformer.MethodTransformer
import org.jetbrains.org.objectweb.asm.Opcodes
@@ -52,13 +53,12 @@
val frames = FastMethodAnalyzer(internalClassName, methodNode, interpreter, pruneExceptionEdges = true).analyze()
for (i in insns.indices) {
- val valueType = frames[i]?.top()?.type ?: continue
val insn = insns[i]
-
if (insn.opcode == Opcodes.CHECKCAST) {
+ val value = frames[i]?.top() ?: continue
val typeInsn = insn as TypeInsnNode
val insnType = Type.getObjectType(typeInsn.desc)
- if (!isTrivialSubtype(insnType, valueType)) continue
+ if (value !== StrictBasicValue.NULL_VALUE && !isTrivialSubtype(insnType, value.type)) continue
//Keep casts to multiarray types cause dex doesn't recognize ANEWARRAY [Ljava/lang/Object; as Object [][], but Object [] type
//It's not clear is it bug in dex or not and maybe best to distinguish such types from MULTINEWARRRAY ones in method analyzer
diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/OptimizationBasicInterpreter.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/OptimizationBasicInterpreter.java
index 8c52059..dbfa154 100644
--- a/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/OptimizationBasicInterpreter.java
+++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/optimization/common/OptimizationBasicInterpreter.java
@@ -19,6 +19,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.codegen.AsmUtil;
+import org.jetbrains.kotlin.resolve.jvm.AsmTypes;
import org.jetbrains.org.objectweb.asm.Handle;
import org.jetbrains.org.objectweb.asm.Opcodes;
import org.jetbrains.org.objectweb.asm.Type;
@@ -152,13 +153,6 @@
@NotNull BasicValue value1,
@NotNull BasicValue value2
) throws AnalyzerException {
- if (insn.getOpcode() == Opcodes.AALOAD) {
- Type arrayType = value1.getType();
- if (arrayType != null && arrayType.getSort() == Type.ARRAY) {
- return new StrictBasicValue(AsmUtil.correctElementType(arrayType));
- }
- }
-
switch (insn.getOpcode()) {
case IALOAD:
case BALOAD:
@@ -204,7 +198,13 @@
case DREM:
return StrictBasicValue.DOUBLE_VALUE;
case AALOAD:
- return StrictBasicValue.NULL_VALUE;
+ Type arrayType = value1.getType();
+ if (arrayType != null && arrayType.getSort() == Type.ARRAY) {
+ return new StrictBasicValue(AsmUtil.correctElementType(arrayType));
+ }
+ else {
+ return StrictBasicValue.NULL_VALUE;
+ }
case LCMP:
case FCMPL:
case FCMPG:
@@ -359,13 +359,11 @@
return StrictBasicValue.UNINITIALIZED_VALUE;
}
- // if merge of two references then `lub` is java/lang/Object
- // arrays also are BasicValues with reference type's
if (isReference(v) && isReference(w)) {
if (v == NULL_VALUE) return newValue(w.getType());
if (w == NULL_VALUE) return newValue(v.getType());
- return StrictBasicValue.REFERENCE_VALUE;
+ return mergeReferenceTypes(w.getType(), v.getType());
}
// if merge of something can be stored in int var (int, char, boolean, byte, character)
@@ -380,4 +378,34 @@
private static boolean isReference(@NotNull BasicValue v) {
return v.getType().getSort() == Type.OBJECT || v.getType().getSort() == Type.ARRAY;
}
+
+ // Merge reference types, keeping track of array dimensions.
+ // See also org.jetbrains.org.objectweb.asm.Frame.merge.
+ private BasicValue mergeReferenceTypes(@NotNull Type a, @NotNull Type b) {
+ // Find out the minimal array dimension of both types.
+ int arrayDimensions = 0;
+ while (a.getSort() == Type.ARRAY && b.getSort() == Type.ARRAY) {
+ a = AsmUtil.correctElementType(a);
+ b = AsmUtil.correctElementType(b);
+ arrayDimensions++;
+ }
+ // Either of the two types is not an array -> result is j/l/Object.
+ if (arrayDimensions == 0) return REFERENCE_VALUE;
+
+ // Both of the types are arrays, and element type of one or both of them is primitive ->
+ // result is array of j/l/Object with one fewer dimension. E.g.
+ // merge([I, [Lj/l/Object;) = Lj/l/Object;
+ // merge([I, [S) = Lj/l/Object;
+ // merge([[I, [[Lj/l/Object;) = [Lj/l/Object;
+ if (AsmUtil.isPrimitive(a) || AsmUtil.isPrimitive(b)) {
+ arrayDimensions--;
+ }
+
+ // Result is array of j/l/Object with the computed dimension.
+ StringBuilder result = new StringBuilder();
+ while (arrayDimensions-- > 0) result.append("[");
+ result.append(AsmTypes.OBJECT_TYPE.getDescriptor());
+ return newValue(Type.getType(result.toString()));
+ }
+
}
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
index f6205c9..80d478e 100644
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
@@ -409,6 +409,12 @@
)
var normalizeAbsolutePath: Boolean by FreezableVar(false)
+ @Argument(
+ value = "-Xklib-enable-signature-clash-checks",
+ description = "Enable the checks on uniqueness of signatures"
+ )
+ var enableSignatureClashChecks: Boolean by FreezableVar(true)
+
@Argument(value = "-Xenable-incremental-compilation", description = "Enable incremental compilation")
var incrementalCompilation: Boolean? by FreezableVar(null)
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
index 3f62145..1bd3e4c 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
@@ -152,6 +152,7 @@
}
configuration.put(CommonConfigurationKeys.KLIB_NORMALIZE_ABSOLUTE_PATH, arguments.normalizeAbsolutePath)
+ configuration.put(CommonConfigurationKeys.PRODUCE_KLIB_SIGNATURES_CLASH_CHECKS, arguments.enableSignatureClashChecks)
val environmentForJS =
KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES)
diff --git a/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt b/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt
index 962197aa..ee476ae 100644
--- a/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt
+++ b/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt
@@ -72,6 +72,10 @@
CompilerConfigurationKey.create<Boolean>("Normalize absolute paths in klib (replace file separator with '/')")
@JvmField
+ val PRODUCE_KLIB_SIGNATURES_CLASH_CHECKS =
+ CompilerConfigurationKey.create<Boolean>("Turn on the checks on uniqueness of signatures")
+
+ @JvmField
val INCREMENTAL_COMPILATION =
CompilerConfigurationKey.create<Boolean>("Enable incremental compilation")
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java
index cb6d97d..6226776 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java
@@ -20358,6 +20358,12 @@
}
@Test
+ @TestMetadata("stringConcatenationWithObject.kt")
+ public void testStringConcatenationWithObject() throws Exception {
+ runTest("compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt");
+ }
+
+ @Test
@TestMetadata("types.kt")
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
@@ -35539,6 +35545,24 @@
}
@Test
+ @TestMetadata("unsafeAssignment.kt")
+ public void testUnsafeAssignment() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignmentExtra.kt")
+ public void testUnsafeAssignmentExtra() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignment_noReport.kt")
+ public void testUnsafeAssignment_noReport() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt");
+ }
+
+ @Test
@TestMetadata("useInferenceInformationFromExtension.kt")
public void testUseInferenceInformationFromExtension() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/useInferenceInformationFromExtension.kt");
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java
index 0fbb189..8b41511 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java
@@ -20358,6 +20358,12 @@
}
@Test
+ @TestMetadata("stringConcatenationWithObject.kt")
+ public void testStringConcatenationWithObject() throws Exception {
+ runTest("compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt");
+ }
+
+ @Test
@TestMetadata("types.kt")
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
@@ -35539,6 +35545,24 @@
}
@Test
+ @TestMetadata("unsafeAssignment.kt")
+ public void testUnsafeAssignment() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignmentExtra.kt")
+ public void testUnsafeAssignmentExtra() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignment_noReport.kt")
+ public void testUnsafeAssignment_noReport() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt");
+ }
+
+ @Test
@TestMetadata("useInferenceInformationFromExtension.kt")
public void testUseInferenceInformationFromExtension() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/useInferenceInformationFromExtension.kt");
diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt
index b22c0ba..d8502ac 100644
--- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt
+++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConstChecks.kt
@@ -63,8 +63,12 @@
return checkConstantArguments(expression.compareToCall, session)
}
expression is FirStringConcatenationCall || expression is FirEqualityOperatorCall -> {
- for (exp in (expression as FirCall).arguments)
+ for (exp in (expression as FirCall).arguments) {
+ if (exp is FirResolvedQualifier) {
+ return ConstantArgumentKind.NOT_CONST
+ }
checkConstantArguments(exp, session).let { return it }
+ }
}
expression is FirGetClassCall -> {
var coneType = (expression as? FirCall)?.argument?.typeRef?.coneType
diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt
index 92fc3a3..99ef5da 100644
--- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt
+++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.backend.generators
import org.jetbrains.kotlin.KtFakeSourceElementKind
-import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.declarations.*
@@ -41,7 +40,10 @@
import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
import org.jetbrains.kotlin.ir.types.*
-import org.jetbrains.kotlin.ir.util.*
+import org.jetbrains.kotlin.ir.util.dump
+import org.jetbrains.kotlin.ir.util.isFunctionTypeOrSubtype
+import org.jetbrains.kotlin.ir.util.isInterface
+import org.jetbrains.kotlin.ir.util.isMethodOfAny
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi2ir.generators.hasNoSideEffects
import org.jetbrains.kotlin.psi2ir.generators.isUnchanging
@@ -254,29 +256,6 @@
return null
}
- // Note: I don't like using super qualifier symbols to determine field receivers in bytecode properly.
- // Would be much better to use super qualifiers only in case when it's used explicitly.
- // However, FE 1.0 does it, and currently we have no better way to provide these receivers.
- // See KT-49507 and KT-48954 as good examples for cases we try to handle here
- private fun FirExpression.superQualifierSymbolForField(fieldSymbol: IrFieldSymbol): IrClassSymbol? {
- if (this !is FirQualifiedAccess) return null
- if (calleeReference is FirSuperReference) return superQualifierSymbol()
- if (fieldSymbol.owner.correspondingPropertySymbol != null) return null
- val originalContainingClass = fieldSymbol.owner.parentClassOrNull ?: return null
- val ownContainingClass = typeRef.toIrType().classifierOrNull?.owner as? IrClass ?: return null
- // For static field, we shouldn't unwrap fake override in any case
- if (fieldSymbol.owner.isStatic) return ownContainingClass.symbol
- // Find first Java super class to avoid possible visibility exposure & separate compilation problems
- var superQualifierClass = ownContainingClass
- while (!superQualifierClass.isFromJava() && superQualifierClass !== originalContainingClass) {
- superQualifierClass = superQualifierClass.superTypes.find {
- val kind = it.getClass()?.kind
- kind == ClassKind.CLASS || kind == ClassKind.ENUM_CLASS
- }?.getClass() ?: break
- }
- return superQualifierClass.symbol
- }
-
private fun FirExpression.superQualifierSymbol(): IrClassSymbol? {
if (this !is FirQualifiedAccess) {
return null
@@ -490,7 +469,7 @@
IrGetFieldImpl(
startOffset, endOffset, symbol, type,
origin = IrStatementOrigin.GET_PROPERTY.takeIf { calleeReference !is FirDelegateFieldReference },
- superQualifierSymbol = dispatchReceiver.superQualifierSymbolForField(symbol)
+ superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
)
}
is IrValueSymbol -> {
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java
index a501d47..d2110ef 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java
@@ -4602,6 +4602,24 @@
}
@Test
+ @TestMetadata("arrayDowncastingContravariant.kt")
+ public void testArrayDowncastingContravariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayDowncatingInvariant.kt")
+ public void testArrayDowncatingInvariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayDownctingCovariant.kt")
+ public void testArrayDownctingCovariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt");
+ }
+
+ @Test
@TestMetadata("as.kt")
public void testAs() throws Exception {
runTest("compiler/testData/codegen/box/casts/as.kt");
@@ -4728,6 +4746,36 @@
}
@Test
+ @TestMetadata("kt53146.kt")
+ public void testKt53146() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53146.kt");
+ }
+
+ @Test
+ @TestMetadata("kt53677.kt")
+ public void testKt53677() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53677.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54581.kt")
+ public void testKt54581() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54581.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
+ @Test
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
@@ -14805,6 +14853,12 @@
}
@Test
+ @TestMetadata("kt54463_platformType.kt")
+ public void testKt54463_platformType() throws Exception {
+ runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt");
+ }
+
+ @Test
@TestMetadata("memberExtensionPropertyAndImportFromObject.kt")
public void testMemberExtensionPropertyAndImportFromObject() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/memberExtensionPropertyAndImportFromObject.kt");
@@ -16738,6 +16792,18 @@
}
@Test
+ @TestMetadata("stringConcatenationWithObject.kt")
+ public void testStringConcatenationWithObject() throws Exception {
+ runTest("compiler/testData/codegen/box/evaluate/stringConcatenationWithObject.kt");
+ }
+
+ @Test
+ @TestMetadata("thisPlusString.kt")
+ public void testThisPlusString() throws Exception {
+ runTest("compiler/testData/codegen/box/evaluate/thisPlusString.kt");
+ }
+
+ @Test
@TestMetadata("unaryMinus.kt")
public void testUnaryMinus() throws Exception {
runTest("compiler/testData/codegen/box/evaluate/unaryMinus.kt");
@@ -17482,6 +17548,12 @@
}
@Test
+ @TestMetadata("javaFieldAndKotlinPrivateProperty.kt")
+ public void testJavaFieldAndKotlinPrivateProperty() throws Exception {
+ runTest("compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinPrivateProperty.kt");
+ }
+
+ @Test
@TestMetadata("javaFieldAndKotlinProperty.kt")
public void testJavaFieldAndKotlinProperty() throws Exception {
runTest("compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.kt");
@@ -45168,6 +45240,12 @@
}
@Test
+ @TestMetadata("kt54600.kt")
+ public void testKt54600() throws Exception {
+ runTest("compiler/testData/codegen/box/sam/kt54600.kt");
+ }
+
+ @Test
@TestMetadata("nonInlinedSamWrapper.kt")
public void testNonInlinedSamWrapper() throws Exception {
runTest("compiler/testData/codegen/box/sam/nonInlinedSamWrapper.kt");
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java
index 79da42d..1145b8c 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBytecodeTextTestGenerated.java
@@ -1087,6 +1087,12 @@
}
@Test
+ @TestMetadata("kt53465.kt")
+ public void testKt53465() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeText/checkcast/kt53465.kt");
+ }
+
+ @Test
@TestMetadata("noCheckcastOnDelegatingDefaultImplsCall.kt")
public void testNoCheckcastOnDelegatingDefaultImplsCall() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/checkcast/noCheckcastOnDelegatingDefaultImplsCall.kt");
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/LoweredIrInterpreterTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/LoweredIrInterpreterTestGenerated.java
index b87a414..2b52d4f 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/LoweredIrInterpreterTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/LoweredIrInterpreterTestGenerated.java
@@ -135,5 +135,11 @@
public void testUnsignedConst() throws Exception {
runTest("compiler/testData/ir/loweredIr/interpreter/unsignedConst.kt");
}
+
+ @Test
+ @TestMetadata("useCorrectToString.kt")
+ public void testUseCorrectToString() throws Exception {
+ runTest("compiler/testData/ir/loweredIr/interpreter/useCorrectToString.kt");
+ }
}
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/PlatformConfiguratorBase.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/PlatformConfiguratorBase.kt
index c947604..9643bb0 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/PlatformConfiguratorBase.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/PlatformConfiguratorBase.kt
@@ -69,7 +69,8 @@
UnitConversionCallChecker, FunInterfaceConstructorReferenceChecker, NullableExtensionOperatorWithSafeCallChecker,
ReferencingToUnderscoreNamedParameterOfCatchBlockChecker, VarargWrongExecutionOrderChecker, SelfCallInNestedObjectConstructorChecker,
NewSchemeOfIntegerOperatorResolutionChecker, EnumEntryVsCompanionPriorityCallChecker, CompanionInParenthesesLHSCallChecker,
- ResolutionToPrivateConstructorOfSealedClassChecker, EqualityCallChecker, UnsupportedUntilOperatorChecker
+ ResolutionToPrivateConstructorOfSealedClassChecker, EqualityCallChecker, UnsupportedUntilOperatorChecker,
+ BuilderInferenceAssignmentChecker,
)
private val DEFAULT_TYPE_CHECKERS = emptyList<AdditionalTypeChecker>()
private val DEFAULT_CLASSIFIER_USAGE_CHECKERS = listOf(
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/BuilderInferenceAssignmentChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/BuilderInferenceAssignmentChecker.kt
new file mode 100644
index 0000000..00fa1f3
--- /dev/null
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/BuilderInferenceAssignmentChecker.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.resolve.calls.checkers
+
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.config.LanguageFeature
+import org.jetbrains.kotlin.descriptors.PropertyDescriptor
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.lexer.KtTokens
+import org.jetbrains.kotlin.psi.KtBinaryExpression
+import org.jetbrains.kotlin.psi.KtNameReferenceExpression
+import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
+import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
+import org.jetbrains.kotlin.resolve.calls.util.getType
+import org.jetbrains.kotlin.types.StubTypeForBuilderInference
+import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
+import org.jetbrains.kotlin.types.expressions.BasicExpressionTypingVisitor
+import org.jetbrains.kotlin.types.isError
+
+object BuilderInferenceAssignmentChecker : CallChecker {
+ override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
+ val resultingDescriptor = resolvedCall.resultingDescriptor
+ if (resultingDescriptor !is PropertyDescriptor) return
+ if (context.languageVersionSettings.supportsFeature(LanguageFeature.NoBuilderInferenceWithoutAnnotationRestriction)) return
+ if (resolvedCall.candidateDescriptor.returnType !is StubTypeForBuilderInference) return
+ val callElement = resolvedCall.call.callElement
+ if (callElement !is KtNameReferenceExpression) return
+ val binaryExpression = callElement.getParentOfType<KtBinaryExpression>(strict = true) ?: return
+ if (binaryExpression.operationToken != KtTokens.EQ) return
+ if (!BasicExpressionTypingVisitor.isLValue(callElement, binaryExpression)) return
+
+ val leftType = resultingDescriptor.returnType?.takeIf { !it.isError } ?: return
+ val right = binaryExpression.right ?: return
+ val rightType = right.getType(context.trace.bindingContext) ?: return
+
+ if (!KotlinTypeChecker.DEFAULT.isSubtypeOf(rightType, leftType)) {
+ val dfi = context.dataFlowInfo
+ val dfvFactory = context.dataFlowValueFactory
+ val stableTypesFromDataFlow = dfi.getStableTypes(
+ dfvFactory.createDataFlowValue(right, rightType, context.trace.bindingContext, context.moduleDescriptor),
+ context.languageVersionSettings
+ )
+ if (stableTypesFromDataFlow.none {
+ KotlinTypeChecker.DEFAULT.isSubtypeOf(it, leftType)
+ }
+ ) {
+ context.trace.report(Errors.TYPE_MISMATCH.on(right, leftType, rightType))
+ }
+ }
+ }
+}
diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt
index be8629d..2fa16e6 100644
--- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt
+++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/incrementalFirCacheUtils.kt
@@ -142,5 +142,6 @@
if (!alreadyCompiledSources.containsAll(forceToRecompileFiles)) {
addAll(forceToRecompileFiles)
}
+ removeAll { !it.exists() }
}
}
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirICLightTreeJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirICLightTreeJvmCompilerRunnerTestGenerated.java
index dcb3f9d..8859012 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirICLightTreeJvmCompilerRunnerTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirICLightTreeJvmCompilerRunnerTestGenerated.java
@@ -64,7 +64,7 @@
}
public void testAllFilesPresentInPureKotlin() throws Exception {
- KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps/jps-plugin/testData/incremental/pureKotlin"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, false);
+ KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps/jps-plugin/testData/incremental/pureKotlin"), Pattern.compile("^([^\\.]+)$"), Pattern.compile("^.*Expect.*"), TargetBackend.JVM_IR, false);
}
@TestMetadata("annotations")
@@ -597,6 +597,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -612,9 +617,9 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java
index 1512d60..ea627c8 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirJvmCompilerRunnerTestGenerated.java
@@ -64,7 +64,7 @@
}
public void testAllFilesPresentInPureKotlin() throws Exception {
- KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps/jps-plugin/testData/incremental/pureKotlin"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, false);
+ KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps/jps-plugin/testData/incremental/pureKotlin"), Pattern.compile("^([^\\.]+)$"), Pattern.compile("^.*Expect.*"), TargetBackend.JVM_IR, false);
}
@TestMetadata("annotations")
@@ -597,6 +597,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -612,9 +617,9 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirLightTreeJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirLightTreeJvmCompilerRunnerTestGenerated.java
index 31829bc..3367d29 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirLightTreeJvmCompilerRunnerTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalFirLightTreeJvmCompilerRunnerTestGenerated.java
@@ -64,7 +64,7 @@
}
public void testAllFilesPresentInPureKotlin() throws Exception {
- KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps/jps-plugin/testData/incremental/pureKotlin"), Pattern.compile("^([^\\.]+)$"), null, TargetBackend.JVM_IR, false);
+ KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("jps/jps-plugin/testData/incremental/pureKotlin"), Pattern.compile("^([^\\.]+)$"), Pattern.compile("^.*Expect.*"), TargetBackend.JVM_IR, false);
}
@TestMetadata("annotations")
@@ -597,6 +597,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -612,9 +617,9 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerTestGenerated.java
index e296921..8496730 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerTestGenerated.java
@@ -596,6 +596,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -611,9 +616,14 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
+ }
+
+ @TestMetadata("sealedClassesWithExpectActual")
+ public void testSealedClassesWithExpectActual() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerWithMetadataOnlyTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerWithMetadataOnlyTestGenerated.java
index e33cb84..415c6ff 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerWithMetadataOnlyTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJsCompilerRunnerWithMetadataOnlyTestGenerated.java
@@ -596,6 +596,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -611,9 +616,14 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
+ }
+
+ @TestMetadata("sealedClassesWithExpectActual")
+ public void testSealedClassesWithExpectActual() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java
index c639173..2264e4d 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java
@@ -597,6 +597,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -612,9 +617,14 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
+ }
+
+ @TestMetadata("sealedClassesWithExpectActual")
+ public void testSealedClassesWithExpectActual() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java
index aa71158..276e237 100644
--- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java
+++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmOldBackendCompilerRunnerTestGenerated.java
@@ -597,6 +597,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -612,9 +617,14 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
+ }
+
+ @TestMetadata("sealedClassesWithExpectActual")
+ public void testSealedClassesWithExpectActual() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
index dce0a53..edd2d97 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
@@ -8,13 +8,14 @@
import org.jetbrains.kotlin.backend.common.BodyLoweringPass
import org.jetbrains.kotlin.backend.common.CommonBackendContext
import org.jetbrains.kotlin.backend.common.descriptors.synthesizedString
-import org.jetbrains.kotlin.backend.common.ir.*
import org.jetbrains.kotlin.backend.common.lower.inline.isInlineParameter
import org.jetbrains.kotlin.backend.common.runOnFilePostfix
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Modality
-import org.jetbrains.kotlin.ir.*
+import org.jetbrains.kotlin.ir.IrElement
+import org.jetbrains.kotlin.ir.IrStatement
+import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
@@ -25,7 +26,9 @@
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
-import org.jetbrains.kotlin.ir.types.*
+import org.jetbrains.kotlin.ir.transformStatement
+import org.jetbrains.kotlin.ir.types.IrType
+import org.jetbrains.kotlin.ir.types.defaultType
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
@@ -71,6 +74,7 @@
val localNameSanitizer: (String) -> String = { it },
val visibilityPolicy: VisibilityPolicy = VisibilityPolicy.DEFAULT,
val suggestUniqueNames: Boolean = true, // When `true` appends a `$#index` suffix to lifted declaration names
+ val compatibilityModeForInlinedLocalDelegatedPropertyAccessors: Boolean = false, // Keep old names because of KT-49030
val forceFieldsForInlineCaptures: Boolean = false, // See `LocalClassContext`
private val postLocalDeclarationLoweringCallback: ((IntermediateDatastructures) -> Unit)? = null
) :
@@ -589,8 +593,16 @@
val declarationName = localNameSanitizer(declaration.name.asString())
localFunctions[declaration]?.let {
val baseName = if (declaration.name.isSpecial) "lambda" else declarationName
- if (it.index >= 0)
- return if (suggestUniqueNames) "$baseName\$${it.index}" else baseName
+ if (it.index >= 0) {
+ if (!suggestUniqueNames) return baseName
+
+ val separator = if (
+ compatibilityModeForInlinedLocalDelegatedPropertyAccessors &&
+ declaration.origin == IrDeclarationOrigin.DELEGATED_PROPERTY_ACCESSOR &&
+ container is IrFunction && container.isInline
+ ) "-" else "$"
+ return "$baseName$separator${it.index}"
+ }
}
return declarationName
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt
index 8356fed..79bffff 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt
@@ -138,6 +138,7 @@
private fun scopedVisibility(inInlineFunctionScope: Boolean): DescriptorVisibility =
if (inInlineFunctionScope) DescriptorVisibilities.PUBLIC else JavaDescriptorVisibilities.PACKAGE_VISIBILITY
},
+ compatibilityModeForInlinedLocalDelegatedPropertyAccessors = true,
forceFieldsForInlineCaptures = true,
postLocalDeclarationLoweringCallback = context.localDeclarationsLoweringData?.let {
{ data ->
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/SingletonOrConstantDelegationLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/SingletonOrConstantDelegationLowering.kt
index 907f198..8265b9b 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/SingletonOrConstantDelegationLowering.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/SingletonOrConstantDelegationLowering.kt
@@ -16,10 +16,7 @@
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.impl.IrAnonymousInitializerSymbolImpl
import org.jetbrains.kotlin.ir.util.*
-import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
-import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.util.OperatorNameConventions
internal val singletonOrConstantDelegationPhase = makeIrFilePhase(
::SingletonOrConstantDelegationLowering,
@@ -47,22 +44,14 @@
if (!isDelegated || isFakeOverride || backingField == null) return null
val delegate = backingField?.initializer?.expression?.takeIf { it.isInlineable() } ?: return null
val originalThis = parentAsClass.thisReceiver
- val receiverMapper = object : IrElementTransformer<Pair<Name, IrExpression>> {
- override fun visitCall(expression: IrCall, data: Pair<Name, IrExpression>): IrExpression {
- val (name, newReceiver) = data
- if (expression.symbol.owner.name == name) {
- if ((expression.dispatchReceiver as? IrGetField)?.symbol == backingField?.symbol) {
- expression.dispatchReceiver = newReceiver
- } else if ((expression.extensionReceiver as? IrGetField)?.symbol == backingField?.symbol) {
- expression.extensionReceiver = newReceiver
- }
- }
- return expression
- }
+
+ class DelegateFieldAccessTransformer(val newReceiver: IrExpression) : IrElementTransformerVoid() {
+ override fun visitGetField(expression: IrGetField): IrExpression =
+ if (expression.symbol == backingField?.symbol) newReceiver else super.visitGetField(expression)
}
- getter?.transform(receiverMapper,OperatorNameConventions.GET_VALUE to delegate.remapReceiver(originalThis, getter?.dispatchReceiverParameter))
- setter?.transform(receiverMapper,OperatorNameConventions.SET_VALUE to delegate.remapReceiver(originalThis, setter?.dispatchReceiverParameter))
+ getter?.transform(DelegateFieldAccessTransformer(delegate.remapReceiver(originalThis, getter?.dispatchReceiverParameter)), null)
+ setter?.transform(DelegateFieldAccessTransformer(delegate.remapReceiver(originalThis, setter?.dispatchReceiverParameter)), null)
backingField = null
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeOperatorLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeOperatorLowering.kt
index 8aeb64d..e743176 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeOperatorLowering.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/TypeOperatorLowering.kt
@@ -19,6 +19,7 @@
import org.jetbrains.kotlin.backend.jvm.ir.*
import org.jetbrains.kotlin.backend.jvm.unboxInlineClass
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
+import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
@@ -36,6 +37,9 @@
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.types.Variance
+import org.jetbrains.kotlin.types.checker.SimpleClassicTypeSystemContext.getArgument
+import org.jetbrains.kotlin.types.checker.SimpleClassicTypeSystemContext.isTypeVariableType
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.org.objectweb.asm.Handle
import org.jetbrains.org.objectweb.asm.Opcodes
@@ -88,6 +92,8 @@
builder.irAs(argument, type)
argument.type.isInlineClassType() && argument.type.isSubtypeOfClass(type.erasedUpperBound.symbol) ->
argument
+ isCompatibleArrayType(argument.type, type) ->
+ argument
type.isNullable() || argument.isDefinitelyNotNull() ->
builder.irAs(argument, type)
else -> {
@@ -121,6 +127,22 @@
}
}
+ private fun isCompatibleArrayType(actualType: IrType, expectedType: IrType): Boolean {
+ var actual = actualType
+ var expected = expectedType
+ while ((actual.isArray() || actual.isNullableArray()) && (expected.isArray() || expected.isNullableArray())) {
+ actual = actual.getArrayElementLowerType()
+ expected = expected.getArrayElementLowerType()
+ }
+ if (actual == actualType || expected == expectedType) return false
+ return actual.isSubtypeOfClass(expected.erasedUpperBound.symbol)
+ }
+
+ private fun IrType.getArrayElementLowerType(): IrType =
+ if (isBoxedArray && this is IrSimpleType && (arguments.singleOrNull() as? IrTypeProjection)?.variance == Variance.IN_VARIANCE)
+ backendContext.irBuiltIns.anyNType
+ else getArrayElementType(backendContext.irBuiltIns)
+
// TODO extract null check elimination on IR somewhere?
private fun IrExpression.isDefinitelyNotNull(): Boolean =
when (this) {
diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt
index 1e6a0ef..0015734 100644
--- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt
+++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt
@@ -103,7 +103,7 @@
abstract fun canEvaluateEnumValue(enumEntry: IrGetEnumValue, context: IrCall? = null): Boolean
abstract fun canEvaluateReference(reference: IrCallableReference<*>, context: IrCall? = null): Boolean
- fun canEvaluateBody(function: IrFunction): Boolean {
+ fun mustCheckBodyOf(function: IrFunction): Boolean {
if (function is IrSimpleFunction && function.correspondingPropertySymbol != null) return true
return (mustCheckBody || function.isLocal) && !function.isContract() && !function.isMarkedAsEvaluateIntrinsic()
}
diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt
index b04e989..8142796 100644
--- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt
+++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt
@@ -54,11 +54,14 @@
private fun visitConstructor(expression: IrFunctionAccessExpression): Boolean {
return when {
!visitValueParameters(expression, null) || !mode.canEvaluateFunction(expression.symbol.owner, contextExpression) -> false
- mode.canEvaluateBody(expression.symbol.owner) -> expression.symbol.owner.body?.accept(this, null) != false
- else -> true
+ else -> expression.symbol.owner.visitBodyIfNeeded()
}
}
+ private fun IrFunction.visitBodyIfNeeded(): Boolean {
+ return this.asVisited { !mode.mustCheckBodyOf(this) || (this.body?.accept(this@IrCompileTimeChecker, null) ?: true) }
+ }
+
override fun visitCall(expression: IrCall, data: Nothing?): Boolean {
val owner = expression.symbol.owner
if (!mode.canEvaluateFunction(owner, expression)) return false
@@ -67,7 +70,7 @@
val dispatchReceiverComputable = expression.dispatchReceiver?.accept(this, null) ?: true
val extensionReceiverComputable = expression.extensionReceiver?.accept(this, null) ?: true
if (!visitValueParameters(expression, null)) return@saveContext false
- val bodyComputable = owner.asVisited { if (mode.canEvaluateBody(owner)) owner.body?.accept(this, null) ?: true else true }
+ val bodyComputable = owner.visitBodyIfNeeded()
return@saveContext dispatchReceiverComputable && extensionReceiverComputable && bodyComputable
}
}
@@ -126,7 +129,19 @@
}
override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?): Boolean {
- return expression.arguments.all { it.accept(this, data) }
+ return expression.arguments.all { arg ->
+ when (arg) {
+ is IrGetObjectValue -> {
+ val toString = arg.symbol.owner.declarations
+ .filterIsInstance<IrSimpleFunction>()
+ .single { it.name.asString() == "toString" && it.valueParameters.isEmpty() && it.extensionReceiverParameter == null }
+
+ mode.canEvaluateFunction(toString, null) && toString.visitBodyIfNeeded()
+ }
+
+ else -> arg.accept(this, data)
+ }
+ }
}
override fun visitGetObjectValue(expression: IrGetObjectValue, data: Nothing?): Boolean {
@@ -218,7 +233,7 @@
if (!mode.canEvaluateFunction(owner, contextExpression)) return false
- val bodyComputable = owner.asVisited { if (mode.canEvaluateBody(owner)) owner.body?.accept(this, null) ?: true else true }
+ val bodyComputable = owner.visitBodyIfNeeded()
return dispatchReceiverComputable && extensionReceiverComputable && bodyComputable
}
diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrConstTransformer.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrConstTransformer.kt
index b771947..b529f9c 100644
--- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrConstTransformer.kt
+++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrConstTransformer.kt
@@ -55,8 +55,10 @@
val result = try {
interpreter.interpret(this, irFile)
} catch (e: Throwable) {
- if (!suppressExceptions) throw AssertionError("Error occurred while optimizing an expression:\n${this.dump()}", e)
- return IrErrorExpressionImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, this.type, e.message.toString()).warningIfError(this)
+ if (suppressExceptions) {
+ return this
+ }
+ throw AssertionError("Error occurred while optimizing an expression:\n${this.dump()}", e)
}
return if (failAsError) result.reportIfError(this) else result.warningIfError(this)
diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/CommonProxy.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/CommonProxy.kt
index 83b3920..6298599 100644
--- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/CommonProxy.kt
+++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/proxy/CommonProxy.kt
@@ -77,7 +77,7 @@
else -> arrayOf(extendFrom, Proxy::class.java)
}
- return java.lang.reflect.Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), interfaces)
+ return java.lang.reflect.Proxy.newProxyInstance(this::class.java.classLoader, interfaces)
{ /*proxy*/_, method, args ->
when {
method.declaringClass == Proxy::class.java && method.name == "getState" -> commonProxy.state
diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Common.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Common.kt
index 9dafb97..f258d13 100644
--- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Common.kt
+++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/Common.kt
@@ -52,7 +52,7 @@
return irClass.declarations
.filterIsInstance<IrSimpleFunction>()
.single {
- it.name == Name.identifier("equals") && it.dispatchReceiverParameter != null
+ it.name == Name.identifier("equals") && it.dispatchReceiverParameter != null && it.extensionReceiverParameter == null
&& it.valueParameters.size == 1 && it.valueParameters[0].type.isNullableAny()
}
.let { it.resolveFakeOverride() as IrSimpleFunction }
@@ -60,13 +60,13 @@
fun getHashCodeFunction(): IrSimpleFunction {
return irClass.declarations.filterIsInstance<IrSimpleFunction>()
- .single { it.name.asString() == "hashCode" && it.valueParameters.isEmpty() }
+ .single { it.name.asString() == "hashCode" && it.valueParameters.isEmpty() && it.extensionReceiverParameter == null }
.let { it.resolveFakeOverride() as IrSimpleFunction }
}
fun getToStringFunction(): IrSimpleFunction {
return irClass.declarations.filterIsInstance<IrSimpleFunction>()
- .single { it.name.asString() == "toString" && it.valueParameters.isEmpty() }
+ .single { it.name.asString() == "toString" && it.valueParameters.isEmpty() && it.extensionReceiverParameter == null }
.let { it.resolveFakeOverride() as IrSimpleFunction }
}
diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt
index 49c7598..bb2353d 100644
--- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt
+++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt
@@ -19,7 +19,6 @@
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
-import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
import org.jetbrains.kotlin.ir.declarations.IrVariable
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.*
@@ -37,7 +36,6 @@
import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic
import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForObject
import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType
-import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
import org.jetbrains.kotlin.types.KotlinType
class CallGenerator(statementGenerator: StatementGenerator) : StatementGeneratorExtension(statementGenerator) {
@@ -195,21 +193,6 @@
}
}
- private fun PropertyDescriptor.containingClassForField(): ClassDescriptor? {
- val ownContainingClass = containingDeclaration as? ClassDescriptor ?: return null
- // For static field, we shouldn't unwrap fake override in any case
- if (dispatchReceiverParameter == null) return ownContainingClass
- val originalContainingClass = resolveFakeOverride().containingDeclaration as? ClassDescriptor ?: return ownContainingClass
- // Find first Java super class to avoid possible visibility exposure & separate compilation problems
- var containingClassForField = ownContainingClass
- while (context.extensions.computeExternalDeclarationOrigin(containingClassForField) != IR_EXTERNAL_JAVA_DECLARATION_STUB &&
- containingClassForField !== originalContainingClass
- ) {
- containingClassForField = containingClassForField.getSuperClassNotAny() ?: break
- }
- return containingClassForField
- }
-
private fun generatePropertyGetterCall(
descriptor: PropertyDescriptor,
startOffset: Int,
@@ -220,11 +203,10 @@
val irType = descriptor.type.toIrType()
return if (getMethodDescriptor == null) {
- val superQualifierSymbol =
- (call.superQualifier ?: descriptor.containingClassForField())?.let {
- if (it is ScriptDescriptor) null // otherwise it creates a reference to script as class; TODO: check if correct
- else context.symbolTable.referenceClass(it)
- }
+ val superQualifierSymbol = (call.superQualifier ?: descriptor.containingDeclaration as? ClassDescriptor)?.let {
+ if (it is ScriptDescriptor) null // otherwise it creates a reference to script as class; TODO: check if correct
+ else context.symbolTable.referenceClass(it)
+ }
val fieldSymbol =
context.symbolTable.referenceField(context.extensions.remapDebuggerFieldPropertyDescriptor(descriptor.resolveFakeOverride().original))
call.callReceiver.call { dispatchReceiverValue, extensionReceiverValue, _ ->
diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/samConversions.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/samConversions.kt
index 3bb6910..657b534 100644
--- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/samConversions.kt
+++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/samConversions.kt
@@ -13,9 +13,7 @@
import org.jetbrains.kotlin.descriptors.synthetic.FunctionInterfaceConstructorDescriptor
import org.jetbrains.kotlin.resolve.sam.getFunctionTypeForAbstractMethod
import org.jetbrains.kotlin.resolve.sam.getSingleAbstractMethodOrNull
-import org.jetbrains.kotlin.types.KotlinType
-import org.jetbrains.kotlin.types.TypeSubstitutor
-import org.jetbrains.kotlin.types.Variance
+import org.jetbrains.kotlin.types.*
fun GeneratorExtensions.SamConversion.isSamType(kotlinType: KotlinType): Boolean {
val descriptor = kotlinType.constructor.declarationDescriptor
@@ -35,12 +33,23 @@
null
}
-fun KotlinType.getSubstitutedFunctionTypeForSamType(): KotlinType {
+fun KotlinType.getSubstitutedFunctionTypeForSamType(): KotlinType =
+ when (val unwrapped = this.unwrap()) {
+ is SimpleType -> unwrapped.getSubstitutedFunctionTypeForSamType()
+ is FlexibleType -> KotlinTypeFactory.flexibleType(
+ unwrapped.lowerBound.getSubstitutedFunctionTypeForSamType(),
+ unwrapped.upperBound.getSubstitutedFunctionTypeForSamType(),
+ )
+ }
+
+private fun SimpleType.getSubstitutedFunctionTypeForSamType(): SimpleType {
val descriptor = constructor.declarationDescriptor as? ClassDescriptor
?: throw AssertionError("SAM should be represented by a class: $this")
val singleAbstractMethod = getSingleAbstractMethodOrNull(descriptor)
?: throw AssertionError("$descriptor should have a single abstract method")
- val unsubstitutedFunctionType = getFunctionTypeForAbstractMethod(singleAbstractMethod, false)
- return TypeSubstitutor.create(this).substitute(unsubstitutedFunctionType, Variance.INVARIANT)
+ val unsubstitutedFunctionType = getFunctionTypeForAbstractMethod(singleAbstractMethod, false).makeNullableAsSpecified(isMarkedNullable)
+ val result = TypeSubstitutor.create(this).substitute(unsubstitutedFunctionType, Variance.INVARIANT)
?: throw AssertionError("Failed to substitute function type $unsubstitutedFunctionType corresponding to $this")
+ return result as? SimpleType
+ ?: throw AssertionError("SAM type substitution result is not a simple type: $this -> $result")
}
diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt
index a0a671a..395ff75 100644
--- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt
+++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt
@@ -741,6 +741,7 @@
val compatibilityMode = CompatibilityMode(abiVersion)
val sourceBaseDirs = configuration[CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES] ?: emptyList()
val absolutePathNormalization = configuration[CommonConfigurationKeys.KLIB_NORMALIZE_ABSOLUTE_PATH] ?: false
+ val signatureClashChecks = configuration[CommonConfigurationKeys.PRODUCE_KLIB_SIGNATURES_CLASH_CHECKS] ?: false
val serializedIr =
JsIrModuleSerializer(
@@ -750,7 +751,8 @@
compatibilityMode,
skipExpects = !configuration.expectActualLinker,
normalizeAbsolutePaths = absolutePathNormalization,
- sourceBaseDirs = sourceBaseDirs
+ sourceBaseDirs = sourceBaseDirs,
+ signatureClashChecks
).serializedIrModule(moduleFragment)
val moduleDescriptor = moduleFragment.descriptor
diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrModuleSerializer.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrModuleSerializer.kt
index de08c95..64b2088 100644
--- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrModuleSerializer.kt
+++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrModuleSerializer.kt
@@ -7,6 +7,7 @@
import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
+import org.jetbrains.kotlin.backend.common.serialization.IdSignatureClashTracker
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.ir.IrBuiltIns
@@ -21,10 +22,14 @@
compatibilityMode: CompatibilityMode,
val skipExpects: Boolean,
normalizeAbsolutePaths: Boolean,
- sourceBaseDirs: Collection<String>
+ sourceBaseDirs: Collection<String>,
+ shouldCheckSignaturesOnUniqueness: Boolean = true
) : IrModuleSerializer<JsIrFileSerializer>(messageLogger, compatibilityMode, normalizeAbsolutePaths, sourceBaseDirs) {
- private val globalDeclarationTable = JsGlobalDeclarationTable(irBuiltIns)
+ private val globalDeclarationTable = JsGlobalDeclarationTable(
+ irBuiltIns,
+ if (shouldCheckSignaturesOnUniqueness) JsUniqIdClashTracker() else IdSignatureClashTracker.DEFAULT_TRACKER
+ )
override fun createSerializerForFile(file: IrFile): JsIrFileSerializer =
JsIrFileSerializer(
diff --git a/compiler/testData/cli/js/jsExtraHelp.out b/compiler/testData/cli/js/jsExtraHelp.out
index 7815c84..bc638bd 100644
--- a/compiler/testData/cli/js/jsExtraHelp.out
+++ b/compiler/testData/cli/js/jsExtraHelp.out
@@ -66,6 +66,8 @@
-Xeffect-system Enable experimental language feature: effect system
-Xenable-builder-inference Use the builder inference by default, for all calls with lambdas which can't be resolved without it.
The corresponding calls' declarations may not be marked with @BuilderInference.
+ -Xklib-enable-signature-clash-checks
+ Enable the checks on uniqueness of signatures
-Xexpect-actual-linker Enable experimental expect/actual linker
-Xexplicit-api={strict|warning|disable}
Force compiler to report errors on all public API declarations without explicit visibility or return type.
diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out
index c1a78bb..2e0b8ae 100644
--- a/compiler/testData/cli/jvm/extraHelp.out
+++ b/compiler/testData/cli/jvm/extraHelp.out
@@ -173,6 +173,8 @@
-Xeffect-system Enable experimental language feature: effect system
-Xenable-builder-inference Use the builder inference by default, for all calls with lambdas which can't be resolved without it.
The corresponding calls' declarations may not be marked with @BuilderInference.
+ -Xklib-enable-signature-clash-checks
+ Enable the checks on uniqueness of signatures
-Xexpect-actual-linker Enable experimental expect/actual linker
-Xexplicit-api={strict|warning|disable}
Force compiler to report errors on all public API declarations without explicit visibility or return type.
diff --git a/compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt b/compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt
new file mode 100644
index 0000000..162cec4
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt
@@ -0,0 +1,10 @@
+// TARGET_BACKEND: JVM
+
+inline fun <reified T : CharSequence> f(x: Array<in String>) = x as Array<T>
+
+fun box(): String = try {
+ f<String>(arrayOf<Any>(42))
+ "Fail"
+} catch (e: Exception) {
+ "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt b/compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt
new file mode 100644
index 0000000..2964c1a
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt
@@ -0,0 +1,10 @@
+// TARGET_BACKEND: JVM
+
+inline fun <reified T : CharSequence> f(x: Array<Any>) = x as Array<T>
+
+fun box(): String = try {
+ f<String>(arrayOf<Any>(42))
+ "Fail"
+} catch (e: Exception) {
+ "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt b/compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt
new file mode 100644
index 0000000..5acb0ad
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt
@@ -0,0 +1,10 @@
+// TARGET_BACKEND: JVM
+
+inline fun <reified T : CharSequence> f(x: Array<out Any>) = x as Array<T>
+
+fun box(): String = try {
+ f<String>(arrayOf<Int>(42))
+ "Fail"
+} catch (e: Exception) {
+ "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/casts/kt48927_privateMethodOnDerivedCastToBase.kt b/compiler/testData/codegen/box/casts/kt48927_privateMethodOnDerivedCastToBase.kt
index 7a9a73e..04fab3a 100644
--- a/compiler/testData/codegen/box/casts/kt48927_privateMethodOnDerivedCastToBase.kt
+++ b/compiler/testData/codegen/box/casts/kt48927_privateMethodOnDerivedCastToBase.kt
@@ -2,8 +2,13 @@
private fun test(): String = "OK"
fun test(d: Derived): String = (d as Base).test()
+
+ fun test(d: Array<out Derived>) = (d as Array<out Base>)[0].test()
}
class Derived : Base()
-fun box(): String = Derived().test(Derived())
+fun box(): String {
+ Derived().test(arrayOf(Derived()))
+ return Derived().test(Derived())
+}
diff --git a/compiler/testData/codegen/box/casts/kt53146.kt b/compiler/testData/codegen/box/casts/kt53146.kt
new file mode 100644
index 0000000..13d90fc
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/kt53146.kt
@@ -0,0 +1,18 @@
+// TARGET_BACKEND: JVM_IR
+// WITH_STDLIB
+// FULL_JDK
+// CHECK_BYTECODE_TEXT
+
+class A
+
+fun box(): String {
+ val a = try {
+ A()
+ } catch (e: NoClassDefFoundError) {
+ null
+ }
+
+ return "OK"
+}
+
+// 0 CHECKCAST
diff --git a/compiler/testData/codegen/box/casts/kt53677.kt b/compiler/testData/codegen/box/casts/kt53677.kt
new file mode 100644
index 0000000..9c82fdd
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/kt53677.kt
@@ -0,0 +1,29 @@
+// WITH_STDLIB
+// WITH_COROUTINES
+// DONT_TARGET_EXACT_BACKEND: JVM
+// DONT_TARGET_EXACT_BACKEND: JS
+
+import kotlin.coroutines.*
+
+public inline fun <reified T> myEmptyArray(): Array<T> = arrayOfNulls<T>(0) as Array<T>
+
+inline fun <reified T> Array<out T>?.myOrEmpty(): Array<out T> = this ?: myEmptyArray<T>()
+
+fun <T> runBlocking(c: suspend () -> T): T {
+ var res: T? = null
+ c.startCoroutine(Continuation(EmptyCoroutineContext) {
+ res = it.getOrThrow()
+ })
+ return res!!
+}
+
+suspend fun suspendHere(x: String) {}
+
+suspend fun main() {
+ arrayOf("1").myOrEmpty().forEach { suspendHere(it) }
+}
+
+fun box(): String {
+ runBlocking(::main)
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/casts/kt54581.kt b/compiler/testData/codegen/box/casts/kt54581.kt
new file mode 100644
index 0000000..dc1533e
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/kt54581.kt
@@ -0,0 +1,17 @@
+// TARGET_BACKEND: JVM
+
+fun box(): String {
+ val k = tryOrNull { "K" }
+ return "O$k"
+}
+
+private inline fun <T> tryOrNull(action: () -> T): T? =
+ try {
+ action()
+ } catch (e: Throwable) {
+ when {
+ else -> {
+ null
+ }
+ }
+ }
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/casts/kt54707.kt b/compiler/testData/codegen/box/casts/kt54707.kt
new file mode 100644
index 0000000..74a48eb
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/kt54707.kt
@@ -0,0 +1,11 @@
+fun box(): String =
+ g(arrayOf("O"))
+
+fun g(x: Array<String>?): String =
+ x.orEmpty0().f { it + "K" }
+
+inline fun <T> Array<out T>.f(lambda: (T) -> T): T =
+ lambda(this[0])
+
+inline fun <reified T> Array<out T>?.orEmpty0(): Array<out T> =
+ this ?: (arrayOfNulls<T>(0) as Array<T>)
diff --git a/compiler/testData/codegen/box/casts/kt54802.kt b/compiler/testData/codegen/box/casts/kt54802.kt
new file mode 100644
index 0000000..dc66bf4
--- /dev/null
+++ b/compiler/testData/codegen/box/casts/kt54802.kt
@@ -0,0 +1,14 @@
+class K {
+ val x: String = "OK"
+}
+
+inline fun <T> Array<out T>.ifEmpty(body: () -> Array<out T>): Array<out T> =
+ if (size == 0) body() else this
+
+inline fun <T> Array<out T>.f(p: (T) -> String): String =
+ p(this[0])
+
+fun box(): String =
+ emptyArray<K>()
+ .ifEmpty { arrayOf(K()) }
+ .f(K::x)
diff --git a/compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt b/compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt
new file mode 100644
index 0000000..9c3af5b
--- /dev/null
+++ b/compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt
@@ -0,0 +1,22 @@
+// TARGET_BACKEND: JVM
+// FILE: A.java
+
+public class A {
+ public static A create() { return new A(); }
+}
+
+// FILE: box.kt
+
+import kotlin.reflect.KProperty
+
+class C {
+ private val valueState = A.create()
+ private val value by valueState
+
+ fun get(): String = value
+}
+
+operator fun A.getValue(thisRef: Any?, property: KProperty<*>): String = "OK"
+
+fun box(): String =
+ C().get()
diff --git a/compiler/testData/codegen/box/evaluate/stringConcatenationWithObject.kt b/compiler/testData/codegen/box/evaluate/stringConcatenationWithObject.kt
new file mode 100644
index 0000000..d8fac86
--- /dev/null
+++ b/compiler/testData/codegen/box/evaluate/stringConcatenationWithObject.kt
@@ -0,0 +1,15 @@
+// TARGET_BACKEND: JVM_IR
+
+object K : Code("K")
+
+open class Code(val x: String) {
+ override fun toString() = "$x"
+}
+
+class O {
+ companion object: Code("O")
+}
+
+fun box(): String {
+ return "$O" + "$K" // must not be evaluated during compile time
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/evaluate/thisPlusString.kt b/compiler/testData/codegen/box/evaluate/thisPlusString.kt
new file mode 100644
index 0000000..96254ec
--- /dev/null
+++ b/compiler/testData/codegen/box/evaluate/thisPlusString.kt
@@ -0,0 +1,17 @@
+// TARGET_BACKEND: JVM_IR
+// WITH_STDLIB
+
+object Test {
+ fun foo(): String = "foo " + this
+
+ fun bar(): String = "bar $this"
+
+ fun baz(): String = "baz " + this.toString()
+}
+
+fun box(): String {
+ if (!Test.foo().startsWith("foo ")) return "Fail ${Test.foo()}"
+ if (!Test.bar().startsWith("bar ")) return "Fail ${Test.bar()}"
+ if (!Test.baz().startsWith("baz ")) return "Fail ${Test.baz()}"
+ return "OK"
+}
diff --git a/compiler/testData/codegen/box/fieldRename/javaFieldAndCompanionProperty.kt b/compiler/testData/codegen/box/fieldRename/javaFieldAndCompanionProperty.kt
index 92e95b0..b126161 100644
--- a/compiler/testData/codegen/box/fieldRename/javaFieldAndCompanionProperty.kt
+++ b/compiler/testData/codegen/box/fieldRename/javaFieldAndCompanionProperty.kt
@@ -1,4 +1,7 @@
// TARGET_BACKEND: JVM_IR
+// IGNORE_BACKEND: JVM_IR
+// IGNORE_BACKEND_FIR: JVM_IR
+// FIR_STATUS: accesses companion property backing field statically and fails (does not work in K1/JVM too)
// FILE: Base.java
public class Base {
diff --git a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinPrivateProperty.kt b/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinPrivateProperty.kt
new file mode 100644
index 0000000..95c432f
--- /dev/null
+++ b/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinPrivateProperty.kt
@@ -0,0 +1,18 @@
+// TARGET_BACKEND: JVM_IR
+// Note: works accidentally via backing field access
+// Field VS property: case 4.2
+// More or less duplicates the case in KT-34943/KT-54393
+
+// FILE: BaseJava.java
+public class BaseJava {
+ public String a = "FAIL";
+}
+
+// FILE: Derived.kt
+class Derived : BaseJava() {
+ private val a = "OK"
+
+ fun x() = a
+}
+
+fun box() = Derived().x()
diff --git a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.fir.ir.txt b/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.fir.ir.txt
deleted file mode 100644
index 4676708..0000000
--- a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.fir.ir.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-FILE fqName:<root> fileName:/Derived.kt
- CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.BaseJava]
- $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Derived
- CONSTRUCTOR visibility:public <> () returnType:<root>.Derived [primary]
- BLOCK_BODY
- DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.BaseJava'
- INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.BaseJava]'
- PROPERTY name:a visibility:public modality:FINAL [val]
- FIELD PROPERTY_BACKING_FIELD name:a type:kotlin.String visibility:private [final]
- EXPRESSION_BODY
- CONST String type=kotlin.String value="FAIL"
- FUN DEFAULT_PROPERTY_ACCESSOR name:<get-a> visibility:public modality:FINAL <> ($this:<root>.Derived) returnType:kotlin.String
- correspondingProperty: PROPERTY name:a visibility:public modality:FINAL [val]
- $this: VALUE_PARAMETER name:<this> type:<root>.Derived
- BLOCK_BODY
- RETURN type=kotlin.Nothing from='public final fun <get-a> (): kotlin.String declared in <root>.Derived'
- GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:a type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
- receiver: GET_VAR '<this>: <root>.Derived declared in <root>.Derived.<get-a>' type=<root>.Derived origin=null
- FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
- overridden:
- public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.BaseJava
- $this: VALUE_PARAMETER name:<this> type:kotlin.Any
- VALUE_PARAMETER name:other index:0 type:kotlin.Any?
- FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
- overridden:
- public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.BaseJava
- $this: VALUE_PARAMETER name:<this> type:kotlin.Any
- FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
- overridden:
- public open fun toString (): kotlin.String [fake_override] declared in <root>.BaseJava
- $this: VALUE_PARAMETER name:<this> type:kotlin.Any
- FUN name:box visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
- BLOCK_BODY
- RETURN type=kotlin.Nothing from='public final fun box (): @[FlexibleNullability] kotlin.String? declared in <root>'
- GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:a type:@[FlexibleNullability] kotlin.String? visibility:public' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
- receiver: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.Derived' type=<root>.Derived origin=null
diff --git a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.ir.txt b/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.ir.txt
deleted file mode 100644
index bee2c05..0000000
--- a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.ir.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-FILE fqName:<root> fileName:/Derived.kt
- CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.BaseJava]
- $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Derived
- CONSTRUCTOR visibility:public <> () returnType:<root>.Derived [primary]
- BLOCK_BODY
- DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.BaseJava'
- INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[<root>.BaseJava]'
- PROPERTY name:a visibility:public modality:FINAL [val]
- FIELD PROPERTY_BACKING_FIELD name:a type:kotlin.String visibility:private [final]
- EXPRESSION_BODY
- CONST String type=kotlin.String value="FAIL"
- FUN DEFAULT_PROPERTY_ACCESSOR name:<get-a> visibility:public modality:FINAL <> ($this:<root>.Derived) returnType:kotlin.String
- correspondingProperty: PROPERTY name:a visibility:public modality:FINAL [val]
- $this: VALUE_PARAMETER name:<this> type:<root>.Derived
- BLOCK_BODY
- RETURN type=kotlin.Nothing from='public final fun <get-a> (): kotlin.String declared in <root>.Derived'
- GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:a type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
- receiver: GET_VAR '<this>: <root>.Derived declared in <root>.Derived.<get-a>' type=<root>.Derived origin=null
- PROPERTY FAKE_OVERRIDE name:a visibility:public modality:FINAL [fake_override,var]
- overridden:
- public final a: @[FlexibleNullability] kotlin.String? [var]
- FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
- overridden:
- public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.BaseJava
- $this: VALUE_PARAMETER name:<this> type:kotlin.Any
- VALUE_PARAMETER name:other index:0 type:kotlin.Any?
- FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
- overridden:
- public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.BaseJava
- $this: VALUE_PARAMETER name:<this> type:kotlin.Any
- FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
- overridden:
- public open fun toString (): kotlin.String [fake_override] declared in <root>.BaseJava
- $this: VALUE_PARAMETER name:<this> type:kotlin.Any
- FUN name:box visibility:public modality:FINAL <> () returnType:@[FlexibleNullability] kotlin.String?
- BLOCK_BODY
- RETURN type=kotlin.Nothing from='public final fun box (): @[FlexibleNullability] kotlin.String? declared in <root>'
- GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:a type:@[FlexibleNullability] kotlin.String? visibility:public' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
- receiver: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.Derived' type=<root>.Derived origin=null
diff --git a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.kt b/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.kt
index 6eac6bc..645cbbd 100644
--- a/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.kt
+++ b/compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.kt
@@ -1,5 +1,9 @@
// TARGET_BACKEND: JVM_IR
-// DUMP_IR
+// IGNORE_BACKEND: JVM_IR
+// IGNORE_BACKEND_FIR: JVM_IR
+// FIR_STATUS: accesses property backing field accidentally and fails with exception (does not work in K1/JVM too)
+// Field VS property: case 4.1
+// See KT-54393 for details
// FILE: BaseJava.java
public class BaseJava {
diff --git a/compiler/testData/codegen/box/sam/kt54600.fir.ir.txt b/compiler/testData/codegen/box/sam/kt54600.fir.ir.txt
new file mode 100644
index 0000000..d01302d
--- /dev/null
+++ b/compiler/testData/codegen/box/sam/kt54600.fir.ir.txt
@@ -0,0 +1,15 @@
+FILE fqName:<root> fileName:/box.kt
+ FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
+ BLOCK_BODY
+ RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
+ CALL 'public final fun foo (filter: kotlin.Function1<kotlin.String, kotlin.Boolean>?): kotlin.String declared in <root>' type=kotlin.String origin=null
+ filter: CONST Null type=kotlin.Nothing? value=null
+ FUN name:foo visibility:public modality:FINAL <> (filter:kotlin.Function1<kotlin.String, kotlin.Boolean>?) returnType:kotlin.String
+ VALUE_PARAMETER name:filter index:0 type:kotlin.Function1<kotlin.String, kotlin.Boolean>?
+ BLOCK_BODY
+ TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+ CONSTRUCTOR_CALL 'public constructor <init> (filter: @[FlexibleNullability] <root>.Condition<in @[FlexibleNullability] kotlin.String?>?) declared in <root>.J' type=<root>.J origin=null
+ filter: TYPE_OP type=@[FlexibleNullability] <root>.Condition<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.Condition<@[FlexibleNullability] kotlin.String?>?
+ GET_VAR 'filter: kotlin.Function1<kotlin.String, kotlin.Boolean>? declared in <root>.foo' type=kotlin.Function1<kotlin.String, kotlin.Boolean>? origin=null
+ RETURN type=kotlin.Nothing from='public final fun foo (filter: kotlin.Function1<kotlin.String, kotlin.Boolean>?): kotlin.String declared in <root>'
+ CONST String type=kotlin.String value="OK"
diff --git a/compiler/testData/codegen/box/sam/kt54600.ir.txt b/compiler/testData/codegen/box/sam/kt54600.ir.txt
new file mode 100644
index 0000000..97f44ae
--- /dev/null
+++ b/compiler/testData/codegen/box/sam/kt54600.ir.txt
@@ -0,0 +1,16 @@
+FILE fqName:<root> fileName:/box.kt
+ FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
+ BLOCK_BODY
+ RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
+ CALL 'public final fun foo (filter: kotlin.Function1<kotlin.String, kotlin.Boolean>?): kotlin.String declared in <root>' type=kotlin.String origin=null
+ filter: CONST Null type=kotlin.Nothing? value=null
+ FUN name:foo visibility:public modality:FINAL <> (filter:kotlin.Function1<kotlin.String, kotlin.Boolean>?) returnType:kotlin.String
+ VALUE_PARAMETER name:filter index:0 type:kotlin.Function1<kotlin.String, kotlin.Boolean>?
+ BLOCK_BODY
+ TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
+ CONSTRUCTOR_CALL 'public constructor <init> (filter: @[FlexibleNullability] <root>.Condition<in @[FlexibleNullability] kotlin.String?>?) declared in <root>.J' type=<root>.J origin=null
+ filter: TYPE_OP type=@[FlexibleNullability] <root>.Condition<kotlin.Any?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.Condition<kotlin.Any?>?
+ TYPE_OP type=@[FlexibleNullability] kotlin.Function1<@[ParameterName(name = 't')] kotlin.Any?, kotlin.Boolean>? origin=IMPLICIT_CAST typeOperand=@[FlexibleNullability] kotlin.Function1<@[ParameterName(name = 't')] kotlin.Any?, kotlin.Boolean>?
+ GET_VAR 'filter: kotlin.Function1<kotlin.String, kotlin.Boolean>? declared in <root>.foo' type=kotlin.Function1<kotlin.String, kotlin.Boolean>? origin=null
+ RETURN type=kotlin.Nothing from='public final fun foo (filter: kotlin.Function1<kotlin.String, kotlin.Boolean>?): kotlin.String declared in <root>'
+ CONST String type=kotlin.String value="OK"
diff --git a/compiler/testData/codegen/box/sam/kt54600.kt b/compiler/testData/codegen/box/sam/kt54600.kt
new file mode 100644
index 0000000..7b96d0a
--- /dev/null
+++ b/compiler/testData/codegen/box/sam/kt54600.kt
@@ -0,0 +1,27 @@
+// TARGET_BACKEND: JVM
+// DUMP_IR
+// FILE: box.kt
+
+fun box(): String =
+ foo(null)
+
+fun foo(filter: ((String) -> Boolean)?): String {
+ J(filter)
+ return "OK"
+}
+
+// FILE: J.java
+
+public class J {
+ public J(Condition<? super String> filter) {
+ if (filter != null) {
+ filter.value("");
+ }
+ }
+}
+
+// FILE: Condition.java
+
+public interface Condition<T> {
+ boolean value(T t);
+}
diff --git a/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.kt b/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.kt
new file mode 100644
index 0000000..fe9991b
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.kt
@@ -0,0 +1,10 @@
+// This test checks that we use the `...$lambda-0` method name, instead of `...$lambda$0`, for extracted accessors of local delegated properties.
+// It's important to keep these names until we fix the binary compatibility issue KT-49030.
+
+operator fun String.getValue(thisRef: Any?, prop: Any?): String = this
+operator fun String.setValue(thisRef: Any?, prop: Any?, value: String) {}
+
+inline fun foo(): String {
+ var x by "OK"
+ return x
+}
diff --git a/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.txt b/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.txt
new file mode 100644
index 0000000..076966a
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.txt
@@ -0,0 +1,20 @@
+@kotlin.Metadata
+public final class LocalDelegatedPropertyKt$foo$x$1 {
+ // source: 'localDelegatedProperty.kt'
+ public final static field INSTANCE: kotlin.reflect.KMutableProperty0
+ static method <clinit>(): void
+ method <init>(): void
+ public method getName(): java.lang.String
+ public method getOwner(): kotlin.reflect.KDeclarationContainer
+ public method getSignature(): java.lang.String
+}
+
+@kotlin.Metadata
+public final class LocalDelegatedPropertyKt {
+ // source: 'localDelegatedProperty.kt'
+ synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
+ static method <clinit>(): void
+ public final static @org.jetbrains.annotations.NotNull method foo(): java.lang.String
+ public final static @org.jetbrains.annotations.NotNull method getValue(@org.jetbrains.annotations.NotNull p0: java.lang.String, @org.jetbrains.annotations.Nullable p1: java.lang.Object, @org.jetbrains.annotations.Nullable p2: java.lang.Object): java.lang.String
+ public final static method setValue(@org.jetbrains.annotations.NotNull p0: java.lang.String, @org.jetbrains.annotations.Nullable p1: java.lang.Object, @org.jetbrains.annotations.Nullable p2: java.lang.Object, @org.jetbrains.annotations.NotNull p3: java.lang.String): void
+}
diff --git a/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty_ir.txt b/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty_ir.txt
new file mode 100644
index 0000000..9220aaa
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty_ir.txt
@@ -0,0 +1,12 @@
+@kotlin.Metadata
+public final class LocalDelegatedPropertyKt {
+ // source: 'localDelegatedProperty.kt'
+ synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
+ static method <clinit>(): void
+ public synthetic final static method access$foo$lambda-0(p0: java.lang.String): java.lang.String
+ private final static method foo$lambda-0(p0: java.lang.String): java.lang.String
+ private final static method foo$lambda-1(p0: java.lang.String, p1: java.lang.String): void
+ public final static @org.jetbrains.annotations.NotNull method foo(): java.lang.String
+ public final static @org.jetbrains.annotations.NotNull method getValue(@org.jetbrains.annotations.NotNull p0: java.lang.String, @org.jetbrains.annotations.Nullable p1: java.lang.Object, @org.jetbrains.annotations.Nullable p2: java.lang.Object): java.lang.String
+ public final static method setValue(@org.jetbrains.annotations.NotNull p0: java.lang.String, @org.jetbrains.annotations.Nullable p1: java.lang.Object, @org.jetbrains.annotations.Nullable p2: java.lang.Object, @org.jetbrains.annotations.NotNull p3: java.lang.String): void
+}
diff --git a/compiler/testData/codegen/bytecodeText/checkcast/kt53465.kt b/compiler/testData/codegen/bytecodeText/checkcast/kt53465.kt
new file mode 100644
index 0000000..36e6e31
--- /dev/null
+++ b/compiler/testData/codegen/bytecodeText/checkcast/kt53465.kt
@@ -0,0 +1,15 @@
+// TARGET_BACKEND: JVM_IR
+
+public inline fun <reified T> myEmptyArray(): Array<T> = arrayOfNulls<T>(0) as Array<T>
+
+inline fun <reified T> Array<out T>?.myOrEmpty(): Array<out T> = this ?: myEmptyArray<T>()
+
+fun foo(a : Array<String>?) = a.myOrEmpty()
+
+val a = arrayOf<Int>(1) as Array<Any>
+
+val b = arrayOf<Int>(1) as Array<Int>
+
+val c = arrayOf(arrayOf<Int>(1)) as Array<Array<Any>?>
+
+// 0 CHECKCAST
\ No newline at end of file
diff --git a/compiler/testData/codegen/bytecodeText/javaFields.kt b/compiler/testData/codegen/bytecodeText/javaFields.kt
index cbb3edc..a3afb7b 100644
--- a/compiler/testData/codegen/bytecodeText/javaFields.kt
+++ b/compiler/testData/codegen/bytecodeText/javaFields.kt
@@ -16,18 +16,8 @@
fun test1(j: Kotlin2) = j.f
-// JVM_IR_TEMPLATES
-// @Kotlin2.class:
-// 2 GETFIELD Java2.f : I
-
-// JVM_IR_TEMPLATES
-// @TestKt.class:
-// 2 GETFIELD Java2.f : I
-
-// JVM_TEMPLATES
// @Kotlin2.class:
// 1 GETFIELD Java2.f : I
-// JVM_TEMPLATES
// @TestKt.class:
-// 1 GETFIELD Java2.f : I
\ No newline at end of file
+// 1 GETFIELD Kotlin2.f : I
\ No newline at end of file
diff --git a/compiler/testData/codegen/bytecodeText/javaFieldsWithIntersectionTypes.kt b/compiler/testData/codegen/bytecodeText/javaFieldsWithIntersectionTypes.kt
index ac29c48..93bcb38 100644
--- a/compiler/testData/codegen/bytecodeText/javaFieldsWithIntersectionTypes.kt
+++ b/compiler/testData/codegen/bytecodeText/javaFieldsWithIntersectionTypes.kt
@@ -31,13 +31,7 @@
}
// @TestKt.class:
-// 1 PUTFIELD JFieldOwner.f : I
-// 1 PUTFIELD Mid.f : I
-
-// JVM_IR_TEMPLATES
-// 2 GETFIELD JFieldOwner.f : I
-// 0 GETFIELD Mid.f : I
-
-// JVM_TEMPLATES
// 1 GETFIELD JFieldOwner.f : I
+// 1 PUTFIELD JFieldOwner.f : I
// 1 GETFIELD Mid.f : I
+// 1 PUTFIELD Mid.f : I
diff --git a/compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt b/compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt
new file mode 100644
index 0000000..d45298b
--- /dev/null
+++ b/compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt
@@ -0,0 +1,18 @@
+// FIR_IDENTICAL
+
+object O : Code(0)
+
+open class Code(val x: Int) {
+ override fun toString() = "$x"
+}
+
+class A {
+ companion object: Code(0)
+}
+
+const val toString1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>O.toString()<!>
+const val toString2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>A.toString()<!>
+const val plusString1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"string" + O<!>
+const val plusString2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"string" + A<!>
+const val stringConcat1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"$O"<!>
+const val stringConcat2 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>"$A"<!>
diff --git a/compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.txt b/compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.txt
new file mode 100644
index 0000000..aa9727da
--- /dev/null
+++ b/compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.txt
@@ -0,0 +1,40 @@
+package
+
+public const val plusString1: kotlin.String
+public const val plusString2: kotlin.String
+public const val stringConcat1: kotlin.String
+public const val stringConcat2: kotlin.String
+public const val toString1: kotlin.String
+public const val toString2: kotlin.String
+
+public final class A {
+ public constructor A()
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+
+ public companion object Companion : Code {
+ private constructor Companion()
+ public final override /*1*/ /*fake_override*/ val x: kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+ }
+}
+
+public open class Code {
+ public constructor Code(/*0*/ x: kotlin.Int)
+ public final val x: kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ fun toString(): kotlin.String
+}
+
+public object O : Code {
+ private constructor O()
+ public final override /*1*/ /*fake_override*/ val x: kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+}
+
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt
new file mode 100644
index 0000000..dfdcf24
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.fir.kt
@@ -0,0 +1,24 @@
+class Foo<T : Any> {
+ fun doSmthng(arg: T) {}
+ var a: T? = null
+}
+
+fun <T : Any> myBuilder(block: Foo<T>.() -> Unit) : Foo<T> = Foo<T>().apply(block)
+
+fun main(arg: Any) {
+ val x = 57
+ val value = myBuilder {
+ doSmthng("one ")
+ run { a; this }.a = <!ASSIGNMENT_TYPE_MISMATCH!>10<!>
+ a += 1
+ this.a = <!ASSIGNMENT_TYPE_MISMATCH!>57<!>
+ this.(a) = 57
+ a = <!ASSIGNMENT_TYPE_MISMATCH!>x<!>
+ (a) = <!ASSIGNMENT_TYPE_MISMATCH!>x<!>
+ a.<!FUNCTION_CALL_EXPECTED!>hashCode<!> = 99
+ if (arg is String) {
+ a = arg
+ }
+ }
+ println(value.a?.count { it in 'l' .. 'q' })
+}
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt
new file mode 100644
index 0000000..08aa7d2c
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt
@@ -0,0 +1,24 @@
+class Foo<T : Any> {
+ fun doSmthng(arg: T) {}
+ var a: T? = null
+}
+
+fun <T : Any> myBuilder(block: Foo<T>.() -> Unit) : Foo<T> = Foo<T>().apply(block)
+
+fun main(arg: Any) {
+ val x = 57
+ val value = myBuilder {
+ doSmthng("one ")
+ run { a; this }.a = <!TYPE_MISMATCH, TYPE_MISMATCH!>10<!>
+ <!BUILDER_INFERENCE_STUB_RECEIVER, STUB_TYPE_IN_RECEIVER_CAUSES_AMBIGUITY, TYPE_MISMATCH, TYPE_MISMATCH!>a<!> <!OVERLOAD_RESOLUTION_AMBIGUITY_BECAUSE_OF_STUB_TYPES!>+=<!> 1
+ this.a = <!TYPE_MISMATCH!>57<!>
+ this.<!ILLEGAL_SELECTOR, VARIABLE_EXPECTED!>(a)<!> = <!TYPE_MISMATCH!>57<!>
+ a = <!TYPE_MISMATCH!>x<!>
+ (a) = <!TYPE_MISMATCH!>x<!>
+ <!TYPE_MISMATCH!>a<!>.<!FUNCTION_CALL_EXPECTED, VARIABLE_EXPECTED!>hashCode<!> = <!TYPE_MISMATCH, TYPE_MISMATCH!>99<!>
+ if (arg is String) {
+ a = arg
+ }
+ }
+ println(value.a?.count { it in 'l' .. 'q' })
+}
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt
new file mode 100644
index 0000000..15fed74
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.txt
@@ -0,0 +1,14 @@
+package
+
+public fun main(/*0*/ arg: kotlin.Any): kotlin.Unit
+public fun </*0*/ T : kotlin.Any> myBuilder(/*0*/ block: Foo<T>.() -> kotlin.Unit): Foo<T>
+
+public final class Foo</*0*/ T : kotlin.Any> {
+ public constructor Foo</*0*/ T : kotlin.Any>()
+ public final var a: T?
+ public final fun doSmthng(/*0*/ arg: T): kotlin.Unit
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+}
+
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.fir.kt
new file mode 100644
index 0000000..8fad616
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.fir.kt
@@ -0,0 +1,77 @@
+// WITH_REFLECT
+// FIR_DUMP
+import kotlin.reflect.*
+
+interface Foo<T : Any> {
+ var a: T
+ val b: Array<T>
+
+ fun accept(arg: T)
+}
+
+<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class FooImpl<!><T : Any> : Foo<T>
+
+fun bar(p: KMutableProperty0<Int>) {
+ p.set(100)
+}
+
+fun <T : Any> myBuilder(block: Foo<T>.() -> Unit): Foo<T> = FooImpl<T>().apply(block)
+
+fun <T : Any> Foo<T>.change(block: Foo<T>.() -> Unit): Foo<T> {
+ this.block()
+ return this
+}
+
+fun main(arg: Any, condition: Boolean) {
+ val value = myBuilder {
+ b[0] = 123
+ a = 45
+ a<!OVERLOAD_RESOLUTION_AMBIGUITY!>++<!>
+ bar(::a)
+ if (<!USELESS_IS_CHECK!>a is Int<!>) {
+ a = 67
+ a<!OVERLOAD_RESOLUTION_AMBIGUITY!>--<!>
+ bar(::a)
+ }
+ when (condition) {
+ true -> a = 87
+ false -> a = 65
+ }
+ val x by <!DELEGATE_SPECIAL_FUNCTION_AMBIGUITY!>a<!>
+
+ change {
+ a = 99
+ }
+ }
+
+ val value2 = myBuilder {
+ accept("")
+ a = <!ASSIGNMENT_TYPE_MISMATCH!>45<!>
+ when (condition) {
+ true -> a = <!ASSIGNMENT_TYPE_MISMATCH!>87<!>
+ false -> a = <!ASSIGNMENT_TYPE_MISMATCH!>65<!>
+ }
+ change {
+ a = <!ASSIGNMENT_TYPE_MISMATCH!>99<!>
+ }
+ if (a is Int) {
+ a = <!ASSIGNMENT_TYPE_MISMATCH!>67<!>
+ }
+ }
+
+ // See KT-54664
+ val value3 = myBuilder {
+ accept("")
+ a = 45
+ bar(::a)
+ }
+
+ fun baz(t: Int) {}
+
+ val value4 = myBuilder {
+ accept("")
+ a = 45
+ b[0] = 123
+ baz(a)
+ }
+}
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.fir.txt
new file mode 100644
index 0000000..2189bd1
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.fir.txt
@@ -0,0 +1,103 @@
+FILE: unsafeAssignmentExtra.fir.kt
+ public abstract interface Foo<T : R|kotlin/Any|> : R|kotlin/Any| {
+ public abstract var a: R|T|
+ public get(): R|T|
+ public set(value: R|T|): R|kotlin/Unit|
+
+ public abstract val b: R|kotlin/Array<T>|
+ public get(): R|kotlin/Array<T>|
+
+ public abstract fun accept(arg: R|T|): R|kotlin/Unit|
+
+ }
+ public final class FooImpl<T : R|kotlin/Any|> : R|Foo<T>| {
+ public constructor<T : R|kotlin/Any|>(): R|FooImpl<T>| {
+ super<R|kotlin/Any|>()
+ }
+
+ }
+ public final fun bar(p: R|kotlin/reflect/KMutableProperty0<kotlin/Int>|): R|kotlin/Unit| {
+ R|<local>/p|.R|SubstitutionOverride<kotlin/reflect/KMutableProperty0.set: R|kotlin/Unit|>|(Int(100))
+ }
+ public final fun <T : R|kotlin/Any|> myBuilder(block: R|Foo<T>.() -> kotlin/Unit|): R|Foo<T>| {
+ ^myBuilder R|/FooImpl.FooImpl|<R|T|>().R|kotlin/apply|<R|FooImpl<T>|>(R|<local>/block|)
+ }
+ public final fun <T : R|kotlin/Any|> R|Foo<T>|.change(block: R|Foo<T>.() -> kotlin/Unit|): R|Foo<T>| {
+ R|<local>/block|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(this@R|/change|)
+ ^change this@R|/change|
+ }
+ public final fun main(arg: R|kotlin/Any|, condition: R|kotlin/Boolean|): R|kotlin/Unit| {
+ lval value: R|Foo<kotlin/Int>| = R|/myBuilder|<R|kotlin/Int|>(<L> = myBuilder@fun R|Foo<kotlin/Int>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.b: R|kotlin/Array<Stub (chain inference): TypeVariable(T)>|>|.R|SubstitutionOverride<kotlin/Array.set: R|kotlin/Unit|>|(Int(0), Int(123))
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(45)
+ lval <unary>: R|kotlin/Int| = this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = R|<local>/<unary>|.<Ambiguity: inc, [kotlin/inc, kotlin/inc]>#()
+ R|<local>/<unary>|
+ R|/bar|(::R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|)
+ when () {
+ (this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| is R|kotlin/Int|) -> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(67)
+ lval <unary>: R|kotlin/Int| = this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = R|<local>/<unary>|.<Ambiguity: dec, [kotlin/dec, kotlin/dec]>#()
+ R|<local>/<unary>|
+ R|/bar|(::R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|)
+ }
+ }
+
+ when (R|<local>/condition|) {
+ ==($subj$, Boolean(true)) -> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(87)
+ }
+ ==($subj$, Boolean(false)) -> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(65)
+ }
+ }
+
+ lval x: <ERROR TYPE REF: Ambiguity: getValue, [kotlin/getValue, kotlin/getValue, kotlin/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>by this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|
+ this@R|special/anonymous|.R|/change|<R|kotlin/Int|>(<L> = change@fun R|Foo<kotlin/Int>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(99)
+ }
+ )
+ }
+ )
+ lval value2: R|Foo<kotlin/String>| = R|/myBuilder|<R|kotlin/String|>(<L> = myBuilder@fun R|Foo<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.accept: R|kotlin/Unit|>|(String())
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(45)
+ when (R|<local>/condition|) {
+ ==($subj$, Boolean(true)) -> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(87)
+ }
+ ==($subj$, Boolean(false)) -> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(65)
+ }
+ }
+
+ this@R|special/anonymous|.R|/change|<R|kotlin/String|>(<L> = change@fun R|Foo<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(99)
+ }
+ )
+ when () {
+ (this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| is R|kotlin/Int|) -> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(67)
+ }
+ }
+
+ }
+ )
+ lval value3: R|Foo<kotlin/Int>| = R|/myBuilder|<R|kotlin/Int|>(<L> = myBuilder@fun R|Foo<kotlin/Int>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.accept: R|kotlin/Unit|>|(String())
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(45)
+ R|/bar|(::R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|)
+ }
+ )
+ local final fun baz(t: R|kotlin/Int|): R|kotlin/Unit| {
+ }
+
+ lval value4: R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>| = R|/myBuilder|<R|it(kotlin/Comparable<*> & java/io/Serializable)|>(<L> = myBuilder@fun R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.accept: R|kotlin/Unit|>|(String())
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>| = Int(45)
+ this@R|special/anonymous|.R|SubstitutionOverride</Foo.b: R|kotlin/Array<Stub (chain inference): TypeVariable(T)>|>|.R|SubstitutionOverride<kotlin/Array.set: R|kotlin/Unit|>|(Int(0), Int(123))
+ R|<local>/baz|(this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)|>|)
+ }
+ )
+ }
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt
new file mode 100644
index 0000000..e33c3c3
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt
@@ -0,0 +1,77 @@
+// WITH_REFLECT
+// FIR_DUMP
+import kotlin.reflect.*
+
+interface Foo<T : Any> {
+ var a: T
+ val b: Array<T>
+
+ fun accept(arg: T)
+}
+
+<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class FooImpl<!><T : Any> : Foo<T>
+
+fun bar(p: KMutableProperty0<Int>) {
+ p.set(100)
+}
+
+fun <T : Any> myBuilder(block: Foo<T>.() -> Unit): Foo<T> = FooImpl<T>().apply(block)
+
+fun <T : Any> Foo<T>.change(block: Foo<T>.() -> Unit): Foo<T> {
+ this.block()
+ return this
+}
+
+fun main(arg: Any, condition: Boolean) {
+ val value = myBuilder {
+ b[0] = 123
+ a = 45
+ <!STUB_TYPE_IN_RECEIVER_CAUSES_AMBIGUITY!>a<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY, OVERLOAD_RESOLUTION_AMBIGUITY_BECAUSE_OF_STUB_TYPES!>++<!>
+ bar(::a)
+ if (<!USELESS_IS_CHECK, USELESS_IS_CHECK!>a is Int<!>) {
+ a = 67
+ <!STUB_TYPE_IN_RECEIVER_CAUSES_AMBIGUITY!>a<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OVERLOAD_RESOLUTION_AMBIGUITY, OVERLOAD_RESOLUTION_AMBIGUITY_BECAUSE_OF_STUB_TYPES!>--<!>
+ bar(::a)
+ }
+ when (condition) {
+ true -> a = 87
+ false -> a = 65
+ }
+ val x by <!DELEGATE_SPECIAL_FUNCTION_AMBIGUITY!>a<!>
+
+ change {
+ a = 99
+ }
+ }
+
+ val value2 = myBuilder {
+ accept("")
+ a = <!TYPE_MISMATCH!>45<!>
+ when (condition) {
+ true -> a = <!TYPE_MISMATCH!>87<!>
+ false -> a = <!TYPE_MISMATCH!>65<!>
+ }
+ change {
+ a = <!TYPE_MISMATCH!>99<!>
+ }
+ if (<!USELESS_IS_CHECK, USELESS_IS_CHECK!>a is Int<!>) {
+ a = <!TYPE_MISMATCH!>67<!>
+ }
+ }
+
+ // See KT-54664
+ val value3 = myBuilder {
+ accept(<!TYPE_MISMATCH!>""<!>)
+ a = 45
+ bar(<!TYPE_MISMATCH!>::a<!>)
+ }
+
+ fun baz(t: Int) {}
+
+ val value4 = myBuilder {
+ accept("")
+ a = 45
+ b[0] = 123
+ baz(<!TYPE_MISMATCH, TYPE_MISMATCH!>a<!>)
+ }
+}
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.txt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.txt
new file mode 100644
index 0000000..0a8a8c1
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.txt
@@ -0,0 +1,26 @@
+package
+
+public fun bar(/*0*/ p: kotlin.reflect.KMutableProperty0<kotlin.Int>): kotlin.Unit
+public fun main(/*0*/ arg: kotlin.Any, /*1*/ condition: kotlin.Boolean): kotlin.Unit
+public fun </*0*/ T : kotlin.Any> myBuilder(/*0*/ block: Foo<T>.() -> kotlin.Unit): Foo<T>
+public fun </*0*/ T : kotlin.Any> Foo<T>.change(/*0*/ block: Foo<T>.() -> kotlin.Unit): Foo<T>
+
+public interface Foo</*0*/ T : kotlin.Any> {
+ public abstract var a: T
+ public abstract val b: kotlin.Array<T>
+ public abstract fun accept(/*0*/ arg: T): kotlin.Unit
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+}
+
+public final class FooImpl</*0*/ T : kotlin.Any> : Foo<T> {
+ public constructor FooImpl</*0*/ T : kotlin.Any>()
+ public abstract override /*1*/ /*fake_override*/ var a: T
+ public abstract override /*1*/ /*fake_override*/ val b: kotlin.Array<T>
+ public abstract override /*1*/ /*fake_override*/ fun accept(/*0*/ arg: T): kotlin.Unit
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+}
+
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.fir.kt
new file mode 100644
index 0000000..8d3e441
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.fir.kt
@@ -0,0 +1,21 @@
+// !LANGUAGE: +NoBuilderInferenceWithoutAnnotationRestriction
+
+class Foo<T : Any> {
+ fun doSmthng(arg: T) {}
+ var a: T? = null
+}
+
+fun <T : Any> myBuilder(block: Foo<T>.() -> Unit) : Foo<T> = Foo<T>().apply(block)
+
+fun main(arg: Any) {
+ val x = 57
+ val value = myBuilder {
+ doSmthng("one ")
+ a = <!ASSIGNMENT_TYPE_MISMATCH!>57<!>
+ a = <!ASSIGNMENT_TYPE_MISMATCH!>x<!>
+ if (arg is String) {
+ a = arg
+ }
+ }
+ println(value.a?.count { it in 'l' .. 'q' })
+}
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt
new file mode 100644
index 0000000..78d6520
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt
@@ -0,0 +1,21 @@
+// !LANGUAGE: +NoBuilderInferenceWithoutAnnotationRestriction
+
+class Foo<T : Any> {
+ fun doSmthng(arg: T) {}
+ var a: T? = null
+}
+
+fun <T : Any> myBuilder(block: Foo<T>.() -> Unit) : Foo<T> = Foo<T>().apply(block)
+
+fun main(arg: Any) {
+ val x = 57
+ val value = myBuilder {
+ doSmthng("one ")
+ a = 57
+ a = x
+ if (arg is String) {
+ a = arg
+ }
+ }
+ println(value.a?.count { it in 'l' .. 'q' })
+}
diff --git a/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.txt b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.txt
new file mode 100644
index 0000000..f920da6
--- /dev/null
+++ b/compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.txt
@@ -0,0 +1,13 @@
+package
+
+public fun main(/*0*/ arg: kotlin.Any): kotlin.Unit
+public fun </*0*/ T : kotlin.Any> myBuilder(/*0*/ block: Foo<T>.() -> kotlin.Unit): Foo<T>
+
+public final class Foo</*0*/ T : kotlin.Any> {
+ public constructor Foo</*0*/ T : kotlin.Any>()
+ public final var a: T?
+ public final fun doSmthng(/*0*/ arg: T): kotlin.Unit
+ public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
+ public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
+ public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
+}
diff --git a/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.fir.kt.txt b/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.fir.kt.txt
index 2643c43..bbc7828 100644
--- a/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.fir.kt.txt
+++ b/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.fir.kt.txt
@@ -13,14 +13,14 @@
fun f(): @FlexibleNullability String? {
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
- return <this>(super<B>).#x
+ return <this>.#x
}
)
}
fun g(): @FlexibleNullability String? {
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
- return <this>(super<B>).#y
+ return <this>.#y
}
)
}
diff --git a/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.kt.txt b/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.kt.txt
index 2643c43..9ca60a6 100644
--- a/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.kt.txt
+++ b/compiler/testData/ir/irText/expressions/ambiguousFieldAccess.kt.txt
@@ -13,14 +13,14 @@
fun f(): @FlexibleNullability String? {
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
- return <this>(super<B>).#x
+ return <this>(super<C>).#x
}
)
}
fun g(): @FlexibleNullability String? {
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
- return <this>(super<B>).#y
+ return <this>(super<C>).#y
}
)
}
diff --git a/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.fir.kt.txt b/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.fir.kt.txt
index 941453d..ff523da 100644
--- a/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.fir.kt.txt
+++ b/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.fir.kt.txt
@@ -55,7 +55,7 @@
else -> d2
}
k.#f = 42
- k(super<JFieldOwner>).#f /*~> Unit */
+ k.#f /*~> Unit */
val md1: DerivedThroughMid1 = DerivedThroughMid1()
val md2: DerivedThroughMid2 = DerivedThroughMid2()
val mk: Mid = when {
@@ -63,6 +63,6 @@
else -> md2
}
mk.#f = 44
- mk(super<JFieldOwner>).#f /*~> Unit */
+ mk.#f /*~> Unit */
}
diff --git a/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.kt.txt b/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.kt.txt
index 9829e97..37ac60f 100644
--- a/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.kt.txt
+++ b/compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.kt.txt
@@ -63,6 +63,6 @@
else -> md2
}
mk /*as Mid */(super<Mid>).#f = 44
- mk /*as Mid */(super<JFieldOwner>).#f /*~> Unit */
+ mk /*as Mid */(super<Mid>).#f /*~> Unit */
}
diff --git a/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.fir.kt.txt b/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.fir.kt.txt
index bdc1eb9..b8d23df 100644
--- a/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.fir.kt.txt
+++ b/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.fir.kt.txt
@@ -10,7 +10,7 @@
}
fun getValue(): Int {
- return <this>(super<Base>).#value
+ return <this>.#value
}
fun setValue(value: Int) {
diff --git a/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.kt.txt b/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.kt.txt
index 564bed8..0a51e83 100644
--- a/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.kt.txt
+++ b/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.kt.txt
@@ -10,7 +10,7 @@
}
fun getValue(): Int {
- return <this>(super<Base>).#value
+ return <this>(super<Derived>).#value
}
fun setValue(value: Int) {
diff --git a/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.ir.txt b/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.ir.txt
index 90f4639..21037d8 100644
--- a/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.ir.txt
+++ b/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.ir.txt
@@ -106,10 +106,9 @@
CALL 'public open fun run1 (r: @[FlexibleNullability] java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=null
$this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable?
- TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=IMPLICIT_NOTNULL typeOperand=kotlin.Function0<kotlin.Unit>
- CALL 'public open fun id <T> (x: @[FlexibleNullability] T of <root>.J.id?): @[FlexibleNullability] T of <root>.J.id? declared in <root>.J' type=@[FlexibleNullability] kotlin.Function0<kotlin.Unit>? origin=null
- <T>: @[FlexibleNullability] kotlin.Function0<kotlin.Unit>?
- x: GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test8' type=kotlin.Function0<kotlin.Unit> origin=null
+ CALL 'public open fun id <T> (x: @[FlexibleNullability] T of <root>.J.id?): @[FlexibleNullability] T of <root>.J.id? declared in <root>.J' type=@[FlexibleNullability] kotlin.Function0<kotlin.Unit>? origin=null
+ <T>: @[FlexibleNullability] kotlin.Function0<kotlin.Unit>?
+ x: GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test8' type=kotlin.Function0<kotlin.Unit> origin=null
FUN name:test9 visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
CALL 'public open fun run1 (r: @[FlexibleNullability] java.lang.Runnable?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=null
diff --git a/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.kt.txt b/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.kt.txt
index c0b6482..a2b263c 100644
--- a/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.kt.txt
+++ b/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.kt.txt
@@ -58,9 +58,10 @@
}
fun test8(a: Function0<Unit>) {
- J().run1(r = id<@FlexibleNullability Function0<Unit>?>(x = a) /*!! Function0<Unit> */ /*-> @FlexibleNullability Runnable? */)
+ J().run1(r = id<@FlexibleNullability Function0<Unit>?>(x = a) /*-> @FlexibleNullability Runnable? */)
}
fun test9() {
J().run1(r = ::test9 /*-> @FlexibleNullability Runnable? */)
}
+
diff --git a/compiler/testData/ir/irText/firProblems/JCTree.fir.kt.txt b/compiler/testData/ir/irText/firProblems/JCTree.fir.kt.txt
index 72d8be5..d7e0748 100644
--- a/compiler/testData/ir/irText/firProblems/JCTree.fir.kt.txt
+++ b/compiler/testData/ir/irText/firProblems/JCTree.fir.kt.txt
@@ -13,7 +13,7 @@
get(): String {
var tree: JCTree = <this>.<get-tree>()
when {
- tree is JCTypeApply -> return tree /*as JCTypeApply */(super<JCTypeApply>).#clazz /*!! String */
+ tree is JCTypeApply -> return tree /*as JCTypeApply */.#clazz /*!! String */
}
return ""
}
diff --git a/compiler/testData/ir/irText/firProblems/typeParameterFromJavaClass.fir.kt.txt b/compiler/testData/ir/irText/firProblems/typeParameterFromJavaClass.fir.kt.txt
index 72870f5..9575285 100644
--- a/compiler/testData/ir/irText/firProblems/typeParameterFromJavaClass.fir.kt.txt
+++ b/compiler/testData/ir/irText/firProblems/typeParameterFromJavaClass.fir.kt.txt
@@ -1,6 +1,6 @@
fun foo(movedPaths: MutableList<Couple<FilePath>>) {
movedPaths.forEach<Couple<FilePath>>(action = local fun <anonymous>(it: Couple<FilePath>) {
- it(super<Couple>).#second.getName() /*~> Unit */
+ it.#second.getName() /*~> Unit */
}
)
}
diff --git a/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.fir.kt.txt b/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.fir.kt.txt
index 5bf439c..5cff33b 100644
--- a/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.fir.kt.txt
+++ b/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.fir.kt.txt
@@ -6,6 +6,6 @@
fun testGetField(a: Any): String {
a as JCell<String> /*~> Unit */
- return a /*as JCell<String> */(super<JCell>).#value /*!! String */
+ return a /*as JCell<String> */.#value /*!! String */
}
diff --git a/compiler/testData/ir/loweredIr/interpreter/useCorrectToString.kt b/compiler/testData/ir/loweredIr/interpreter/useCorrectToString.kt
new file mode 100644
index 0000000..e1579b2
--- /dev/null
+++ b/compiler/testData/ir/loweredIr/interpreter/useCorrectToString.kt
@@ -0,0 +1,13 @@
+// This test is needed to check that IrCompileTimeChecker will not fail trying to find and analyze correct toString method
+
+object Obj {
+ override fun toString(): String = "OK"
+
+ fun Int.toString(): String = "Not OK"
+}
+
+const val a = 1 // this is a dummy const to avoid check in IrInterpreterDumpHandler
+
+fun box(): String {
+ return "" + "$Obj" // force a call
+}
diff --git a/compiler/testData/launcher/interpreterClassLoader.kt b/compiler/testData/launcher/interpreterClassLoader.kt
new file mode 100644
index 0000000..2db5da9
--- /dev/null
+++ b/compiler/testData/launcher/interpreterClassLoader.kt
@@ -0,0 +1,14 @@
+package test
+
+// for more information see KT-54509
+object Test {
+ fun foo(): String = "foo " + this
+
+ fun bar(): String = "bar $this"
+
+ fun baz(): String = "baz " + this.toString()
+}
+
+fun main() {
+ println(Test.foo() + Test.bar() + Test.baz())
+}
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java
index 8d545fa..729d469 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java
@@ -20364,6 +20364,12 @@
}
@Test
+ @TestMetadata("stringConcatenationWithObject.kt")
+ public void testStringConcatenationWithObject() throws Exception {
+ runTest("compiler/testData/diagnostics/tests/modifiers/const/stringConcatenationWithObject.kt");
+ }
+
+ @Test
@TestMetadata("types.kt")
public void testTypes() throws Exception {
runTest("compiler/testData/diagnostics/tests/modifiers/const/types.kt");
@@ -35629,6 +35635,24 @@
}
@Test
+ @TestMetadata("unsafeAssignment.kt")
+ public void testUnsafeAssignment() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignmentExtra.kt")
+ public void testUnsafeAssignmentExtra() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignmentExtra.kt");
+ }
+
+ @Test
+ @TestMetadata("unsafeAssignment_noReport.kt")
+ public void testUnsafeAssignment_noReport() throws Exception {
+ runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/unsafeAssignment_noReport.kt");
+ }
+
+ @Test
@TestMetadata("useInferenceInformationFromExtension.kt")
public void testUseInferenceInformationFromExtension() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/builderInference/useInferenceInformationFromExtension.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java
index 510d40d..9d4b750 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java
@@ -4488,6 +4488,24 @@
}
@Test
+ @TestMetadata("arrayDowncastingContravariant.kt")
+ public void testArrayDowncastingContravariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayDowncatingInvariant.kt")
+ public void testArrayDowncatingInvariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayDownctingCovariant.kt")
+ public void testArrayDownctingCovariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt");
+ }
+
+ @Test
@TestMetadata("as.kt")
public void testAs() throws Exception {
runTest("compiler/testData/codegen/box/casts/as.kt");
@@ -4614,6 +4632,24 @@
}
@Test
+ @TestMetadata("kt54581.kt")
+ public void testKt54581() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54581.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
+ @Test
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
@@ -14667,6 +14703,12 @@
}
@Test
+ @TestMetadata("kt54463_platformType.kt")
+ public void testKt54463_platformType() throws Exception {
+ runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt");
+ }
+
+ @Test
@TestMetadata("memberExtensionPropertyAndImportFromObject.kt")
public void testMemberExtensionPropertyAndImportFromObject() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/memberExtensionPropertyAndImportFromObject.kt");
@@ -44544,6 +44586,12 @@
}
@Test
+ @TestMetadata("kt54600.kt")
+ public void testKt54600() throws Exception {
+ runTest("compiler/testData/codegen/box/sam/kt54600.kt");
+ }
+
+ @Test
@TestMetadata("nonInlinedSamWrapper.kt")
public void testNonInlinedSamWrapper() throws Exception {
runTest("compiler/testData/codegen/box/sam/nonInlinedSamWrapper.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java
index 0987f13..0a79945 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BytecodeListingTestGenerated.java
@@ -1037,6 +1037,12 @@
public void testDelegatedPropertiesInCompanionObject() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/delegatedProperty/delegatedPropertiesInCompanionObject.kt");
}
+
+ @Test
+ @TestMetadata("localDelegatedProperty.kt")
+ public void testLocalDelegatedProperty() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.kt");
+ }
}
@Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
index b5a4057..8fe7795 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
@@ -4602,6 +4602,24 @@
}
@Test
+ @TestMetadata("arrayDowncastingContravariant.kt")
+ public void testArrayDowncastingContravariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayDowncatingInvariant.kt")
+ public void testArrayDowncatingInvariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayDownctingCovariant.kt")
+ public void testArrayDownctingCovariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt");
+ }
+
+ @Test
@TestMetadata("as.kt")
public void testAs() throws Exception {
runTest("compiler/testData/codegen/box/casts/as.kt");
@@ -4728,6 +4746,36 @@
}
@Test
+ @TestMetadata("kt53146.kt")
+ public void testKt53146() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53146.kt");
+ }
+
+ @Test
+ @TestMetadata("kt53677.kt")
+ public void testKt53677() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53677.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54581.kt")
+ public void testKt54581() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54581.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
+ @Test
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
@@ -14805,6 +14853,12 @@
}
@Test
+ @TestMetadata("kt54463_platformType.kt")
+ public void testKt54463_platformType() throws Exception {
+ runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt");
+ }
+
+ @Test
@TestMetadata("memberExtensionPropertyAndImportFromObject.kt")
public void testMemberExtensionPropertyAndImportFromObject() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/memberExtensionPropertyAndImportFromObject.kt");
@@ -16738,6 +16792,18 @@
}
@Test
+ @TestMetadata("stringConcatenationWithObject.kt")
+ public void testStringConcatenationWithObject() throws Exception {
+ runTest("compiler/testData/codegen/box/evaluate/stringConcatenationWithObject.kt");
+ }
+
+ @Test
+ @TestMetadata("thisPlusString.kt")
+ public void testThisPlusString() throws Exception {
+ runTest("compiler/testData/codegen/box/evaluate/thisPlusString.kt");
+ }
+
+ @Test
@TestMetadata("unaryMinus.kt")
public void testUnaryMinus() throws Exception {
runTest("compiler/testData/codegen/box/evaluate/unaryMinus.kt");
@@ -17482,6 +17548,12 @@
}
@Test
+ @TestMetadata("javaFieldAndKotlinPrivateProperty.kt")
+ public void testJavaFieldAndKotlinPrivateProperty() throws Exception {
+ runTest("compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinPrivateProperty.kt");
+ }
+
+ @Test
@TestMetadata("javaFieldAndKotlinProperty.kt")
public void testJavaFieldAndKotlinProperty() throws Exception {
runTest("compiler/testData/codegen/box/fieldRename/javaFieldAndKotlinProperty.kt");
@@ -45168,6 +45240,12 @@
}
@Test
+ @TestMetadata("kt54600.kt")
+ public void testKt54600() throws Exception {
+ runTest("compiler/testData/codegen/box/sam/kt54600.kt");
+ }
+
+ @Test
@TestMetadata("nonInlinedSamWrapper.kt")
public void testNonInlinedSamWrapper() throws Exception {
runTest("compiler/testData/codegen/box/sam/nonInlinedSamWrapper.kt");
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java
index 5d9f39b..6493459 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java
@@ -1133,6 +1133,12 @@
public void testDelegatedPropertiesInCompanionObject() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/delegatedProperty/delegatedPropertiesInCompanionObject.kt");
}
+
+ @Test
+ @TestMetadata("localDelegatedProperty.kt")
+ public void testLocalDelegatedProperty() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeListing/delegatedProperty/localDelegatedProperty.kt");
+ }
}
@Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java
index 71637d8..9255ac2 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeTextTestGenerated.java
@@ -1087,6 +1087,12 @@
}
@Test
+ @TestMetadata("kt53465.kt")
+ public void testKt53465() throws Exception {
+ runTest("compiler/testData/codegen/bytecodeText/checkcast/kt53465.kt");
+ }
+
+ @Test
@TestMetadata("noCheckcastOnDelegatingDefaultImplsCall.kt")
public void testNoCheckcastOnDelegatingDefaultImplsCall() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/checkcast/noCheckcastOnDelegatingDefaultImplsCall.kt");
diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/D8Checker.java b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/D8Checker.java
index 2f15191..27fcbd7 100644
--- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/D8Checker.java
+++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/D8Checker.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.*;
import com.android.tools.r8.origin.PathOrigin;
+import com.android.tools.r8.utils.ExceptionDiagnostic;
import kotlin.Pair;
import org.jetbrains.kotlin.backend.common.output.OutputFile;
import org.jetbrains.kotlin.test.KtAssert;
diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
index 22bfeb0..157411a 100644
--- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
+++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java
@@ -3921,6 +3921,21 @@
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/casts"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
+ @TestMetadata("arrayDowncastingContravariant.kt")
+ public void testArrayDowncastingContravariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncastingContravariant.kt");
+ }
+
+ @TestMetadata("arrayDowncatingInvariant.kt")
+ public void testArrayDowncatingInvariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDowncatingInvariant.kt");
+ }
+
+ @TestMetadata("arrayDownctingCovariant.kt")
+ public void testArrayDownctingCovariant() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/arrayDownctingCovariant.kt");
+ }
+
@TestMetadata("as.kt")
public void testAs() throws Exception {
runTest("compiler/testData/codegen/box/casts/as.kt");
@@ -4026,6 +4041,21 @@
runTest("compiler/testData/codegen/box/casts/kt50577.kt");
}
+ @TestMetadata("kt54581.kt")
+ public void testKt54581() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54581.kt");
+ }
+
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
@@ -11985,6 +12015,11 @@
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/initializeContainerOfTopLevelProperties.kt");
}
+ @TestMetadata("kt54463_platformType.kt")
+ public void testKt54463_platformType() throws Exception {
+ runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/kt54463_platformType.kt");
+ }
+
@TestMetadata("memberExtensionPropertyAndImportFromObject.kt")
public void testMemberExtensionPropertyAndImportFromObject() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToFinalProperty/memberExtensionPropertyAndImportFromObject.kt");
@@ -36006,6 +36041,11 @@
runTest("compiler/testData/codegen/box/sam/kt52417.kt");
}
+ @TestMetadata("kt54600.kt")
+ public void testKt54600() throws Exception {
+ runTest("compiler/testData/codegen/box/sam/kt54600.kt");
+ }
+
@TestMetadata("nonInlinedSamWrapper.kt")
public void testNonInlinedSamWrapper() throws Exception {
runTest("compiler/testData/codegen/box/sam/nonInlinedSamWrapper.kt");
diff --git a/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt
index f8dc017..7bb9712 100644
--- a/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt
+++ b/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt
@@ -444,4 +444,10 @@
workDirectory = subDir
)
}
+
+ fun testInterpreterClassLoader() {
+ runProcess(
+ "kotlinc", "$testDataDirectory/interpreterClassLoader.kt", "-d", tmpdir.path
+ )
+ }
}
diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt
index 4d57de3..9dd1a99 100644
--- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt
+++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt
@@ -286,6 +286,10 @@
ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null),
// Disabled for indefinite time. Disables restrictions of builder inference without annotation
+ // Note: In 1.7.0, builder inference without annotation was introduced.
+ // However, later we encountered various situations when it works incorrectly, and decided to forbid them.
+ // When this feature is disabled, various errors are reported which are related to these incorrect situations.
+ // When this feature is enabled, no such errors are reported.
NoBuilderInferenceWithoutAnnotationRestriction(sinceVersion = null, kind = OTHER, defaultState = State.DISABLED),
// Experimental features
diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt
index fecceb2..31fc34a 100644
--- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt
+++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt
@@ -44,8 +44,8 @@
System.setProperty("java.awt.headless", "true")
generateTestGroupSuite(args) {
testGroup("compiler/incremental-compilation-impl/test", "jps/jps-plugin/testData") {
- fun incrementalJvmTestData(targetBackend: TargetBackend): TestGroup.TestClass.() -> Unit = {
- model("incremental/pureKotlin", extension = null, recursive = false, targetBackend = targetBackend)
+ fun incrementalJvmTestData(targetBackend: TargetBackend, excludePattern: String? = null): TestGroup.TestClass.() -> Unit = {
+ model("incremental/pureKotlin", extension = null, recursive = false, targetBackend = targetBackend, excludedPattern = excludePattern)
model("incremental/classHierarchyAffected", extension = null, recursive = false, targetBackend = targetBackend)
model("incremental/inlineFunCallSite", extension = null, excludeParentDirs = true, targetBackend = targetBackend)
model("incremental/withJava", extension = null, excludeParentDirs = true, targetBackend = targetBackend)
@@ -53,9 +53,9 @@
}
testClass<AbstractIncrementalJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
testClass<AbstractIncrementalJvmOldBackendCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM))
- testClass<AbstractIncrementalFirJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
- testClass<AbstractIncrementalFirICLightTreeJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
- testClass<AbstractIncrementalFirLightTreeJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
+ testClass<AbstractIncrementalFirJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR, excludePattern = "^.*Expect.*"))
+ testClass<AbstractIncrementalFirICLightTreeJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR, excludePattern = "^.*Expect.*"))
+ testClass<AbstractIncrementalFirLightTreeJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR, excludePattern = "^.*Expect.*"))
testClass<AbstractIncrementalJsCompilerRunnerTest> {
model("incremental/pureKotlin", extension = null, recursive = false)
diff --git a/gradle.properties b/gradle.properties
index 550cd54..83e36c3 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -19,7 +19,7 @@
#maven.repository.mirror=http://repository.jetbrains.com/remote-repos/
#bootstrap.kotlin.repo=https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap
#bootstrap.kotlin.version=1.1.50-dev-1451
-bootstrap.kotlin.default.version=1.7.20-dev-2726
+bootstrap.kotlin.default.version=1.7.21
kotlin.build.publishing.attempts=20
#signingRequired=true
diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
index 55f68956..30b0ed1 100644
--- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
+++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
@@ -62,6 +62,7 @@
import java.io.File
import java.io.PrintStream
import java.util.*
+import kotlin.collections.ArrayList
import kotlin.reflect.jvm.javaField
abstract class AbstractIncrementalJpsTest(
@@ -532,7 +533,7 @@
}
override fun chunkBuildStarted(context: CompileContext, chunk: ModuleChunk) {
- logDirtyFiles(markedDirtyBeforeRound) // files can be marked as dirty during build start (KotlinCompileContext initialization)
+ logDirtyFiles(markedDirtyBeforeRound, "ChunkBuildStarted") // files can be marked as dirty during build start (KotlinCompileContext initialization)
if (!chunk.isDummy(context) && context.projectDescriptor.project.modules.size > 1) {
logLine("Building ${chunk.modules.sortedBy { it.name }.joinToString { it.name }}")
@@ -540,7 +541,11 @@
}
override fun afterChunkBuildStarted(context: CompileContext, chunk: ModuleChunk) {
- logDirtyFiles(markedDirtyBeforeRound)
+ logDirtyFiles(markedDirtyBeforeRound, "After chunkBuildStarted")
+ }
+
+ override fun markedAsComplementaryFiles(files: Collection<File>) {
+ logDirtyFiles(ArrayList(files), "Complementary files")
}
override fun addCustomMessage(message: String) {
@@ -552,15 +557,15 @@
logLine(it)
}
customMessages.clear()
- logDirtyFiles(markedDirtyAfterRound)
+ logDirtyFiles(markedDirtyAfterRound, "After build round")
logLine("Exit code: $exitCode")
logLine("------------------------------------------")
}
- private fun logDirtyFiles(files: MutableList<File>) {
+ private fun logDirtyFiles(files: MutableList<File>, phase: String) {
if (files.isEmpty()) return
- logLine("Marked as dirty by Kotlin:")
+ logLine("$phase. Marked as dirty by Kotlin:")
files.apply {
map { FileUtil.toSystemIndependentName(it.path) }
.sorted()
diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java
index 18f1a0a..e8bfb97 100644
--- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java
+++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJvmJpsTestGenerated.java
@@ -1266,6 +1266,11 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/");
}
+ @TestMetadata("sealedClassesAddIndirectInheritor")
+ public void testSealedClassesAddIndirectInheritor() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/");
+ }
+
@TestMetadata("sealedClassesAddInheritor")
public void testSealedClassesAddInheritor() throws Exception {
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/");
@@ -1281,9 +1286,14 @@
runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/");
}
- @TestMetadata("sealedClassesUseSwitch")
- public void testSealedClassesUseSwitch() throws Exception {
- runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/");
+ @TestMetadata("sealedClassesWhenExpression")
+ public void testSealedClassesWhenExpression() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/");
+ }
+
+ @TestMetadata("sealedClassesWithExpectActual")
+ public void testSealedClassesWithExpectActual() throws Exception {
+ runTest("jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/");
}
@TestMetadata("secondaryConstructorInlined")
diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt
index 3feb184..2660850 100644
--- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt
+++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt
@@ -908,6 +908,7 @@
}
override fun afterChunkBuildStarted(context: CompileContext, chunk: ModuleChunk) {}
+ override fun markedAsComplementaryFiles(files: Collection<File>) {}
override fun invalidOrUnusedCache(
chunk: KotlinChunk?,
target: KotlinModuleBuildTarget<*>?,
diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt
index 206d77d..ded9acd 100644
--- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt
+++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt
@@ -52,6 +52,7 @@
import org.jetbrains.kotlin.utils.PathUtil
import java.io.File
import java.util.*
+import kotlin.collections.ArrayList
import kotlin.collections.HashSet
import kotlin.system.measureTimeMillis
@@ -595,7 +596,7 @@
val targetDirtyFiles = dirtyFilesHolder.byTarget[jpsTarget]
if (cache != null && targetDirtyFiles != null) {
val complementaryFiles = cache.getComplementaryFilesRecursive(targetDirtyFiles.dirty.keys + targetDirtyFiles.removed)
-
+ context.testingContext?.buildLogger?.markedAsComplementaryFiles(ArrayList(complementaryFiles))
fsOperations.markFilesForCurrentRound(jpsTarget, complementaryFiles)
cache.markDirty(targetDirtyFiles.dirty.keys + targetDirtyFiles.removed)
diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/TestingBuildLogger.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/TestingBuildLogger.kt
index 9beec30..4016110 100644
--- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/TestingBuildLogger.kt
+++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/TestingBuildLogger.kt
@@ -29,6 +29,7 @@
fun invalidOrUnusedCache(chunk: KotlinChunk?, target: KotlinModuleBuildTarget<*>?, attributesDiff: CacheAttributesDiff<*>) = Unit
fun chunkBuildStarted(context: CompileContext, chunk: org.jetbrains.jps.ModuleChunk) = Unit
fun afterChunkBuildStarted(context: CompileContext, chunk: org.jetbrains.jps.ModuleChunk) = Unit
+ fun markedAsComplementaryFiles(files: Collection<File>) = Unit
fun compilingFiles(files: Collection<File>, allRemovedFilesFiles: Collection<File>) = Unit
fun addCustomMessage(message: String) = Unit
fun buildFinished(exitCode: ModuleLevelBuilder.ExitCode) = Unit
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/build.log
index d02fa1e..b32f770 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/build.log
@@ -2,7 +2,7 @@
Building module1
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/A.kt
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
@@ -15,7 +15,7 @@
------------------------------------------
Building module2
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module2' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/B.kt
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
@@ -28,7 +28,7 @@
------------------------------------------
Building module3
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module3' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module3/src/C.kt
Cleaning output files:
out/production/module3/META-INF/module3.kotlin_module
@@ -41,7 +41,7 @@
------------------------------------------
Building module4
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module4/src/D.kt
Cleaning output files:
out/production/module4/D/D.class
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/data-container-version-build.log
index 7090b81..af4bcba 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/exportedModule/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/A.kt
module2/src/B.kt
module3/src/C.kt
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log
index cb094cc..c0788ed 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/build.log
@@ -5,7 +5,7 @@
------------------------------------------
Building module4
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module4/src/d.kt
Cleaning output files:
out/production/module4/META-INF/module4.kotlin_module
@@ -18,7 +18,7 @@
------------------------------------------
Building module1
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
@@ -32,7 +32,7 @@
------------------------------------------
Building module2
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module2' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/b.kt
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
@@ -45,7 +45,7 @@
------------------------------------------
Building module3
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module3' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module3/src/c.kt
Cleaning output files:
out/production/module3/META-INF/module3.kotlin_module
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/data-container-version-build.log
index ed687a7..fef6001 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module1Modified/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
module2/src/b.kt
module3/src/c.kt
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log
index ab0f369..3ee7a5b 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/build.log
@@ -2,7 +2,7 @@
Building module1
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
@@ -16,7 +16,7 @@
------------------------------------------
Building module2
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module2' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/b.kt
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/data-container-version-build.log
index 06ec947..2f44936 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/module2Modified/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
module2/src/b.kt
Building module1
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log
index 91b9331..ef02751 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/build.log
@@ -2,7 +2,7 @@
Building module1
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/A.kt
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
@@ -15,7 +15,7 @@
------------------------------------------
Building module2
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module2' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/B.kt
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/data-container-version-build.log
index 4cc059a..42104b2 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithConstantModified/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/A.kt
module2/src/B.kt
Building module1
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log
index 782a86c..fb4166f 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/build.log
@@ -2,7 +2,7 @@
Building module1
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/A.kt
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
@@ -16,7 +16,7 @@
------------------------------------------
Building module2
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module2' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/B.kt
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/data-container-version-build.log
index 7f894f1..99bdf1e 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/moduleWithInlineModified/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/A.kt
module2/src/B.kt
Building module1
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log
index e20f957..5cbb2be 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
src/other.kt
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/data-container-version-build.log
index 74e2feb..111ad0a 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedFile/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
src/other.kt
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/build.log
index 5c83283..7f98df8 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
src/other.kt
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/data-container-version-build.log
index 53226e3..bb8773e 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/touchedOnlyJavaFile/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
src/other.kt
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log
index f8e9946..2893ee2 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
Cleaning output files:
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/data-container-version-build.log
index 62e214f..fce3457 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/untouchedFiles/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
Cleaning output files:
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/build.log
index 867b055..5aa5907 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/build.log
@@ -5,7 +5,7 @@
------------------------------------------
Building module4
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module4' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module4/src/d.kt
Cleaning output files:
out/production/module4/META-INF/module4.kotlin_module
@@ -18,7 +18,7 @@
------------------------------------------
Building module1
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module1' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
module1/src/f.kt
Cleaning output files:
@@ -53,7 +53,7 @@
------------------------------------------
Building module2
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module2' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/b.kt
Cleaning output files:
out/production/module2/META-INF/module2.kotlin_module
@@ -66,7 +66,7 @@
------------------------------------------
Building module3
Local cache for KotlinChunk<KotlinJvmModuleBuildTarget>(Module 'module3' production) are INVALID
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module3/src/c.kt
Cleaning output files:
out/production/module3/META-INF/module3.kotlin_module
diff --git a/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/data-container-version-build.log b/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/data-container-version-build.log
index 1ca540d..d3574a1 100644
--- a/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/data-container-version-build.log
+++ b/jps/jps-plugin/testData/incremental/cacheVersionChanged/withError/data-container-version-build.log
@@ -1,7 +1,7 @@
================ Step #1 add file with compilation error to module1 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
module1/src/f.kt
module2/src/b.kt
diff --git a/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOn/build.log b/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOn/build.log
index f02b9c5..ac6b379 100644
--- a/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOn/build.log
+++ b/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOn/build.log
@@ -36,7 +36,7 @@
================ Step #2 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/z.kt
module2/src/a.kt
module2/src/b.kt
@@ -101,7 +101,7 @@
Compiling files:
module2/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOnJavaChanged/build.log b/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOnJavaChanged/build.log
index 046b885..6367912 100644
--- a/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOnJavaChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/changeIncrementalOption/incrementalOffOnJavaChanged/build.log
@@ -17,7 +17,7 @@
================ Step #2 =================
Lookups cache are INVALID
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
module2/src/c.kt
module3/src/d.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationFlagRemoved/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationFlagRemoved/build.log
index b70458d..f4fd280 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationFlagRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationFlagRemoved/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/Ann1.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/UseAnn1Class.kt
src/useAnn1Fun.kt
src/useAnn1Val.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationListChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationListChanged/build.log
index ab20a6a..9904e04 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationListChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/annotationListChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
@@ -62,7 +62,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/bridgeGenerated/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/bridgeGenerated/build.log
index 8bed89d..819e20f 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/bridgeGenerated/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/bridgeGenerated/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/AChild.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameFinal/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameFinal/build.log
index 885ef88..2cf96e9 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameFinal/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameFinal/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameInterface/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameInterface/build.log
index 302867e..3dcaacf 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameInterface/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameInterface/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecamePrivate/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecamePrivate/build.log
index 0ce14b0..c651af6 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecamePrivate/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecamePrivate/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classMovedIntoOtherClass/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classMovedIntoOtherClass/build.log
index fce0dad..0b0fcc0 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classMovedIntoOtherClass/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classMovedIntoOtherClass/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
src/B.kt
src/C.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemoved/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemoved/build.log
index 924010e..69ad0a4 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemoved/build.log
@@ -4,7 +4,7 @@
out/production/module/META-INF/module.kotlin_module
out/production/module/foo/A.class
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/B.kt
src/C.kt
src/createA.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log
index 0b22828..a81a6d8 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemovedAndRestored/build.log
@@ -4,7 +4,7 @@
out/production/module/META-INF/module.kotlin_module
out/production/module/foo/A.class
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/B.kt
src/createA.kt
src/createB.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectInheritedMemberChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectInheritedMemberChanged/build.log
index 880e216..f86aeef 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectInheritedMemberChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectInheritedMemberChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/A.kt
src/companionExtension.kt
src/companionReferenceExplicit.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectMemberChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectMemberChanged/build.log
index db1bb1a..3e63373 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectMemberChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectMemberChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/companionExtension.kt
src/companionReferenceExplicit.kt
src/companionReferenceImplicit.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/build.log
index 6ac7ec0..f1ad4e0 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
src/companionExtension.kt
src/companionReferenceExplicit.kt
@@ -29,7 +29,7 @@
src/companionExtension.kt
src/companionReferenceExplicit.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/companionReferenceImplicit.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectToSimpleObject/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectToSimpleObject/build.log
index 7f1637a..da893e5 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectToSimpleObject/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectToSimpleObject/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/companionExtension.kt
src/companionReferenceExplicit.kt
src/companionReferenceImplicit.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/constructorVisibilityChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/constructorVisibilityChanged/build.log
index a58d772..8767e4b 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/constructorVisibilityChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/constructorVisibilityChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/createA.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log
index 9b457f3..19ba525 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/Enum.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/getRandomEnumEntry.kt
src/use.kt
src/useEnumImplicitly.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log
index 625f716..c6af34a 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumEntryRemoved/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/Enum.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/getRandomEnumEntry.kt
src/use.kt
src/useEnumImplicitly.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumMemberChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumMemberChanged/build.log
index de046be..2129e5b 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumMemberChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/enumMemberChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/Enum.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useBecameNullable.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInDifferentClassesChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInDifferentClassesChanged/build.log
index 0f6b6b5..c474625 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInDifferentClassesChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInDifferentClassesChanged/build.log
@@ -10,7 +10,7 @@
src/AParent.kt
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/importA.kt
src/importAChild.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log
index 354e1d4a..10b35c3 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/flagsAndMemberInSameClassChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
src/getA.kt
src/getB.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/implcitUpcast/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/implcitUpcast/build.log
index 96b6b83..0a6b34a 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/implcitUpcast/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/implcitUpcast/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/C.kt
src/callUseAWithB.kt
src/callUseAWithC.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeArgumentChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeArgumentChanged/build.log
index 6f82612..a961bc4 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeArgumentChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeArgumentChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/C.kt
src/getListOfB.kt
src/getListOfC.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeChanged/build.log
index 5db82eb..a83b19f 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/inferredTypeChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/C.kt
src/getB.kt
src/getBorC.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/lambdaParameterAffected/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/lambdaParameterAffected/build.log
index c9d58c7..824a9ab 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/lambdaParameterAffected/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/lambdaParameterAffected/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/consumeBExtLambda.kt
src/consumeBLambda.kt
src/useConsumeBExtLambda.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAdded/build.log
index 42d665f..ca47384 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAnnotationAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAnnotationAdded/build.log
index 42d665f..ca47384 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAnnotationAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodAnnotationAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodNullabilityChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodNullabilityChanged/build.log
index 09190cc..63dec95a 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodNullabilityChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodNullabilityChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodParameterWithDefaultValueAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodParameterWithDefaultValueAdded/build.log
index 42d665f..ca47384 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodParameterWithDefaultValueAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodParameterWithDefaultValueAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodRemoved/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodRemoved/build.log
index 98d534a..9e00f5a 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/methodRemoved/build.log
@@ -8,7 +8,7 @@
src/A.kt
src/utils.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideExplicit/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideExplicit/build.log
index 2d9097f7..b406a6e 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideExplicit/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideExplicit/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideImplicit/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideImplicit/build.log
index 6c6feca..f212374 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideImplicit/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/overrideImplicit/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/BA.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/propertyNullabilityChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/propertyNullabilityChanged/build.log
index 24ab5d1..9ed7cdb 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/propertyNullabilityChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/propertyNullabilityChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassImplAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassImplAdded/build.log
index 9595fe1..96fb1e4 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassImplAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassImplAdded/build.log
@@ -9,7 +9,7 @@
Compiling files:
src/Base.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/use.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassIndirectImplAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassIndirectImplAdded/build.log
index 81586cc..84ed09e 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassIndirectImplAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassIndirectImplAdded/build.log
@@ -9,7 +9,7 @@
Compiling files:
src/Base.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/use.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassNestedImplAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassNestedImplAdded/build.log
index 251ff31..037ce16 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassNestedImplAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/sealedClassNestedImplAdded/build.log
@@ -9,7 +9,7 @@
Compiling files:
src/Base.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/use.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/build.log
index e6347e4..9bcb313 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/build.log
@@ -24,7 +24,7 @@
src/A.kt
src/createAFromString.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/createAFromInt.kt
src/useA.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/fir-ic-build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/fir-ic-build.log
index 87cfda8c..f2a4dad 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/fir-ic-build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/fir-ic-build.log
@@ -24,7 +24,6 @@
Compiling files:
src/A.kt
src/AChild.kt
- src/AConstructorFunction.kt
src/createAFromInt.kt
src/createAFromString.kt
src/useA.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/starProjectionUpperBoundChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/starProjectionUpperBoundChanged/build.log
index 15d6c05..485cf85 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/starProjectionUpperBoundChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/starProjectionUpperBoundChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AStarDeclaration.kt
src/CallGetAStar.kt
src/getAStar.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/supertypesListChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/supertypesListChanged/build.log
index 247b87b..0809861 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/supertypesListChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/supertypesListChanged/build.log
@@ -8,7 +8,7 @@
src/A.kt
src/AParent.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
@@ -62,7 +62,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/typeParameterListChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/typeParameterListChanged/build.log
index 4779b93..ac196c0 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/typeParameterListChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/typeParameterListChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/AGrandChild.kt
src/ATypeParameter.kt
diff --git a/jps/jps-plugin/testData/incremental/classHierarchyAffected/varianceChanged/build.log b/jps/jps-plugin/testData/incremental/classHierarchyAffected/varianceChanged/build.log
index 6cc3c6f..ee581a7 100644
--- a/jps/jps-plugin/testData/incremental/classHierarchyAffected/varianceChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/classHierarchyAffected/varianceChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/D.kt
src/useA.kt
src/useD.kt
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/classProperty/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/classProperty/build.log
index 70b880e..b8907a5 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/classProperty/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/classProperty/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/companionObjectProperty/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/companionObjectProperty/build.log
index ac49f40..8e4e51e 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/companionObjectProperty/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/companionObjectProperty/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/coroutine/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/coroutine/build.log
index bc387a97..6ee5042 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/coroutine/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/coroutine/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/function/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/function/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/function/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/function/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/getter/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/getter/build.log
index 3aee887..ef833dc 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/getter/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/getter/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
src/topLevelUsage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/lambda/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/lambda/build.log
index 83eeb57..6603a3d 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/lambda/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/lambda/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/localFun/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/localFun/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/localFun/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/localFun/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/method/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/method/build.log
index 70b880e..b8907a5 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/method/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/method/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/parameterDefaultValue/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/parameterDefaultValue/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/parameterDefaultValue/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/parameterDefaultValue/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/primaryConstructorParameterDefaultValue/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/primaryConstructorParameterDefaultValue/build.log
index 70b880e..b8907a5 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/primaryConstructorParameterDefaultValue/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/primaryConstructorParameterDefaultValue/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/superCall/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/superCall/build.log
index 70b880e..b8907a5 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/superCall/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/superCall/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/thisCall/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/thisCall/build.log
index 70b880e..b8907a5 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/thisCall/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/thisCall/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelObjectProperty/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelObjectProperty/build.log
index 70b880e..b8907a5 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelObjectProperty/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelObjectProperty/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelProperty/build.log b/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelProperty/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelProperty/build.log
+++ b/jps/jps-plugin/testData/incremental/inlineFunCallSite/topLevelProperty/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/constant/build.log b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/constant/build.log
index f7eb1e8..9953aba 100644
--- a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/constant/build.log
+++ b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/constant/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/constant.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/inlineFunctionWithUsage/build.log b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/inlineFunctionWithUsage/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/lazyKotlinCaches/inlineFunctionWithUsage/build.log
+++ b/jps/jps-plugin/testData/incremental/lazyKotlinCaches/inlineFunctionWithUsage/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/build.log
index 7836e2f..939425a 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
module2/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/B.kt
module2/src/createA.kt
module2/src/createB.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/js-jps-build.log
index 3df78bc..804f985 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/classAdded/js-jps-build.log
@@ -7,7 +7,7 @@
Compiling files:
module2/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/B.kt
module2/src/createA.kt
module2/src/createB.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/build.log
index f062010..e704c12 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/build.log
@@ -8,7 +8,7 @@
out/production/module2/foo/A.class
End of files
Building module2
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/B.kt
module2/src/createA.kt
module2/src/createB.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/js-jps-build.log
index 70c139a..3ca4406 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/classRemoved/js-jps-build.log
@@ -4,7 +4,7 @@
Exit code: NOTHING_DONE
------------------------------------------
Building module2
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/B.kt
module2/src/createA.kt
module2/src/createB.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/build.log
index 5c1d1a5..b00d9ff 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/js-jps-build.log
index 4a577ac..2aeed36 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/constantValueChanged/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/build.log
index b10de0a..749859d 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/build.log
@@ -4,7 +4,7 @@
Compiling files:
module1/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
module2/src/useClassB.kt
module2/src/useFunB.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/js-jps-build.log
index 52437a4d..f5a9419 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/copyFileToAnotherModule/js-jps-build.log
@@ -4,7 +4,7 @@
Compiling files:
module1/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
module2/src/useClassB.kt
module2/src/useFunB.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/build.log
index eeeb3ad..a367b8b 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/createADefault.kt
module2/src/createANonDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/js-jps-build.log
index e2af6fd..df58489 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultArgumentInConstructorRemoved/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/createADefault.kt
module2/src/createANonDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/build.log
index 3641d30..a76a10c 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/js-jps-build.log
index 96900e7..f29645f 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAdded/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/build.log
index 341318a..8bfbb29 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/js-jps-build.log
index 96900e7..f29645f 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterAddedForTopLevelFun/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/build.log
index 3641d30..a76a10c 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/js-jps-build.log
index 96900e7..f29645f 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemoved/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/build.log
index 341318a..8bfbb29 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/js-jps-build.log
index 96900e7..f29645f 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultParameterRemovedForTopLevelFun/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/build.log
index 73dd59f..01cf8b8 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/createADefault.kt
module2/src/createANonDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/js-jps-build.log
index e2fa2d0..fa2dc82 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/defaultValueInConstructorRemoved/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/createADefault.kt
module2/src/createANonDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/build.log
index 6f49ab1..b45f085 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module3/src/AGrandChild.kt
module3/src/importAGrandChild.kt
@@ -41,7 +41,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module3/src/AGrandChild.kt
module3/src/importAGrandChild.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/js-jps-build.log
index 8bdfe13..035801b 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/exportedDependency/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module3/src/AGrandChild.kt
module3/src/importAGrandChild.kt
@@ -44,7 +44,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module3/src/AGrandChild.kt
module3/src/importAGrandChild.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/build.log
index 676df62..a7d1e36 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/foo.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/useFoo.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/js-jps-build.log
index af9ede2..51645bf 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/functionFromDifferentPackageChanged/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/foo.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/useFoo.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/build.log
index 55bc9b6..dc42992 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/js-jps-build.log
index d8abf06..2c8fb84 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionInlined/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/build.log
index ef3b395..080cc7a 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/inlineF.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usageF.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -35,7 +35,7 @@
Compiling files:
module1/src/inlineG.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usageG.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/js-jps-build.log
index b847314..27f2ade 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/inlineFunctionTwoPackageParts/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/inlineF.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usageF.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -38,7 +38,7 @@
Compiling files:
module1/src/inlineG.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/usageG.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/build.log
index 45d7dfb..91948733 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/build.log
@@ -4,7 +4,7 @@
Compiling files:
module1/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/useClassB.kt
module2/src/useFunB.kt
Exit code: ADDITIONAL_PASS_REQUIRED
@@ -17,7 +17,7 @@
out/production/module2/b/BKt.class
End of files
Building module2
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/useClassB.kt
Cleaning output files:
out/production/module2/usage/UseClassBKt.class
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/js-jps-build.log
index f9e2f1d..aa59d60 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/moveFileToAnotherModule/js-jps-build.log
@@ -4,7 +4,7 @@
Compiling files:
module1/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/useClassB.kt
module2/src/useFunB.kt
Exit code: ADDITIONAL_PASS_REQUIRED
@@ -12,7 +12,7 @@
Exit code: NOTHING_DONE
------------------------------------------
Building module2
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module2/src/useClassB.kt
Cleaning output files:
out/production/module2/module2.js
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simple/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simple/build.log
index fe9147a..bf2d6f7 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simple/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simple/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module2/src/importA.kt
module3/src/importAChild.kt
@@ -42,7 +42,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module2/src/importA.kt
module3/src/importAChild.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simple/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simple/js-jps-build.log
index 0fbb2d9..0765876 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simple/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simple/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module2/src/importA.kt
module3/src/importAChild.kt
@@ -45,7 +45,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/AChild.kt
module2/src/importA.kt
module3/src/importAChild.kt
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/build.log
index 6ddaba7..4da3427 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/js-jps-build.log
index 2301a16..284f592 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependency/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/build.log
index 21e1a57..2e5555a 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/build.log
@@ -11,7 +11,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/js-jps-build.log
index 654c739..b6574c8 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal1/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/build.log
index c2879e0..8ca8f24 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Building module1
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
Cleaning output files:
out/production/module1/META-INF/module1.kotlin_module
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/js-jps-build.log
index 52ab460..23af5c3 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/simpleDependencyErrorOnAccessToInternal2/js-jps-build.log
@@ -1,7 +1,7 @@
================ Step #1 =================
Building module1
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
module1/src/a.kt
Cleaning output files:
out/production/module1/module1.js
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/build.log
index 4efd215..2880a9d 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/js-jps-build.log
index 13f1146..1f3b690 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveDependency/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/build.log
index a164a0f..8005361 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -22,7 +22,7 @@
Compiling files:
module2/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module3/src/c.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/js-jps-build.log
index e3aee07..9d04979 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/transitiveInlining/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -24,7 +24,7 @@
Compiling files:
module2/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module3/src/c.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/build.log b/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/build.log
index e15db13..80d0b5f 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
module3/src/c.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/js-jps-build.log b/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/js-jps-build.log
index 89c5bf4..31895a3 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/js-jps-build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/common/twoDependants/js-jps-build.log
@@ -9,7 +9,7 @@
Compiling files:
module1/src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module2/src/b.kt
module3/src/c.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/jvm/circular/build.log b/jps/jps-plugin/testData/incremental/multiModule/jvm/circular/build.log
index 2174506..0316a69 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/jvm/circular/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/jvm/circular/build.log
@@ -8,7 +8,7 @@
Compiling files:
module1/src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module1/src/D.kt
module2/src/B.kt
module3/src/C.kt
@@ -54,7 +54,7 @@
Compiling files:
module3/src/C.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module4/src/E.kt
module5/src/F.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/multiModule/jvm/circularDependencyClasses/build.log b/jps/jps-plugin/testData/incremental/multiModule/jvm/circularDependencyClasses/build.log
index c779a39..db72cae 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/jvm/circularDependencyClasses/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/jvm/circularDependencyClasses/build.log
@@ -9,7 +9,7 @@
Compiling files:
module2/src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
module1/src/a.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log b/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log
index 104fae8..5a5c9d5 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log
@@ -7,6 +7,8 @@
out/production/pJs/pJs.meta.js
out/production/pJs/pJs/root-package.kjsm
End of files
+Complementary files. Marked as dirty by Kotlin:
+ pJs/src/fJs.kt
Compiling files:
c/src/f.kt
pJs/src/fJs.kt
@@ -31,6 +33,8 @@
Cleaning output files:
out/production/pJvm/META-INF/pJvm.kotlin_module
End of files
+Complementary files. Marked as dirty by Kotlin:
+ pJvm/src/fJvm.kt
Cleaning output files:
out/production/pJvm/FJvmKt.class
End of files
diff --git a/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log b/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log
index 75f18a0..95b7cff 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log
@@ -7,6 +7,9 @@
out/production/pJs/pJs.meta.js
out/production/pJs/pJs/root-package.kjsm
End of files
+Complementary files. Marked as dirty by Kotlin:
+ c/src/g.kt
+ pJs/src/fg.kt
Compiling files:
c/src/f.kt
c/src/g.kt
@@ -22,6 +25,8 @@
Building c
Building pJs
+Complementary files. Marked as dirty by Kotlin:
+ c/src/g.kt
Compiling files:
c/src/f.kt
c/src/g.kt
@@ -29,12 +34,15 @@
End of files
Exit code: OK
------------------------------------------
-Marked as dirty by Kotlin:
+ChunkBuildStarted. Marked as dirty by Kotlin:
c/src/g.kt
Building pJvm
Cleaning output files:
out/production/pJvm/META-INF/pJvm.kotlin_module
End of files
+Complementary files. Marked as dirty by Kotlin:
+ c/src/g.kt
+ pJvm/src/fg.kt
Cleaning output files:
out/production/pJvm/FgKt.class
End of files
diff --git a/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/complementaryFiles/build.log b/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/complementaryFiles/build.log
index 3a90f366..5316c8b 100644
--- a/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/complementaryFiles/build.log
+++ b/jps/jps-plugin/testData/incremental/multiModule/multiplatform/custom/complementaryFiles/build.log
@@ -6,6 +6,8 @@
out/production/pJvm/FJvmKt.class
out/production/pJvm/META-INF/pJvm.kotlin_module
End of files
+Complementary files. Marked as dirty by Kotlin:
+ c/src/f.kt
Cleaning output files:
out/production/pJvm/FKt.class
End of files
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/addClass/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/addClass/build.log
index 9d2a2de..b03554c 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/addClass/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/addClass/build.log
@@ -3,7 +3,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/funA.kt
src/useA.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log
index 3d8ecd1..d21fe55 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/addFileWithFunctionOverload/build.log
@@ -3,7 +3,7 @@
Compiling files:
src/foo2.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/foo1.kt
src/use.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/addMemberTypeAlias/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/addMemberTypeAlias/build.log
index 2b216fb..feefb42 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/addMemberTypeAlias/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/addMemberTypeAlias/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/a1Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/addTopLevelTypeAlias/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/addTopLevelTypeAlias/build.log
index 4f5133e..034d7c3 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/addTopLevelTypeAlias/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/addTopLevelTypeAlias/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/a1Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/allConstants/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/allConstants/build.log
index 4a46633..665accc 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/allConstants/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/allConstants/build.log
@@ -19,7 +19,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/changeTypeImplicitlyWithCircularDependency/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/changeTypeImplicitlyWithCircularDependency/build.log
index a958ab5..e7baa4a 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/changeTypeImplicitlyWithCircularDependency/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/changeTypeImplicitlyWithCircularDependency/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/usage1.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage2.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -18,7 +18,7 @@
Compiling files:
src/usage2.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage1.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/classInlineFunctionChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/classInlineFunctionChanged/build.log
index 0c97baf..66f8881 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/classInlineFunctionChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/classInlineFunctionChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/classObjectConstantChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/classObjectConstantChanged/build.log
index 0413c6c..7c73463 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/classObjectConstantChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/classObjectConstantChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/classSignatureChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/classSignatureChanged/build.log
index 63944eb..e59b9b9 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/classSignatureChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/classSignatureChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/class.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/companionConstantChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/companionConstantChanged/build.log
index 9eb0e62..0b4416d 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/companionConstantChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/companionConstantChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
src/C.kt
src/companionUsage.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/compilationErrorThenFixedWithPhantomPart3/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/compilationErrorThenFixedWithPhantomPart3/build.log
index 0833087..57c6993 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/compilationErrorThenFixedWithPhantomPart3/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/compilationErrorThenFixedWithPhantomPart3/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/other.kt
src/usage.kt
Cleaning output files:
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/constantRemoved/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/constantRemoved/build.log
index 7bee545..a26a34b 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/constantRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/constantRemoved/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/constantValueChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/constantValueChanged/build.log
index 9a77b78..c44889d 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/constantValueChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/constantValueChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorAdded/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorAdded/build.log
index 6120b0c..2b639c7 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
src/createA.kt
src/useA.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorRemoved/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorRemoved/build.log
index 6b9705b..e2d7eff 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/defaultArgumentInConstructorRemoved/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
src/createADefault.kt
src/createANonDefault.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueAdded/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueAdded/build.log
index 9c5c62e..23c7f99 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useDefault.kt
src/useNonDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueInConstructorRemoved/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueInConstructorRemoved/build.log
index dbd011c..efae3a3 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueInConstructorRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueInConstructorRemoved/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
src/createADefault.kt
src/createANonDefault.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved1/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved1/build.log
index a2c286b..2f24af9 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved1/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved1/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useDefault.kt
src/useNonDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved2/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved2/build.log
index 63fae62..b3fd718 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved2/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/defaultValueRemoved2/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useDefault1.kt
src/useDefault2.kt
src/useNonDefault.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineExtensionAccessor/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineExtensionAccessor/build.log
index 2de0bdb..537f2bc 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineExtensionAccessor/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineExtensionAccessor/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inlineGet.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/UsageVal.kt
src/UsageVar.kt
Exit code: ADDITIONAL_PASS_REQUIRED
@@ -33,7 +33,7 @@
Compiling files:
src/inlineSet.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/UsageVar.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineMethodAccessor/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineMethodAccessor/build.log
index 4c198b3..ee15496 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineMethodAccessor/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/delegatedPropertyInlineMethodAccessor/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/UsageVal.kt
src/UsageVar.kt
Exit code: ADDITIONAL_PASS_REQUIRED
@@ -33,7 +33,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/UsageVar.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/fileWithConstantRemoved/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/fileWithConstantRemoved/build.log
index fbb3cee..d1d90dc 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/fileWithConstantRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/fileWithConstantRemoved/build.log
@@ -6,7 +6,7 @@
End of files
Compiling files:
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/fileWithInlineFunctionRemoved/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/fileWithInlineFunctionRemoved/build.log
index 98e6b08..d9f9291 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/fileWithInlineFunctionRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/fileWithInlineFunctionRemoved/build.log
@@ -6,7 +6,7 @@
End of files
Compiling files:
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/functionBecameInline/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/functionBecameInline/build.log
index 7813ba9..ecaae63 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/functionBecameInline/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/functionBecameInline/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionBecomesNonInline/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionBecomesNonInline/build.log
index cbce054..6baaeb0 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionBecomesNonInline/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionBecomesNonInline/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useInline.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionsCircularDependency/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionsCircularDependency/build.log
index 1a5df78..581618c 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionsCircularDependency/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlineFunctionsCircularDependency/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -18,7 +18,7 @@
Compiling files:
src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/a.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlineLinesChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlineLinesChanged/build.log
index c1da0ac..23d531e 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlineLinesChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlineLinesChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useG.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyInClass/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyInClass/build.log
index d2cee84..b88aa00 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyInClass/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyInClass/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useSetter.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -30,7 +30,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useGetter.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyOnTopLevel/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyOnTopLevel/build.log
index 9f1d5f3..eac89c8 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyOnTopLevel/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlinePropertyOnTopLevel/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useSetter.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -30,7 +30,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useGetter.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/build.log
index cbce054..6baaeb0 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useInline.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/build.log
index d5bbb4e..d0487be 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usesG.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/moveFileWithChangingPackage/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/moveFileWithChangingPackage/build.log
index 64efa26..a5caee7 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/moveFileWithChangingPackage/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/moveFileWithChangingPackage/build.log
@@ -5,7 +5,7 @@
out/production/module/foo/AKt.class
out/production/module/foo/Foo.class
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/useClass.kt
Cleaning output files:
out/production/module/baz/UseClassKt.class
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/objectConstantChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/objectConstantChanged/build.log
index 261ecf1..663bce5 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/objectConstantChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/objectConstantChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/packageConstantChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/packageConstantChanged/build.log
index d140a27..635e13a 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/packageConstantChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/packageConstantChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueAdded/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueAdded/build.log
index d037621..7624d3a 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueAdded/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -30,7 +30,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueRemoved/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueRemoved/build.log
index 1594b2d..6d2d15d 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueRemoved/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/parameterWithDefaultValueRemoved/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useDefault.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/build.log
index 4e6bb52..d5e43e3 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanion/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
@@ -10,7 +10,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useA.kt
src/useAbar.kt
src/useAfoo.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/build.log
index f8efb41..7d48420 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
src/getACompanion.kt
src/getACompanionShort.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeClass/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeClass/build.log
index 1c0af20..7e769aa 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeClass/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeClass/build.log
@@ -4,7 +4,7 @@
out/production/module/META-INF/module.kotlin_module
out/production/module/foo/A.class
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/funA.kt
src/useA.kt
Cleaning output files:
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeClassInDefaultPackage/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeClassInDefaultPackage/build.log
index 4686e03..9dc0f16 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeClassInDefaultPackage/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeClassInDefaultPackage/build.log
@@ -4,7 +4,7 @@
out/production/module/A.class
out/production/module/META-INF/module.kotlin_module
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/funA.kt
src/useA.kt
Cleaning output files:
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeFileWithFunctionOverload/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeFileWithFunctionOverload/build.log
index bd46dda..3bc9a1a 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeFileWithFunctionOverload/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeFileWithFunctionOverload/build.log
@@ -10,7 +10,7 @@
Compiling files:
src/use.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/foo1.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeMemberTypeAlias/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeMemberTypeAlias/build.log
index 2b216fb..feefb42 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeMemberTypeAlias/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeMemberTypeAlias/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/a1Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/removeTopLevelTypeAlias/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/removeTopLevelTypeAlias/build.log
index 4f5133e..034d7c3 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/removeTopLevelTypeAlias/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/removeTopLevelTypeAlias/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/a.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/a1Usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/renameClass/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/renameClass/build.log
index 5705976..2b1d94a 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/renameClass/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/renameClass/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/A.kt
src/funs.kt
src/useA.kt
@@ -15,7 +15,7 @@
src/funs.kt
src/useA.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useB.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/renameFileWithFunctionOverload/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/renameFileWithFunctionOverload/build.log
index e2768cb..610ff77 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/renameFileWithFunctionOverload/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/renameFileWithFunctionOverload/build.log
@@ -11,7 +11,7 @@
src/foo3.kt
src/useF.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/foo1.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/returnTypeChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/returnTypeChanged/build.log
index bd04740..3aa1054 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/returnTypeChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/returnTypeChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/fun.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/build.log
index 2b74053..2563c3a 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddImplements/build.log
@@ -7,17 +7,20 @@
Compiling files:
src/B.kt
End of files
-Marked as dirty by Kotlin:
- src/A.kt
- src/B.kt
+After build round. Marked as dirty by Kotlin:
src/Base.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
+ out/production/module/test/Base.class
+End of files
+Complementary files. Marked as dirty by Kotlin:
+ src/A.kt
+ src/B.kt
+Cleaning output files:
out/production/module/test/A.class
out/production/module/test/B.class
- out/production/module/test/Base.class
End of files
Compiling files:
src/A.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/A.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/A.kt
similarity index 100%
copy from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/A.kt
copy to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/A.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/B.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/B.kt
similarity index 100%
copy from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/B.kt
copy to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/B.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/Base.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/Base.kt
similarity index 100%
copy from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/Base.kt
copy to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/Base.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/C.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/C.kt
new file mode 100644
index 0000000..d3c40f5
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/C.kt
@@ -0,0 +1,3 @@
+package test
+
+open class C : Any()
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/C.kt.new b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/C.kt.new
new file mode 100644
index 0000000..d419193
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/C.kt.new
@@ -0,0 +1,3 @@
+package test
+
+open class C : Base
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/D.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/D.kt
new file mode 100644
index 0000000..cd964407
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/D.kt
@@ -0,0 +1,3 @@
+package test
+
+class D : C()
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/args.txt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/args.txt
similarity index 100%
copy from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/args.txt
copy to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/args.txt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/build.log
similarity index 82%
rename from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/build.log
rename to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/build.log
index d158195..e5fc782 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddIndirectInheritor/build.log
@@ -1,20 +1,29 @@
================ Step #1 =================
+Cleaning output files:
+ out/production/module/META-INF/module.kotlin_module
+ out/production/module/test/C.class
+End of files
Compiling files:
src/C.kt
End of files
-Marked as dirty by Kotlin:
- src/A.kt
- src/B.kt
+After build round. Marked as dirty by Kotlin:
src/Base.kt
- src/C.kt
+ src/D.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
+ out/production/module/test/Base.class
+ out/production/module/test/D.class
+End of files
+Complementary files. Marked as dirty by Kotlin:
+ src/A.kt
+ src/B.kt
+ src/C.kt
+Cleaning output files:
out/production/module/test/A.class
out/production/module/test/B.class
- out/production/module/test/Base.class
out/production/module/test/C.class
End of files
Compiling files:
@@ -22,16 +31,6 @@
src/B.kt
src/Base.kt
src/C.kt
-End of files
-Marked as dirty by Kotlin:
- src/D.kt
-Exit code: ADDITIONAL_PASS_REQUIRED
-------------------------------------------
-Cleaning output files:
- out/production/module/META-INF/module.kotlin_module
- out/production/module/test/D.class
-End of files
-Compiling files:
src/D.kt
End of files
Exit code: OK
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/build.log
index 59554ef..57fb956 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesAddInheritor/build.log
@@ -3,18 +3,21 @@
Compiling files:
src/C.kt
End of files
-Marked as dirty by Kotlin:
- src/A.kt
- src/B.kt
+After build round. Marked as dirty by Kotlin:
src/Base.kt
- src/C.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
+ out/production/module/test/Base.class
+End of files
+Complementary files. Marked as dirty by Kotlin:
+ src/A.kt
+ src/B.kt
+ src/C.kt
+Cleaning output files:
out/production/module/test/A.class
out/production/module/test/B.class
- out/production/module/test/Base.class
out/production/module/test/C.class
End of files
Compiling files:
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveImplements/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveImplements/build.log
index 379d4b7..c7bc1a8 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveImplements/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveImplements/build.log
@@ -4,19 +4,11 @@
out/production/module/META-INF/module.kotlin_module
out/production/module/test/B.class
End of files
-Compiling files:
- src/B.kt
-End of files
-Marked as dirty by Kotlin:
+Complementary files. Marked as dirty by Kotlin:
src/A.kt
- src/B.kt
src/Base.kt
-Exit code: ADDITIONAL_PASS_REQUIRED
-------------------------------------------
Cleaning output files:
- out/production/module/META-INF/module.kotlin_module
out/production/module/test/A.class
- out/production/module/test/B.class
out/production/module/test/Base.class
End of files
Compiling files:
@@ -24,7 +16,7 @@
src/B.kt
src/Base.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/BaseUsage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/build.log
index cb874b1..83371f9 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesRemoveInheritor/build.log
@@ -4,15 +4,10 @@
out/production/module/META-INF/module.kotlin_module
out/production/module/test/B.class
End of files
-Compiling files:
-End of files
-Marked as dirty by Kotlin:
+Complementary files. Marked as dirty by Kotlin:
src/A.kt
src/Base.kt
-Exit code: ADDITIONAL_PASS_REQUIRED
-------------------------------------------
Cleaning output files:
- out/production/module/META-INF/module.kotlin_module
out/production/module/test/A.class
out/production/module/test/Base.class
End of files
@@ -20,7 +15,7 @@
src/A.kt
src/Base.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/BaseUsage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/C.kt.new b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/C.kt.new
deleted file mode 100644
index da276aa..0000000
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/C.kt.new
+++ /dev/null
@@ -1,3 +0,0 @@
-package test
-
-interface C : Base
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/D.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/D.kt
deleted file mode 100644
index 7123765..0000000
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/D.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package test
-
-class D {
- lateinit var x: Base
-}
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/E.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/E.kt
deleted file mode 100644
index 7a1c358..0000000
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/E.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package test
-
-class E {
-}
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/A.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/A.kt
similarity index 100%
rename from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/A.kt
rename to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/A.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/B.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/B.kt
similarity index 100%
rename from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/B.kt
rename to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/B.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/Base.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Base.kt
similarity index 100%
rename from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/Base.kt
rename to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Base.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Base.kt.new b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Base.kt.new
new file mode 100644
index 0000000..f3a37f6
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Base.kt.new
@@ -0,0 +1,7 @@
+package test
+
+sealed interface Base {
+
+ fun doSmth() = "doSmth"
+
+}
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Usage.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Usage.kt
new file mode 100644
index 0000000..3ec54b9
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/Usage.kt
@@ -0,0 +1,12 @@
+package test
+
+//sealed interface Base
+
+class Usage {
+
+ fun doSmth(x: Base) =
+ when (x) {
+ is A -> "A"
+ is B -> "B"
+ }
+}
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/args.txt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/args.txt
similarity index 100%
rename from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/args.txt
rename to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/args.txt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/build.log
new file mode 100644
index 0000000..420ed9d
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWhenExpression/build.log
@@ -0,0 +1,20 @@
+================ Step #1 =================
+
+Cleaning output files:
+ out/production/module/META-INF/module.kotlin_module
+ out/production/module/test/Base.class
+End of files
+Complementary files. Marked as dirty by Kotlin:
+ src/A.kt
+ src/B.kt
+Cleaning output files:
+ out/production/module/test/A.class
+ out/production/module/test/B.class
+End of files
+Compiling files:
+ src/A.kt
+ src/B.kt
+ src/Base.kt
+End of files
+Exit code: OK
+------------------------------------------
\ No newline at end of file
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/A.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/A.kt
new file mode 100644
index 0000000..4efbb43
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/A.kt
@@ -0,0 +1,3 @@
+package test
+
+open class A: Base
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Actual.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Actual.kt
new file mode 100644
index 0000000..1fefb6d
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Actual.kt
@@ -0,0 +1,9 @@
+package test
+
+actual class ExpectClass {
+ actual fun doSmth() = ""
+}
+
+expect class ExpectClass2 {
+ fun doSmth(): String
+}
\ No newline at end of file
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Actual2.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Actual2.kt
new file mode 100644
index 0000000..46f6e89
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Actual2.kt
@@ -0,0 +1,5 @@
+package test
+
+actual class ExpectClass2 {
+ actual fun doSmth() = ""
+}
\ No newline at end of file
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/B.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/B.kt
new file mode 100644
index 0000000..e83c33f
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/B.kt
@@ -0,0 +1,9 @@
+package test
+
+class B : Base {
+
+}
+
+expect class ExpectClass {
+ fun doSmth(): String
+}
\ No newline at end of file
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/Base.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Base.kt
similarity index 100%
copy from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/Base.kt
copy to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Base.kt
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/C.kt.new b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/C.kt.new
new file mode 100644
index 0000000..3d7cf8a
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/C.kt.new
@@ -0,0 +1,3 @@
+package test
+
+class C : A()
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Unrelated.kt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Unrelated.kt
new file mode 100644
index 0000000..c0966da
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/Unrelated.kt
@@ -0,0 +1,3 @@
+package test
+
+class Unrelated {}
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/args.txt b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/args.txt
new file mode 100644
index 0000000..7d56734
--- /dev/null
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/args.txt
@@ -0,0 +1 @@
+-XXLanguage:+FreedomForSealedClasses -XXLanguage:+SealedInterfaces -Xmulti-platform
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/build.log
similarity index 69%
copy from jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/build.log
copy to jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/build.log
index d158195..ed490ff 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesUseSwitch/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sealedClassesWithExpectActual/build.log
@@ -3,36 +3,34 @@
Compiling files:
src/C.kt
End of files
-Marked as dirty by Kotlin:
- src/A.kt
- src/B.kt
+After build round. Marked as dirty by Kotlin:
src/Base.kt
- src/C.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
+ out/production/module/test/Base.class
+End of files
+Complementary files. Marked as dirty by Kotlin:
+ src/A.kt
+ src/Actual.kt
+ src/Actual2.kt
+ src/B.kt
+ src/C.kt
+Cleaning output files:
out/production/module/test/A.class
out/production/module/test/B.class
- out/production/module/test/Base.class
out/production/module/test/C.class
+ out/production/module/test/ExpectClass.class
+ out/production/module/test/ExpectClass2.class
End of files
Compiling files:
src/A.kt
+ src/Actual.kt
+ src/Actual2.kt
src/B.kt
src/Base.kt
src/C.kt
End of files
-Marked as dirty by Kotlin:
- src/D.kt
-Exit code: ADDITIONAL_PASS_REQUIRED
-------------------------------------------
-Cleaning output files:
- out/production/module/META-INF/module.kotlin_module
- out/production/module/test/D.class
-End of files
-Compiling files:
- src/D.kt
-End of files
Exit code: OK
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/sequentualAddingAndDeletingOfPropertyAndUsage/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/sequentualAddingAndDeletingOfPropertyAndUsage/build.log
index 84723af..aad58ef 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/sequentualAddingAndDeletingOfPropertyAndUsage/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/sequentualAddingAndDeletingOfPropertyAndUsage/build.log
@@ -19,7 +19,7 @@
Compiling files:
src/DataClass.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/main.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -42,7 +42,7 @@
Compiling files:
src/DataClass.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/main.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
@@ -77,7 +77,7 @@
Compiling files:
src/DataClass.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/main.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/traitClassObjectConstantChanged/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/traitClassObjectConstantChanged/build.log
index 10639a5..af94687 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/traitClassObjectConstantChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/traitClassObjectConstantChanged/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/const.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/pureKotlin/valAddCustomAccessor/build.log b/jps/jps-plugin/testData/incremental/pureKotlin/valAddCustomAccessor/build.log
index 3a6140a..3c371b4 100644
--- a/jps/jps-plugin/testData/incremental/pureKotlin/valAddCustomAccessor/build.log
+++ b/jps/jps-plugin/testData/incremental/pureKotlin/valAddCustomAccessor/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndBack/build.log b/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndBack/build.log
index 0b68928..9a224e3 100644
--- a/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndBack/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/javaToKotlinAndBack/build.log
@@ -20,7 +20,7 @@
out/production/module/Foo.class
out/production/module/META-INF/module.kotlin_module
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/usage.kt
Cleaning output files:
out/production/module/UsageKt.class
diff --git a/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/kotlinToJava/build.log b/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/kotlinToJava/build.log
index ce3183f..8b7a4b8 100644
--- a/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/kotlinToJava/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/convertBetweenJavaAndKotlin/kotlinToJava/build.log
@@ -4,7 +4,7 @@
out/production/module/META-INF/module.kotlin_module
out/production/module/TheClass.class
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/usageInKotlin.kt
Cleaning output files:
out/production/module/Usage.class
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/accessingFunctionsViaRenamedFileClass/build.log b/jps/jps-plugin/testData/incremental/withJava/other/accessingFunctionsViaRenamedFileClass/build.log
index d0f049c..e82596e 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/accessingFunctionsViaRenamedFileClass/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/accessingFunctionsViaRenamedFileClass/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/classToPackageFacade/build.log b/jps/jps-plugin/testData/incremental/withJava/other/classToPackageFacade/build.log
index f49b2b6..870d531 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/classToPackageFacade/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/classToPackageFacade/build.log
@@ -5,7 +5,7 @@
out/production/module/A.class
out/production/module/META-INF/module.kotlin_module
End of files
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/AChild.kt
src/getA.kt
src/getAChild.kt
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/defaultValueInConstructorAdded/build.log b/jps/jps-plugin/testData/incremental/withJava/other/defaultValueInConstructorAdded/build.log
index ffa764f..6478fd4 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/defaultValueInConstructorAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/defaultValueInConstructorAdded/build.log
@@ -8,7 +8,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/B.kt
src/createADefault.kt
src/createANonDefault.kt
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/inlineFunctionWithJvmNameInClass/build.log b/jps/jps-plugin/testData/incremental/withJava/other/inlineFunctionWithJvmNameInClass/build.log
index bc7a894..5fe02a5 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/inlineFunctionWithJvmNameInClass/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/inlineFunctionWithJvmNameInClass/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelFunctionWithJvmName/build.log b/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelFunctionWithJvmName/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelFunctionWithJvmName/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelFunctionWithJvmName/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelValPropertyWithJvmName/build.log b/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelValPropertyWithJvmName/build.log
index 98c5e9e..a99704b 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelValPropertyWithJvmName/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/inlineTopLevelValPropertyWithJvmName/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/inline.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/jvmNameChanged/build.log b/jps/jps-plugin/testData/incremental/withJava/other/jvmNameChanged/build.log
index 42d665f..ca47384 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/jvmNameChanged/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/jvmNameChanged/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/A.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/AChild.kt
src/useAChild.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/multifileClassAddTopLevelFunWithDefault/build.log b/jps/jps-plugin/testData/incremental/withJava/other/multifileClassAddTopLevelFunWithDefault/build.log
index 5ab0e5a..058219a 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/multifileClassAddTopLevelFunWithDefault/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/multifileClassAddTopLevelFunWithDefault/build.log
@@ -10,7 +10,7 @@
src/a.kt
src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/multifileClassFileAdded/build.log b/jps/jps-plugin/testData/incremental/withJava/other/multifileClassFileAdded/build.log
index 063de2e..e8ab492 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/multifileClassFileAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/multifileClassFileAdded/build.log
@@ -3,7 +3,7 @@
Compiling files:
src/b.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/a.kt
src/b.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/multifileDependantUsage/build.log b/jps/jps-plugin/testData/incremental/withJava/other/multifileDependantUsage/build.log
index 46f5387..a2696f4 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/multifileDependantUsage/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/multifileDependantUsage/build.log
@@ -1,6 +1,6 @@
================ Step #1 =================
-Marked as dirty by Kotlin:
+After chunkBuildStarted. Marked as dirty by Kotlin:
src/partB.kt
src/usagePartB.kt
Cleaning output files:
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/multifilePackagePartMethodAdded/build.log b/jps/jps-plugin/testData/incremental/withJava/other/multifilePackagePartMethodAdded/build.log
index 8326f06..59b0fd1 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/multifilePackagePartMethodAdded/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/multifilePackagePartMethodAdded/build.log
@@ -12,7 +12,7 @@
src/partB.kt
src/partC.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/useFooF.kt
src/useFooG.kt
Exit code: ADDITIONAL_PASS_REQUIRED
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/topLevelFunctionWithJvmName/build.log b/jps/jps-plugin/testData/incremental/withJava/other/topLevelFunctionWithJvmName/build.log
index cce51e9..21cc7b51 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/topLevelFunctionWithJvmName/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/topLevelFunctionWithJvmName/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/function.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/jps/jps-plugin/testData/incremental/withJava/other/topLevelPropertyWithJvmName/build.log b/jps/jps-plugin/testData/incremental/withJava/other/topLevelPropertyWithJvmName/build.log
index c9ee993..fa39799 100644
--- a/jps/jps-plugin/testData/incremental/withJava/other/topLevelPropertyWithJvmName/build.log
+++ b/jps/jps-plugin/testData/incremental/withJava/other/topLevelPropertyWithJvmName/build.log
@@ -7,7 +7,7 @@
Compiling files:
src/property.kt
End of files
-Marked as dirty by Kotlin:
+After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java
index 39d6949..08740b2 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java
@@ -3390,6 +3390,18 @@
}
@Test
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
+ @Test
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
index 46955dd..42f9233 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
@@ -3438,6 +3438,24 @@
}
@Test
+ @TestMetadata("kt53677.kt")
+ public void testKt53677() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53677.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
+ @Test
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
index c586bd7..175d21c 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
@@ -3036,6 +3036,21 @@
runTest("compiler/testData/codegen/box/casts/kt50577.kt");
}
+ @TestMetadata("kt53677.kt")
+ public void testKt53677() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53677.kt");
+ }
+
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt
index dbe0481..1af3cf3 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt
@@ -135,7 +135,7 @@
// TODO: When moving into proper deprecation cycle replace with WARNING.
configuration.report(
CompilerMessageSeverity.INFO,
- "`freezing` should not be enabled with the new MM. Freezing API is deprecated since 1.7.20. See https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation for details"
+ "`freezing` should not be enabled with the new MM. Freezing API is deprecated since 1.7.20. See https://kotlinlang.org/docs/native-migration-guide.html for details"
)
freezingMode
}
diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/native/concurrent/Annotations.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/native/concurrent/Annotations.kt
index fcf91d6..aa28420 100644
--- a/kotlin-native/runtime/src/main/kotlin/kotlin/native/concurrent/Annotations.kt
+++ b/kotlin-native/runtime/src/main/kotlin/kotlin/native/concurrent/Annotations.kt
@@ -29,7 +29,7 @@
* PLEASE NOTE THAT THIS ANNOTATION MAY GO AWAY IN UPCOMING RELEASES.
*
* Since 1.7.20 usage of this annotation is deprecated.
- * See https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation for details.
+ * See https://kotlinlang.org/docs/native-migration-guide.html for details.
*/
@Target(AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.BINARY)
diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/GC.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/GC.kt
index 9892442..175c04e 100644
--- a/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/GC.kt
+++ b/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/GC.kt
@@ -13,7 +13,7 @@
*
* Kotlin/Native uses tracing garbage collector (GC) that is executed periodically to collect objects
* that are not reachable from the "roots", like local and global variables.
- * See [documentation](https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md) to learn more about
+ * See [documentation](https://kotlinlang.org/docs/native-memory-manager.html) to learn more about
* Kotlin/Native memory management.
*
* This object provides a set of functions and properties that allows to tune garbage collector.
diff --git a/libraries/stdlib/native-wasm/src/kotlin/native/FreezingIsDeprecated.kt b/libraries/stdlib/native-wasm/src/kotlin/native/FreezingIsDeprecated.kt
index 9149adf..1d9ff0e 100644
--- a/libraries/stdlib/native-wasm/src/kotlin/native/FreezingIsDeprecated.kt
+++ b/libraries/stdlib/native-wasm/src/kotlin/native/FreezingIsDeprecated.kt
@@ -9,14 +9,14 @@
/**
* Freezing API is deprecated since 1.7.20.
*
- * See [NEW_MM.md#freezing-deprecation](https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation) for details
+ * See [documentation](https://kotlinlang.org/docs/native-migration-guide.html) for details
*/
// Note: when changing level of deprecation here, also change
// * `freezing` mode handling in KonanConfig.kt
// * frontend diagnostics in ErrorsNative.kt
@SinceKotlin("1.7")
@RequiresOptIn(
- message = "Freezing API is deprecated since 1.7.20. See https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation for details",
+ message = "Freezing API is deprecated since 1.7.20. See https://kotlinlang.org/docs/native-migration-guide.html for details",
level = RequiresOptIn.Level.WARNING,
)
@Target(
diff --git a/libraries/stdlib/src/kotlin/annotations/NativeAnnotations.kt b/libraries/stdlib/src/kotlin/annotations/NativeAnnotations.kt
index f90d5be..5666b4e 100644
--- a/libraries/stdlib/src/kotlin/annotations/NativeAnnotations.kt
+++ b/libraries/stdlib/src/kotlin/annotations/NativeAnnotations.kt
@@ -20,14 +20,14 @@
/**
* Freezing API is deprecated since 1.7.20.
*
- * See [NEW_MM.md#freezing-deprecation](https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation) for details
+ * See [documentation](https://kotlinlang.org/docs/native-migration-guide.html) for details
*/
// Note: when changing level of deprecation here, also change
// * `freezing` mode handling in KonanConfig.kt
// * frontend diagnostics in ErrorsNative.kt
@SinceKotlin("1.7")
@RequiresOptIn(
- message = "Freezing API is deprecated since 1.7.20. See https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation for details",
+ message = "Freezing API is deprecated since 1.7.20. See https://kotlinlang.org/docs/native-migration-guide.html for details",
level = RequiresOptIn.Level.WARNING,
)
@Target(
diff --git a/libraries/stdlib/src/kotlin/annotations/NativeConcurrentAnnotations.kt b/libraries/stdlib/src/kotlin/annotations/NativeConcurrentAnnotations.kt
index 0cb5154..a359fc5 100644
--- a/libraries/stdlib/src/kotlin/annotations/NativeConcurrentAnnotations.kt
+++ b/libraries/stdlib/src/kotlin/annotations/NativeConcurrentAnnotations.kt
@@ -31,7 +31,7 @@
*
* PLEASE NOTE THAT THIS ANNOTATION MAY GO AWAY IN UPCOMING RELEASES.
*
- * Since 1.7.20 usage of this annotation is deprecated. See https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation for details.
+ * Since 1.7.20 usage of this annotation is deprecated. See https://kotlinlang.org/docs/native-migration-guide.html for details.
*/
@Target(AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.BINARY)
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
index 2172180..58a3817 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt
@@ -29,7 +29,6 @@
import org.jetbrains.kotlin.library.KLIB_PROPERTY_SHORT_NAME
import org.jetbrains.kotlin.library.KLIB_PROPERTY_UNIQUE_NAME
import org.junit.Assert
-import org.junit.Ignore
import org.junit.Test
import java.util.*
import java.util.jar.JarFile
@@ -1624,6 +1623,25 @@
}
}
+ // https://youtrack.jetbrains.com/issue/KT-48436
+ @Test
+ fun testUnusedSourceSetsReportAndroid() = with(Project("new-mpp-android", gradleVersion)) {
+ setupWorkingDir()
+
+ build(
+ "assembleDebug",
+ // https://issuetracker.google.com/issues/152187160
+ options = defaultBuildOptions().copy(androidGradlePluginVersion = AGPVersion.v4_2_0)
+ ) {
+ assertSuccessful()
+ assertNotContains(
+ UnusedSourceSetsChecker.WARNING_PREFIX_ONE,
+ UnusedSourceSetsChecker.WARNING_PREFIX_MANY,
+ UnusedSourceSetsChecker.WARNING_INTRO
+ )
+ }
+ }
+
@Test
fun testIncrementalCompilation() = with(Project("new-mpp-jvm-js-ic", gradleVersion)) {
build("build") {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt
index 85e6486..51d9b15 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt
@@ -172,9 +172,6 @@
val enableKotlinToolingMetadataArtifact: Boolean
get() = booleanProperty("kotlin.mpp.enableKotlinToolingMetadataArtifact") ?: true
- val mppStabilityNoWarn: Boolean?
- get() = booleanProperty(KotlinMultiplatformPlugin.STABILITY_NOWARN_FLAG)
-
val mppEnableOptimisticNumberCommonization: Boolean
get() = booleanProperty(KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION) ?: true
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt
index f96a960..c8af17e 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/gradleUtils.kt
@@ -20,6 +20,7 @@
import org.gradle.api.internal.HasConvention
import org.gradle.api.plugins.ExtensionAware
+import org.gradle.api.plugins.ExtraPropertiesExtension
@Deprecated("Conventions are deprecated in Gradle")
internal inline fun <reified T : Any> Any.addConvention(name: String, plugin: T) {
@@ -42,3 +43,6 @@
internal inline fun <reified T : Any> Any.getExtension(name: String): T? =
(this as ExtensionAware).extensions.getByName(name) as T?
+
+inline val Any.extraProperties: ExtraPropertiesExtension
+ get() = (this as ExtensionAware).extensions.extraProperties
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
index 36f167f..3761eba 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt
@@ -49,15 +49,6 @@
override fun apply(project: Project) {
checkGradleCompatibility("the Kotlin Multiplatform plugin", GradleVersion.version("6.0"))
- if (PropertiesProvider(project).mppStabilityNoWarn != true) {
- SingleWarningPerBuild.show(
- project,
- "Kotlin Multiplatform Projects are an Alpha feature. " +
- "See: https://kotlinlang.org/docs/reference/evolution/components-stability.html. " +
- "To hide this message, add '$STABILITY_NOWARN_FLAG=true' to the Gradle properties.\n"
- )
- }
-
handleHierarchicalStructureFlagsMigration(project)
project.plugins.apply(JavaBasePlugin::class.java)
@@ -213,8 +204,6 @@
internal fun sourceSetFreeCompilerArgsPropertyName(sourceSetName: String) =
"kotlin.mpp.freeCompilerArgsForSourceSet.$sourceSetName"
-
- internal const val STABILITY_NOWARN_FLAG = "kotlin.mpp.stability.nowarn"
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/UnusedSourceSetsChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/UnusedSourceSetsChecker.kt
index 15a2cb5..9162e97 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/UnusedSourceSetsChecker.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/UnusedSourceSetsChecker.kt
@@ -8,6 +8,8 @@
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
+import org.jetbrains.kotlin.gradle.plugin.extraProperties
+import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
object UnusedSourceSetsChecker {
const val WARNING_PREFIX_ONE =
@@ -35,11 +37,14 @@
}
fun checkSourceSets(project: Project) {
- // TODO once Android compilations are configured eagerly, move this to afterEvaluate { ... } instead of taskGraph.whenReady { ... }
- project.gradle.taskGraph.whenReady { _ ->
+ project.whenEvaluated {
val compilationsBySourceSet = CompilationSourceSetUtil.compilationsBySourceSets(project)
val unusedSourceSets = project.kotlinExtension.sourceSets.filter {
- compilationsBySourceSet[it]?.isEmpty() ?: true
+ // Ignoring Android source sets
+ val isAndroidSourceSet = it.extraProperties.has(IS_ANDROID_SOURCE_SET) &&
+ (it.extraProperties[IS_ANDROID_SOURCE_SET] as Boolean)
+
+ !isAndroidSourceSet && compilationsBySourceSet[it]?.isEmpty() ?: true
}
if (unusedSourceSets.isNotEmpty()) {
reportUnusedSourceSets(project, unusedSourceSets.toSet())
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt
index 6781d2f..3e3f59b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/syncKotlinAndAndroidSourceSets.kt
@@ -16,13 +16,22 @@
import org.jetbrains.kotlin.gradle.plugin.addConvention
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinSourceSetFactory.Companion.defaultSourceFolder
+internal const val IS_ANDROID_SOURCE_SET = "android-source-set"
+
internal fun syncKotlinAndAndroidSourceSets(target: KotlinAndroidTarget) {
val project = target.project
val android = project.extensions.getByName("android") as BaseExtension
+ val kotlinExtension = project.kotlinExtension
+ val createdKotlinSourceSets = mutableSetOf<String>()
android.sourceSets.all { androidSourceSet ->
val kotlinSourceSetName = kotlinSourceSetNameForAndroidSourceSet(target, androidSourceSet.name)
- val kotlinSourceSet = project.kotlinExtension.sourceSets.maybeCreate(kotlinSourceSetName)
+ createdKotlinSourceSets.add(kotlinSourceSetName)
+ val kotlinSourceSet = kotlinExtension.sourceSets.maybeCreate(kotlinSourceSetName)
+
+ // Marking KotlinSource set is created for Android compilation to ignore it in UnusedSourceSetChecker
+ kotlinSourceSet.extraProperties.set(IS_ANDROID_SOURCE_SET, true)
+
androidSourceSet.addKotlinSources(kotlinSourceSet)
createDefaultDependsOnEdges(target, kotlinSourceSet, androidSourceSet)
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java
index 045634b..4a682c6 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java
@@ -3512,6 +3512,24 @@
}
@Test
+ @TestMetadata("kt53677.kt")
+ public void testKt53677() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt53677.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54707.kt")
+ public void testKt54707() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54707.kt");
+ }
+
+ @Test
+ @TestMetadata("kt54802.kt")
+ public void testKt54802() throws Exception {
+ runTest("compiler/testData/codegen/box/casts/kt54802.kt");
+ }
+
+ @Test
@TestMetadata("lambdaToUnitCast.kt")
public void testLambdaToUnitCast() throws Exception {
runTest("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");
diff --git a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/jvm/AtomicfuJvmIrTransformer.kt b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/jvm/AtomicfuJvmIrTransformer.kt
index 016b963..7d50f7e 100644
--- a/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/jvm/AtomicfuJvmIrTransformer.kt
+++ b/plugins/atomicfu/atomicfu-compiler/src/org/jetbrains/kotlinx/atomicfu/compiler/backend/jvm/AtomicfuJvmIrTransformer.kt
@@ -8,6 +8,7 @@
import org.jetbrains.kotlin.backend.common.extensions.*
import org.jetbrains.kotlin.backend.common.lower.parents
import org.jetbrains.kotlin.descriptors.ClassKind
+import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
import org.jetbrains.kotlin.ir.*
import org.jetbrains.kotlin.ir.builders.declarations.*
import org.jetbrains.kotlin.ir.builders.*
@@ -434,6 +435,7 @@
return context.irFactory.buildFun {
name = Name.identifier(mangledName)
isInline = true
+ visibility = atomicExtension.visibility
}.apply {
val newDeclaration = this
extensionReceiverParameter = null
@@ -760,6 +762,7 @@
return context.irFactory.buildFun {
name = Name.identifier(mangledName)
isInline = true
+ visibility = DescriptorVisibilities.PRIVATE
}.apply {
dispatchReceiverParameter = (parent as? IrClass)?.thisReceiver?.deepCopyWithSymbols(this)
if (functionName == LOOP) {