K2: Refine how JDK members are mapped to built-in classes

Previously, the semantic was more-or-less correct for most of the cases
but some corner one, like `sort` in MutableList didn't work properly.

Namely, `sort` should be marked there in a way to forbid to call it
everywhere beside super-calls.
Also, overriding it should be allowed.

Mostly, the logic was re-written to K2 model from K1-related
JvmBuiltInsCustomizer.

^KT-57694 In progress
^KT-57269 Fixed
This commit is contained in:
Denis.Zharkov
2023-04-13 11:50:54 +02:00
committed by Space Team
parent 161fe1d2ca
commit 2e5b783cc6
59 changed files with 1225 additions and 595 deletions
@@ -55,7 +55,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
registerExtraComponents = {
registerExtraComponents(it)
},
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
createKotlinScopeProvider = { FirKotlinScopeProvider() },
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
listOfNotNull(
MetadataSymbolProvider(
@@ -109,7 +109,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
registerExtraComponents(it)
},
registerExtraCheckers = {},
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
createKotlinScopeProvider = { FirKotlinScopeProvider() },
createProviders = { session, kotlinScopeProvider, symbolProvider, syntheticFunctionalInterfaceProvider, generatedSymbolsProvider, dependencies ->
var symbolProviderForBinariesFromIncrementalCompilation: MetadataSymbolProvider? = null
incrementalCompilationContext?.let {
@@ -53,7 +53,7 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
registerExtraComponents(session)
},
registerExtraCheckers = { it.registerJsCheckers() },
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
createKotlinScopeProvider = { FirKotlinScopeProvider() },
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, syntheticFunctionInterfaceProvider, dependencies ->
listOfNotNull(
symbolProvider,
@@ -91,7 +91,7 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
it.registerJsSpecificComponents()
registerExtraComponents(it)
},
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
createKotlinScopeProvider = { FirKotlinScopeProvider() },
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
listOfNotNull(
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, resolvedLibraries),
@@ -41,7 +41,7 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() {
registerExtraComponents = { session ->
registerExtraComponents(session)
},
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
createKotlinScopeProvider = { FirKotlinScopeProvider() },
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
val forwardDeclarationsModuleData = BinaryModuleData.createDependencyModuleData(
Name.special("<forward declarations>"),
@@ -86,7 +86,7 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() {
registerExtraComponents(it)
},
registerExtraCheckers = { it.registerNativeCheckers() },
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
createKotlinScopeProvider = { FirKotlinScopeProvider() },
createProviders = { _, _, symbolProvider, generatedSymbolsProvider, syntheticFunctionInterfaceProvider, dependencies ->
listOfNotNull(
symbolProvider,