bd66b96f8a
In some cases we transform flexible type into non-flexible during enhancement, but don't add `@EnhancedNullability` attribute to them, which breaks consistency with K1 on IR level This commit fixes it ^KT-65302
52 lines
3.8 KiB
Plaintext
Vendored
52 lines
3.8 KiB
Plaintext
Vendored
FILE: test.kt
|
|
public final fun test(map: R|MyMap|): R|kotlin/Unit| {
|
|
lval result: R|kotlin/String!| = R|<local>/map|.R|kotlin/collections/getOrPut|<R|kotlin/String!|, R|kotlin/String!|>(String(key), <L> = getOrPut@fun <anonymous>(): R|kotlin/String!| <inline=Inline, kind=UNKNOWN> {
|
|
^ String(value)
|
|
}
|
|
)
|
|
lval otherResult: R|kotlin/String!| = R|<local>/map|.R|SubstitutionOverride</MyMap.getOrDefault: R|kotlin/String!|>|(String(key), String(value))
|
|
lval anotherResult: R|kotlin/String?| = R|<local>/map|.R|SubstitutionOverride</MyMap.replace: R|@EnhancedNullability kotlin/String?|>|(String(key), String(value))
|
|
R|<local>/map|.R|SubstitutionOverride</MyMap.forEach: R|kotlin/Unit|>|(<L> = SAM(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|
|
|
}
|
|
))
|
|
R|<local>/map|.R|kotlin/collections/forEach|<R|kotlin/String!|, R|kotlin/String!|>(<L> = forEach@fun <anonymous>(<destruct>: R|kotlin/collections/Map.Entry<kotlin/String!, kotlin/String!>|): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
|
|
lval key: R|kotlin/String!| = R|<local>/<destruct>|.R|kotlin/collections/component1|<R|kotlin/String!|, R|kotlin/String!|>()
|
|
lval value: R|kotlin/String!| = R|<local>/<destruct>|.R|kotlin/collections/component2|<R|kotlin/String!|, R|kotlin/String!|>()
|
|
{
|
|
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|
|
|
}
|
|
|
|
}
|
|
)
|
|
}
|
|
public final fun test(map: R|kotlin/collections/MutableMap<kotlin/String, kotlin/String>|): R|kotlin/Unit| {
|
|
lval result: R|kotlin/String| = R|<local>/map|.R|kotlin/collections/getOrPut|<R|kotlin/String|, R|kotlin/String|>(String(key), <L> = getOrPut@fun <anonymous>(): R|kotlin/String| <inline=Inline, kind=UNKNOWN> {
|
|
^ String(value)
|
|
}
|
|
)
|
|
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|@EnhancedNullability kotlin/String?|>|(String(key), String(value))
|
|
R|<local>/map|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = SAM(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|
|
|
}
|
|
))
|
|
R|<local>/map|.R|kotlin/collections/forEach|<R|kotlin/String|, R|kotlin/String|>(<L> = forEach@fun <anonymous>(<destruct>: R|kotlin/collections/Map.Entry<kotlin/String, kotlin/String>|): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
|
|
lval key: R|kotlin/String| = R|<local>/<destruct>|.R|kotlin/collections/component1|<R|kotlin/String|, R|kotlin/String|>()
|
|
lval value: R|kotlin/String| = R|<local>/<destruct>|.R|kotlin/collections/component2|<R|kotlin/String|, R|kotlin/String|>()
|
|
{
|
|
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|
|
|
}
|
|
|
|
}
|
|
)
|
|
}
|