FIR: Preserve non-custom attributes after substitution

The test is being fixed since synthetic call for elvis has @Exact-attribute on return type
This commit is contained in:
Denis.Zharkov
2021-11-15 16:11:12 +03:00
committed by teamcityserver
parent e26abbbbb0
commit 883b18a0c6
27 changed files with 239 additions and 185 deletions
@@ -14,7 +14,7 @@ FILE: hashTableWithForEach.kt
when () {
R|/DEBUG| -> {
^ Q|java/util/Collections|.R|java/util/Collections.unmodifiableSet|<R|ft<kotlin/collections/MutableMap.MutableEntry<K, V>, kotlin/collections/MutableMap.MutableEntry<K, V>?>|>(R|kotlin/collections/mutableSetOf|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>().R|kotlin/apply|<R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|>(<L> = apply@fun R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
this@R|/SomeHashTable|.R|/SomeHashTable.forEach|(<L> = forEach@fun <anonymous>(key: R|K|, value: R|V|): R|kotlin/Unit| <inline=NoInline> {
this@R|/SomeHashTable|.R|/SomeHashTable.forEach|(<L> = forEach@fun <anonymous>(key: R|@EnhancedNullability K|, value: R|@EnhancedNullability V|): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|SubstitutionOverride</SomeHashTable.Entry.Entry>|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
}
)
@@ -1,6 +1,6 @@
FILE: MapCompute.kt
public final fun <D> R|kotlin/collections/MutableMap<kotlin/String, kotlin/collections/MutableSet<D>>|.initAndAdd(key: R|kotlin/String|, value: R|D|): R|kotlin/Unit| {
this@R|/initAndAdd|.R|SubstitutionOverride<kotlin/collections/MutableMap.compute: R|kotlin/collections/MutableSet<D>?|>|(R|<local>/key|, <L> = compute@fun <anonymous>(<unused var>: R|kotlin/String|, maybeValues: R|kotlin/collections/MutableSet<D>?|): R|kotlin/collections/MutableSet<D>?| <inline=NoInline> {
this@R|/initAndAdd|.R|SubstitutionOverride<kotlin/collections/MutableMap.compute: R|kotlin/collections/MutableSet<D>?|>|(R|<local>/key|, <L> = compute@fun <anonymous>(<unused var>: R|@EnhancedNullability kotlin/String|, maybeValues: R|@EnhancedNullability kotlin/collections/MutableSet<D>?|): R|@EnhancedNullability kotlin/collections/MutableSet<D>?| <inline=NoInline> {
lval setOfValues: R|kotlin/collections/MutableSet<D>| = R|<local>/maybeValues| ?: R|kotlin/collections/mutableSetOf|<R|D|>()
R|<local>/setOfValues|.R|SubstitutionOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|<local>/value|)
^ R|<local>/setOfValues|
@@ -2,11 +2,11 @@ FILE: test.kt
public abstract interface UseIterable : R|MyIterable<kotlin/String>| {
public open fun test(): R|kotlin/Unit| {
lval it: R|kotlin/collections/MutableIterator<ft<kotlin/String, kotlin/String?>>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.iterator: R|kotlin/collections/MutableIterator<ft<kotlin/String, kotlin/String?>>|>|()
lval split: R|java/util/Spliterator<ft<kotlin/String, kotlin/String?>>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.spliterator: R|@EnhancedNullability java/util/Spliterator<ft<kotlin/String, kotlin/String?>>|>|()
lval split: R|java/util/Spliterator<ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.spliterator: R|@EnhancedNullability java/util/Spliterator<ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>>|>|()
}
}
public final fun test(some: R|kotlin/collections/Iterable<kotlin/String>|): R|kotlin/Unit| {
lval it: R|kotlin/collections/Iterator<kotlin/String>| = R|<local>/some|.R|SubstitutionOverride<kotlin/collections/Iterable.iterator: R|kotlin/collections/Iterator<kotlin/String>|>|()
lval split: R|java/util/Spliterator<kotlin/String>| = R|<local>/some|.R|SubstitutionOverride<kotlin/collections/Iterable.spliterator: R|@EnhancedNullability java/util/Spliterator<kotlin/String>|>|()
lval split: R|java/util/Spliterator<@EnhancedNullability kotlin/String>| = R|<local>/some|.R|SubstitutionOverride<kotlin/collections/Iterable.spliterator: R|@EnhancedNullability java/util/Spliterator<@EnhancedNullability kotlin/String>|>|()
}
@@ -6,7 +6,7 @@ FILE: test.kt
)
lval otherResult: R|ft<kotlin/String, kotlin/String?>| = R|<local>/map|.R|SubstitutionOverride</MyMap.getOrDefault: R|ft<kotlin/String, kotlin/String?>|>|(String(key), String(value))
lval anotherResult: R|kotlin/String?| = R|<local>/map|.R|SubstitutionOverride</MyMap.replace: R|kotlin/String?|>|(String(key), String(value))
R|<local>/map|.R|SubstitutionOverride</MyMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<kotlin/String, kotlin/String?>|, value: R|ft<kotlin/String, kotlin/String?>|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/map|.R|SubstitutionOverride</MyMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|, value: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|): R|kotlin/Unit| <inline=NoInline> {
R|kotlin/io/println|(<strcat>(R|<local>/key|, String(: ), R|<local>/value|))
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
@@ -28,7 +28,7 @@ FILE: test.kt
)
lval otherResult: R|kotlin/String| = R|<local>/map|.R|SubstitutionOverride<kotlin/collections/MutableMap.getOrDefault: R|kotlin/String|>|(String(key), String(value))
lval anotherResult: R|kotlin/String?| = R|<local>/map|.R|SubstitutionOverride<kotlin/collections/MutableMap.replace: R|kotlin/String?|>|(String(key), String(value))
R|<local>/map|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|kotlin/String|, value: R|kotlin/String|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/map|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|@EnhancedNullability kotlin/String|, value: R|@EnhancedNullability kotlin/String|): R|kotlin/Unit| <inline=NoInline> {
R|kotlin/io/println|(<strcat>(R|<local>/key|, String(: ), R|<local>/value|))
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
@@ -1,6 +1,6 @@
FILE: test.kt
public final fun <D : R|kotlin/Any|> R|Call<D>|.testForEach(): R|kotlin/Unit| {
this@R|/testForEach|.R|/Call.arguments|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<kotlin/String, kotlin/String?>|, value: R|ft<kotlin/String, kotlin/String?>|): R|kotlin/Unit| <inline=NoInline> {
this@R|/testForEach|.R|/Call.arguments|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|, value: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
}
@@ -1,6 +1,6 @@
FILE: mapMerge.kt
public final fun foo(x: R|kotlin/collections/MutableMap<kotlin/String, kotlin/collections/List<kotlin/String>>|): R|kotlin/Unit| {
R|<local>/x|.R|SubstitutionOverride<kotlin/collections/MutableMap.merge: R|kotlin/collections/List<kotlin/String>?|>|(String(), R|kotlin/collections/listOf|<R|kotlin/String|>(String()), <L> = merge@fun <anonymous>(a: R|@EnhancedNullability kotlin/collections/List<kotlin/String>|, b: R|@EnhancedNullability kotlin/collections/List<kotlin/String>|): R|kotlin/collections/List<kotlin/String>?| <inline=NoInline> {
R|<local>/x|.R|SubstitutionOverride<kotlin/collections/MutableMap.merge: R|kotlin/collections/List<kotlin/String>?|>|(String(), R|kotlin/collections/listOf|<R|kotlin/String|>(String()), <L> = merge@fun <anonymous>(a: R|@EnhancedNullability kotlin/collections/List<kotlin/String>|, b: R|@EnhancedNullability kotlin/collections/List<kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<kotlin/String>?| <inline=NoInline> {
^ R|<local>/a|.R|kotlin/collections/plus|<R|kotlin/String|>(R|<local>/b|)
}
)
@@ -1,6 +1,6 @@
FILE: removeIf.kt
public final fun test(collection: R|kotlin/collections/MutableCollection<kotlin/Boolean>|): R|kotlin/Unit| {
R|<local>/collection|.R|SubstitutionOverride<kotlin/collections/MutableCollection.removeIf: R|kotlin/Boolean|>|(<L> = removeIf@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| <inline=NoInline> {
R|<local>/collection|.R|SubstitutionOverride<kotlin/collections/MutableCollection.removeIf: R|kotlin/Boolean|>|(<L> = removeIf@fun <anonymous>(it: R|@EnhancedNullability kotlin/Boolean|): R|kotlin/Boolean| <inline=NoInline> {
^ R|<local>/it|
}
)
@@ -10,7 +10,7 @@ FILE: typeAliasWithForEach.kt
public final typealias Arguments = R|kotlin/collections/Map<kotlin/String, ArgsInfo>|
public final fun R|Arguments|.deepCopy(): R|Arguments| {
lval result: R|java/util/HashMap<ft<kotlin/String, kotlin/String?>, ft<ArgsInfo, ArgsInfo?>>| = R|java/util/HashMap.HashMap|<R|ft<kotlin/String, kotlin/String?>|, R|ft<ArgsInfo, ArgsInfo?>|>()
this@R|/deepCopy|.R|SubstitutionOverride<kotlin/collections/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|kotlin/String|, value: R|ArgsInfo|): R|kotlin/Unit| <inline=NoInline> {
this@R|/deepCopy|.R|SubstitutionOverride<kotlin/collections/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|@EnhancedNullability kotlin/String|, value: R|@EnhancedNullability ArgsInfo|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/result|.R|kotlin/collections/set|<R|ft<kotlin/String, kotlin/String?>|, R|ft<ArgsInfo, ArgsInfo?>|>(R|<local>/key|, R|/ArgsInfoImpl.ArgsInfoImpl|(R|<local>/value|))
}
)