FIR: fix type approximation by visibility

This commit is contained in:
Mikhail Glukhikh
2021-02-15 19:15:43 +03:00
parent 74bdb2398e
commit 357a7907a3
18 changed files with 90 additions and 92 deletions
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
// WASM_MUTE_REASON: PROPERTY_REFERENCES
// WITH_RUNTIME
@@ -20,11 +20,11 @@ private fun foo4(f: () -> Int) = object {
}
fun test1(b: Boolean) {
var x = <!DEBUG_INFO_EXPRESSION_TYPE("<anonymous>")!>foo1 { 1 }<!>
var x = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>foo1 { 1 }<!>
if (b) {
x = <!DEBUG_INFO_EXPRESSION_TYPE("<anonymous>")!>foo1 { 2 }<!>
x = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>foo1 { 2 }<!>
}
x.bar()
x.<!UNRESOLVED_REFERENCE!>bar<!>()
}
fun test2(b: Boolean) {
@@ -20,11 +20,11 @@ private fun foo4(f: () -> Int) = object {
}
fun test1(b: Boolean) {
var x = <!DEBUG_INFO_EXPRESSION_TYPE("<anonymous>")!>foo1 { 1 }<!>
var x = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>foo1 { 1 }<!>
if (b) {
x = <!DEBUG_INFO_EXPRESSION_TYPE("<anonymous>")!>foo1 { 2 }<!>
x = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any")!>foo1 { 2 }<!>
}
x.bar()
x.<!UNRESOLVED_REFERENCE!>bar<!>()
}
fun test2(b: Boolean) {
@@ -3,7 +3,7 @@ interface IFoo {
}
val test1: <no name provided>
val test1: Any
field = { // BLOCK
local class <no name provided> {
private constructor() /* primary */ {
@@ -17,7 +17,7 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:test1 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test1 type:<root>.test1.<no name provided> visibility:private [final,static]
FIELD PROPERTY_BACKING_FIELD name:test1 type:kotlin.Any visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.test1.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[kotlin.Any]
@@ -40,11 +40,11 @@ FILE fqName:<root> fileName:/objectLiteralExpressions.kt
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.test1.<no name provided>' type=<root>.test1.<no name provided> origin=OBJECT_LITERAL
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test1> visibility:public modality:FINAL <> () returnType:<root>.test1.<no name provided>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test1> visibility:public modality:FINAL <> () returnType:kotlin.Any
correspondingProperty: PROPERTY name:test1 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test1> (): <root>.test1.<no name provided> declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test1 type:<root>.test1.<no name provided> visibility:private [final,static]' type=<root>.test1.<no name provided> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-test1> (): kotlin.Any declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test1 type:kotlin.Any visibility:private [final,static]' type=kotlin.Any origin=null
PROPERTY name:test2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test2 type:<root>.IFoo visibility:private [final,static]
EXPRESSION_BODY
@@ -53,7 +53,7 @@ object Z {
get
val anObject: <no name provided>
val anObject: Any
field = { // BLOCK
local class <no name provided> {
private constructor() /* primary */ {
@@ -108,7 +108,7 @@ FILE fqName:<root> fileName:/objectReference.kt
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:aLambda type:kotlin.Function0<kotlin.Unit> visibility:private [final]' type=kotlin.Function0<kotlin.Unit> origin=null
receiver: GET_VAR '<this>: <root>.Z declared in <root>.Z.<get-aLambda>' type=<root>.Z origin=null
PROPERTY name:anObject visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:anObject type:<root>.Z.anObject.<no name provided> visibility:private [final]
FIELD PROPERTY_BACKING_FIELD name:anObject type:kotlin.Any visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.Z.anObject.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[kotlin.Any]
@@ -156,12 +156,12 @@ FILE fqName:<root> fileName:/objectReference.kt
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.Z.anObject.<no name provided>' type=<root>.Z.anObject.<no name provided> origin=OBJECT_LITERAL
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-anObject> visibility:public modality:FINAL <> ($this:<root>.Z) returnType:<root>.Z.anObject.<no name provided>
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-anObject> visibility:public modality:FINAL <> ($this:<root>.Z) returnType:kotlin.Any
correspondingProperty: PROPERTY name:anObject visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Z
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-anObject> (): <root>.Z.anObject.<no name provided> declared in <root>.Z'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anObject type:<root>.Z.anObject.<no name provided> visibility:private [final]' type=<root>.Z.anObject.<no name provided> origin=null
RETURN type=kotlin.Nothing from='public final fun <get-anObject> (): kotlin.Any declared in <root>.Z'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anObject type:kotlin.Any visibility:private [final]' type=kotlin.Any origin=null
receiver: GET_VAR '<this>: <root>.Z declared in <root>.Z.<get-anObject>' type=<root>.Z origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden: