NI: Clean things around hasOnlyTrivialProperConstraint
- Get rid of unused val and its initialization - Use a bit clearer naming - Simplify the definition of `allConstraintsTrivialOrNonProper`
This commit is contained in:
committed by
Space Team
parent
ce0a41fc69
commit
90fcf086bb
+4
-8
@@ -45,7 +45,6 @@ class VariableFixationFinder(
|
|||||||
data class VariableForFixation(
|
data class VariableForFixation(
|
||||||
val variable: TypeConstructorMarker,
|
val variable: TypeConstructorMarker,
|
||||||
val hasProperConstraint: Boolean,
|
val hasProperConstraint: Boolean,
|
||||||
val hasOnlyTrivialProperConstraint: Boolean = false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
fun findFirstVariableForFixation(
|
fun findFirstVariableForFixation(
|
||||||
@@ -61,7 +60,7 @@ class VariableFixationFinder(
|
|||||||
WITHOUT_PROPER_ARGUMENT_CONSTRAINT, // proper constraint from arguments -- not from upper bound for type parameters
|
WITHOUT_PROPER_ARGUMENT_CONSTRAINT, // proper constraint from arguments -- not from upper bound for type parameters
|
||||||
READY_FOR_FIXATION_DECLARED_UPPER_BOUND_WITH_SELF_TYPES,
|
READY_FOR_FIXATION_DECLARED_UPPER_BOUND_WITH_SELF_TYPES,
|
||||||
WITH_COMPLEX_DEPENDENCY, // if type variable T has constraint with non fixed type variable inside (non-top-level): T <: Foo<S>
|
WITH_COMPLEX_DEPENDENCY, // if type variable T has constraint with non fixed type variable inside (non-top-level): T <: Foo<S>
|
||||||
WITH_TRIVIAL_OR_NON_PROPER_CONSTRAINTS, // proper trivial constraint from arguments, Nothing <: T
|
ALL_CONSTRAINTS_TRIVIAL_OR_NON_PROPER, // proper trivial constraint from arguments, Nothing <: T
|
||||||
RELATED_TO_ANY_OUTPUT_TYPE,
|
RELATED_TO_ANY_OUTPUT_TYPE,
|
||||||
FROM_INCORPORATION_OF_DECLARED_UPPER_BOUND,
|
FROM_INCORPORATION_OF_DECLARED_UPPER_BOUND,
|
||||||
READY_FOR_FIXATION_UPPER,
|
READY_FOR_FIXATION_UPPER,
|
||||||
@@ -87,7 +86,7 @@ class VariableFixationFinder(
|
|||||||
TypeVariableFixationReadiness.READY_FOR_FIXATION_DECLARED_UPPER_BOUND_WITH_SELF_TYPES
|
TypeVariableFixationReadiness.READY_FOR_FIXATION_DECLARED_UPPER_BOUND_WITH_SELF_TYPES
|
||||||
!variableHasProperArgumentConstraints(variable) -> TypeVariableFixationReadiness.WITHOUT_PROPER_ARGUMENT_CONSTRAINT
|
!variableHasProperArgumentConstraints(variable) -> TypeVariableFixationReadiness.WITHOUT_PROPER_ARGUMENT_CONSTRAINT
|
||||||
hasDependencyToOtherTypeVariables(variable) -> TypeVariableFixationReadiness.WITH_COMPLEX_DEPENDENCY
|
hasDependencyToOtherTypeVariables(variable) -> TypeVariableFixationReadiness.WITH_COMPLEX_DEPENDENCY
|
||||||
variableHasTrivialOrNonProperConstraints(variable) -> TypeVariableFixationReadiness.WITH_TRIVIAL_OR_NON_PROPER_CONSTRAINTS
|
allConstraintsTrivialOrNonProper(variable) -> TypeVariableFixationReadiness.ALL_CONSTRAINTS_TRIVIAL_OR_NON_PROPER
|
||||||
dependencyProvider.isVariableRelatedToAnyOutputType(variable) -> TypeVariableFixationReadiness.RELATED_TO_ANY_OUTPUT_TYPE
|
dependencyProvider.isVariableRelatedToAnyOutputType(variable) -> TypeVariableFixationReadiness.RELATED_TO_ANY_OUTPUT_TYPE
|
||||||
variableHasOnlyIncorporatedConstraintsFromDeclaredUpperBound(variable) ->
|
variableHasOnlyIncorporatedConstraintsFromDeclaredUpperBound(variable) ->
|
||||||
TypeVariableFixationReadiness.FROM_INCORPORATION_OF_DECLARED_UPPER_BOUND
|
TypeVariableFixationReadiness.FROM_INCORPORATION_OF_DECLARED_UPPER_BOUND
|
||||||
@@ -131,10 +130,9 @@ class VariableFixationFinder(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Context.variableHasTrivialOrNonProperConstraints(variable: TypeConstructorMarker): Boolean {
|
private fun Context.allConstraintsTrivialOrNonProper(variable: TypeConstructorMarker): Boolean {
|
||||||
return notFixedTypeVariables[variable]?.constraints?.all { constraint ->
|
return notFixedTypeVariables[variable]?.constraints?.all { constraint ->
|
||||||
val isProperConstraint = isProperArgumentConstraint(constraint)
|
trivialConstraintTypeInferenceOracle.isNotInterestingConstraint(constraint) || !isProperArgumentConstraint(constraint)
|
||||||
isProperConstraint && trivialConstraintTypeInferenceOracle.isNotInterestingConstraint(constraint) || !isProperConstraint
|
|
||||||
} ?: false
|
} ?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,8 +160,6 @@ class VariableFixationFinder(
|
|||||||
return when (getTypeVariableReadiness(candidate, dependencyProvider)) {
|
return when (getTypeVariableReadiness(candidate, dependencyProvider)) {
|
||||||
TypeVariableFixationReadiness.FORBIDDEN -> null
|
TypeVariableFixationReadiness.FORBIDDEN -> null
|
||||||
TypeVariableFixationReadiness.WITHOUT_PROPER_ARGUMENT_CONSTRAINT -> VariableForFixation(candidate, false)
|
TypeVariableFixationReadiness.WITHOUT_PROPER_ARGUMENT_CONSTRAINT -> VariableForFixation(candidate, false)
|
||||||
TypeVariableFixationReadiness.WITH_TRIVIAL_OR_NON_PROPER_CONSTRAINTS ->
|
|
||||||
VariableForFixation(candidate, hasProperConstraint = true, hasOnlyTrivialProperConstraint = true)
|
|
||||||
|
|
||||||
else -> VariableForFixation(candidate, true)
|
else -> VariableForFixation(candidate, true)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user