[FE 1.0] Remove usages of safeAs and cast from most of FE 1.0 modules:
- :core:descriptors - :core:descriptors.jvm - :core:deserialization - :compiler:cli - :compiler:frontend - :compiler:frontend:cfg - :compiler:frontend.java - :compiler:frontend.common.jvm - :compiler:psi - :compiler:resolution - :compiler:resolution.common - :compiler:resolution.common.jvm - :kotlin-reflect-api
This commit is contained in:
committed by
Space Team
parent
6afceb1e84
commit
d423782fac
+1
-2
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
class LazyJavaClassDescriptor(
|
||||
val outerContext: LazyJavaResolverContext,
|
||||
@@ -187,7 +186,7 @@ class LazyJavaClassDescriptor(
|
||||
|
||||
// Check if any of the super-interfaces contain too many methods to be a SAM
|
||||
return typeConstructor.supertypes.any {
|
||||
it.constructor.declarationDescriptor.safeAs<LazyJavaClassDescriptor>()?.isDefinitelyNotSamInterface == true
|
||||
(it.constructor.declarationDescriptor as? LazyJavaClassDescriptor)?.isDefinitelyNotSamInterface == true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -35,7 +35,6 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import org.jetbrains.kotlin.utils.alwaysTrue
|
||||
import java.util.*
|
||||
|
||||
@@ -76,8 +75,7 @@ class LazyJavaPackageScope(
|
||||
request.javaClass ?: c.components.finder.findClass(
|
||||
JavaClassFinder.Request(
|
||||
requestClassId,
|
||||
kotlinClassOrClassFileContent?.safeAs<KotlinClassFinder.Result.ClassFileContent>()
|
||||
?.content
|
||||
(kotlinClassOrClassFileContent as? KotlinClassFinder.Result.ClassFileContent)?.content
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1
-2
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.SimpleType
|
||||
import org.jetbrains.kotlin.types.TypeConstructor
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
|
||||
class SyntheticJavaClassDescriptor(
|
||||
@@ -121,7 +120,7 @@ class SyntheticJavaClassDescriptor(
|
||||
|
||||
// Check if any of the super-interfaces contain too many methods to be a SAM
|
||||
return typeConstructor.supertypes.any {
|
||||
it.constructor.declarationDescriptor.safeAs<SyntheticJavaClassDescriptor>()?.isDefinitelyNotSamInterface == true
|
||||
(it.constructor.declarationDescriptor as? SyntheticJavaClassDescriptor)?.isDefinitelyNotSamInterface == true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-4
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.PossiblyExternalAnnotationDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.JavaResolverComponents
|
||||
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
|
||||
import org.jetbrains.kotlin.load.java.lazy.copyWithNewDefaultTypeQualifiers
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaAnnotationDescriptor
|
||||
@@ -50,7 +49,6 @@ import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||
import org.jetbrains.kotlin.types.model.TypeParameterMarker
|
||||
import org.jetbrains.kotlin.types.model.TypeSystemInferenceExtensionContext
|
||||
import org.jetbrains.kotlin.types.typeUtil.contains
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
class SignatureEnhancement(private val typeEnhancement: JavaTypeEnhancement) {
|
||||
fun <D : CallableMemberDescriptor> enhanceSignatures(c: LazyJavaResolverContext, platformSignatures: Collection<D>): Collection<D> {
|
||||
@@ -92,7 +90,7 @@ class SignatureEnhancement(private val typeEnhancement: JavaTypeEnhancement) {
|
||||
val receiverTypeEnhancement =
|
||||
if (extensionReceiverParameter != null)
|
||||
enhanceValueParameter(
|
||||
parameterDescriptor = annotationOwnerForMember.safeAs<FunctionDescriptor>()
|
||||
parameterDescriptor = (annotationOwnerForMember as? FunctionDescriptor)
|
||||
?.getUserData(JavaMethodDescriptor.ORIGINAL_VALUE_PARAMETER_FOR_EXTENSION_RECEIVER),
|
||||
methodContext = memberContext,
|
||||
predefined = null,
|
||||
@@ -128,7 +126,7 @@ class SignatureEnhancement(private val typeEnhancement: JavaTypeEnhancement) {
|
||||
typeContainer = annotationOwnerForMember, isCovariant = true,
|
||||
containerContext = memberContext,
|
||||
containerApplicabilityType =
|
||||
if (this.safeAs<PropertyDescriptor>()?.isJavaField == true)
|
||||
if ((this as? PropertyDescriptor)?.isJavaField == true)
|
||||
AnnotationQualifierApplicabilityType.FIELD
|
||||
else
|
||||
AnnotationQualifierApplicabilityType.METHOD_RETURN_TYPE,
|
||||
|
||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
val JVM_INLINE_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.JvmInline")
|
||||
val JVM_INLINE_ANNOTATION_CLASS_ID = ClassId.topLevel(JVM_INLINE_ANNOTATION_FQ_NAME)
|
||||
@@ -28,10 +27,10 @@ fun DeclarationDescriptor.isMultiFieldValueClass(): Boolean =
|
||||
fun DeclarationDescriptor.isValueClass(): Boolean = isInlineClass() || isMultiFieldValueClass()
|
||||
|
||||
fun KotlinType.unsubstitutedUnderlyingType(): KotlinType? =
|
||||
constructor.declarationDescriptor.safeAs<ClassDescriptor>()?.inlineClassRepresentation?.underlyingType
|
||||
(constructor.declarationDescriptor as? ClassDescriptor)?.inlineClassRepresentation?.underlyingType
|
||||
|
||||
fun KotlinType.unsubstitutedUnderlyingTypes(): List<KotlinType> {
|
||||
val declarationDescriptor = constructor.declarationDescriptor.safeAs<ClassDescriptor>() ?: return emptyList()
|
||||
val declarationDescriptor = constructor.declarationDescriptor as? ClassDescriptor ?: return emptyList()
|
||||
return when {
|
||||
declarationDescriptor.isInlineClass() -> listOfNotNull(unsubstitutedUnderlyingType())
|
||||
declarationDescriptor.isMultiFieldValueClass() ->
|
||||
|
||||
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.types.checker.REFINER_CAPABILITY
|
||||
import org.jetbrains.kotlin.types.checker.TypeRefinementSupport
|
||||
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||
import org.jetbrains.kotlin.utils.DFS
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
@OptIn(TypeRefinement::class)
|
||||
class KotlinTypeRefinerImpl(
|
||||
@@ -203,8 +202,8 @@ private val TypeConstructor.allDependentTypeConstructors: Collection<TypeConstru
|
||||
else -> supertypes.map { it.constructor }
|
||||
}
|
||||
|
||||
private fun TypeConstructor.isExpectClass() =
|
||||
declarationDescriptor?.safeAs<ClassDescriptor>()?.isExpect == true
|
||||
private fun TypeConstructor.isExpectClass(): Boolean =
|
||||
(declarationDescriptor as? ClassDescriptor)?.isExpect == true
|
||||
|
||||
private fun KotlinType.restoreAdditionalTypeInformation(prototype: KotlinType): KotlinType {
|
||||
return TypeUtils.makeNullableAsSpecified(this, prototype.isMarkedNullable).replace(prototype.arguments)
|
||||
|
||||
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.types.checker.*
|
||||
import org.jetbrains.kotlin.types.error.ErrorType
|
||||
import org.jetbrains.kotlin.types.model.TypeArgumentMarker
|
||||
import org.jetbrains.kotlin.types.model.TypeVariableTypeConstructorMarker
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import org.jetbrains.kotlin.types.error.ErrorUtils
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.contract
|
||||
@@ -337,7 +336,7 @@ fun SimpleType.unCapture(): UnwrappedType {
|
||||
}
|
||||
|
||||
fun unCaptureProjection(projection: TypeProjection): TypeProjection {
|
||||
val unCapturedProjection = projection.type.constructor.safeAs<NewCapturedTypeConstructor>()?.projection ?: projection
|
||||
val unCapturedProjection = (projection.type.constructor as? NewCapturedTypeConstructor)?.projection ?: projection
|
||||
if (unCapturedProjection.isStarProjection || unCapturedProjection.type is ErrorType) return unCapturedProjection
|
||||
|
||||
val newArguments = unCapturedProjection.type.arguments.map(::unCaptureProjection)
|
||||
|
||||
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.types.model.*
|
||||
import org.jetbrains.kotlin.types.typeUtil.*
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import org.jetbrains.kotlin.types.typeUtil.isSignedOrUnsignedNumberType as classicIsSignedOrUnsignedNumberType
|
||||
import org.jetbrains.kotlin.types.typeUtil.isStubType as isSimpleTypeStubType
|
||||
import org.jetbrains.kotlin.types.typeUtil.isStubTypeForBuilderInference as isSimpleTypeStubTypeForBuilderInference
|
||||
@@ -837,7 +836,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy
|
||||
require(firstCandidate is KotlinType, this::errorMessage)
|
||||
require(secondCandidate is KotlinType, this::errorMessage)
|
||||
|
||||
firstCandidate.constructor.safeAs<IntersectionTypeConstructor>()?.let { intersectionConstructor ->
|
||||
(firstCandidate.constructor as? IntersectionTypeConstructor)?.let { intersectionConstructor ->
|
||||
val intersectionTypeWithAlternative = intersectionConstructor.setAlternative(secondCandidate).createType()
|
||||
return if (firstCandidate.isMarkedNullable) intersectionTypeWithAlternative.makeNullableAsSpecified(true)
|
||||
else intersectionTypeWithAlternative
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.types.TypeProjection
|
||||
import org.jetbrains.kotlin.types.isError
|
||||
import org.jetbrains.kotlin.types.typeUtil.contains
|
||||
import org.jetbrains.kotlin.types.typeUtil.isUnresolvedType
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||
|
||||
object ErrorUtils {
|
||||
val errorModule: ModuleDescriptor = ErrorModuleDescriptor
|
||||
@@ -110,6 +109,6 @@ object ErrorUtils {
|
||||
|
||||
fun unresolvedTypeAsItIs(type: KotlinType): String {
|
||||
assert(isUnresolvedType(type))
|
||||
return type.constructor.cast<ErrorTypeConstructor>().getParam(0)
|
||||
return (type.constructor as ErrorTypeConstructor).getParam(0)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,6 @@ import org.jetbrains.kotlin.util.OperatorNameConventions.SIMPLE_UNARY_OPERATION_
|
||||
import org.jetbrains.kotlin.util.ReturnsCheck.*
|
||||
import org.jetbrains.kotlin.util.ValueParameterCountCheck.NoValueParameters
|
||||
import org.jetbrains.kotlin.util.ValueParameterCountCheck.SingleValueParameter
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
sealed class CheckResult(val isSuccess: Boolean) {
|
||||
class IllegalSignature(val error: String) : CheckResult(false)
|
||||
@@ -241,8 +240,7 @@ object OperatorChecks : AbstractModifierChecks() {
|
||||
|
||||
val potentialActualAliasId = classDescriptor.classId ?: return false
|
||||
val actualReceiverTypeAlias =
|
||||
classDescriptor.module.findClassifierAcrossModuleDependencies(potentialActualAliasId).safeAs<TypeAliasDescriptor>()
|
||||
?: return false
|
||||
classDescriptor.module.findClassifierAcrossModuleDependencies(potentialActualAliasId) as? TypeAliasDescriptor ?: return false
|
||||
|
||||
returnType?.let { returnType ->
|
||||
return returnType.isSubtypeOf(actualReceiverTypeAlias.expandedType)
|
||||
|
||||
+1
-2
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.error.ErrorUtils
|
||||
import org.jetbrains.kotlin.types.error.ErrorTypeKind
|
||||
import org.jetbrains.kotlin.types.typeUtil.builtIns
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import java.util.*
|
||||
|
||||
private val EXPERIMENTAL_CONTINUATION_FQ_NAME = FqName("kotlin.coroutines.experimental.Continuation")
|
||||
@@ -232,7 +231,7 @@ class TypeDeserializer(
|
||||
val suspendReturnType = continuationArgumentType.arguments.single().type
|
||||
|
||||
// Load kotlin.suspend as accepting and returning suspend function type independent of its version requirement
|
||||
if (c.containingDeclaration.safeAs<CallableDescriptor>()?.fqNameOrNull() == KOTLIN_SUSPEND_BUILT_IN_FUNCTION_FQ_NAME) {
|
||||
if ((c.containingDeclaration as? CallableDescriptor)?.fqNameOrNull() == KOTLIN_SUSPEND_BUILT_IN_FUNCTION_FQ_NAME) {
|
||||
return createSimpleSuspendFunctionType(funType, suspendReturnType)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.descriptors.runtime.components.ReflectKotlinClass
|
||||
import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import kotlin.jvm.internal.TypeParameterReference
|
||||
import kotlin.reflect.KType
|
||||
import kotlin.reflect.KTypeParameter
|
||||
@@ -74,9 +73,11 @@ internal class KTypeParameterImpl(
|
||||
toJavaClass()?.kotlin as KClassImpl<*>?
|
||||
?: throw KotlinReflectionInternalError("Type parameter container is not resolved: $containingDeclaration")
|
||||
|
||||
private fun DeserializedMemberDescriptor.getContainerClass(): Class<*> =
|
||||
containerSource.safeAs<JvmPackagePartSource>()?.knownJvmBinaryClass.safeAs<ReflectKotlinClass>()?.klass
|
||||
private fun DeserializedMemberDescriptor.getContainerClass(): Class<*> {
|
||||
val jvmPackagePartSource = containerSource as? JvmPackagePartSource
|
||||
return (jvmPackagePartSource?.knownJvmBinaryClass as? ReflectKotlinClass)?.klass
|
||||
?: throw KotlinReflectionInternalError("Container of deserialized member is not resolved: $this")
|
||||
}
|
||||
|
||||
override fun equals(other: Any?) =
|
||||
other is KTypeParameterImpl && container == other.container && name == other.name
|
||||
|
||||
Reference in New Issue
Block a user