[FIR] Properly calculate visibilities

`testIntersectionOfPrimitiveBasedFunctions`
is fine, because we deprecate this
already in ^KT-63243.

`CANNOT_INFER_VISIBILITY` is
positioned as `DECLARATION_NAME`,
just in case we decide for
some reason that we do want to
report it along with
`MANY_*_NOT_IMPLEMENTED`. In that
case, we'd get a problem that
their bounds overlap, but not
completely contain one another.

^KT-63741 Fixed
^KT-59400 Fixed
This commit is contained in:
Nikolay Lunyak
2024-01-19 12:44:09 +02:00
committed by Space Team
parent 7056ad5325
commit 8f8c7fe7cf
31 changed files with 203 additions and 139 deletions
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
@@ -18,11 +18,11 @@ public open [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|F
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: R|T & Any|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: R|T & Any|
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverrideFunctionSymbol second/B.foo), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverrideFunctionSymbol second/B.foo), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): <implicit>
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirNamedFunctionSymbol second/B.foo, FirNamedFunctionSymbol second/B.foo]), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirNamedFunctionSymbol second/B.foo, FirNamedFunctionSymbol second/B.foo]), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): <implicit>
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> T}, baseSymbol=FirNamedFunctionSymbol second/C.foo), SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): <implicit>
@@ -14,11 +14,11 @@ public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalcula
public open [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] x: R|F| = LAZY_EXPRESSION): <implicit> { LAZY_BLOCK }
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverridePropertySymbol second/B.bar), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverridePropertySymbol second/B.bar), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: <implicit>
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirPropertySymbol second/B.bar, FirPropertySymbol second/B.bar]), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirPropertySymbol second/B.bar, FirPropertySymbol second/B.bar]), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: <implicit>
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
@@ -18,11 +18,11 @@ public open [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|F
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: R|T & Any|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: R|T & Any|
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverrideFunctionSymbol second/B.foo), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverrideFunctionSymbol second/B.foo), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String|): <implicit>
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirNamedFunctionSymbol second/B.foo, FirNamedFunctionSymbol second/B.foo]), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirNamedFunctionSymbol second/B.foo, FirNamedFunctionSymbol second/B.foo]), IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): <implicit>
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> T}, baseSymbol=FirNamedFunctionSymbol second/C.foo), SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): <implicit>
@@ -14,11 +14,11 @@ public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalcula
public open [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] x: R|F| = LAZY_EXPRESSION): <implicit> { LAZY_BLOCK }
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverridePropertySymbol second/B.bar), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopySubstitution(substitutor={T -> @R|second/Anno|(str = <strcat>(String(object ), R|second/constant|)) kotlin/String}, baseSymbol=FirIntersectionOverridePropertySymbol second/B.bar), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/B.bar] var bar: <implicit>
public open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirPropertySymbol second/B.bar, FirPropertySymbol second/B.bar]), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: <implicit>
public? open override [ResolvedTo(STATUS)] [CallableCopyDeferredReturnTypeCalculationKey=CallableCopyIntersection(mostSpecific=[FirPropertySymbol second/B.bar, FirPropertySymbol second/B.bar]), IntersectionOverrideOriginalKey=second/B.bar, SubstitutedOverrideOriginalKey=second/C.bar] var bar: <implicit>
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public? open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): R|kotlin/Unit|
public? open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): R|kotlin/Unit|
public open override [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): R|kotlin/Unit|
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public? open override [ResolvedTo(BODY_RESOLVE)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
public open override [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|T|): R|kotlin/Unit|
@@ -1,10 +1,10 @@
public open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
public? open override [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] x: R|kotlin/String|): R|kotlin/Unit| {
^foo Q|kotlin/Unit|
}
public open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public? open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/B.foo] fun foo([ResolvedTo(STATUS)] x: R|@R|second/Anno|(str = <strcat>(String(super ), R|second/constant|)) kotlin/String|): R|kotlin/Unit|
public open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): R|kotlin/Unit|
public? open override [ResolvedTo(STATUS)] [IntersectionOverrideOriginalKey=second/B.foo, SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): R|kotlin/Unit|
public open override [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=second/C.foo] fun foo([ResolvedTo(STATUS)] x: R|T|): R|kotlin/Unit|