Optimize external overridability conditions

- Skip ones that can lead only to success after first success
- And vice versa
This commit is contained in:
Denis Zharkov
2016-02-12 15:42:36 +03:00
parent 1b4b8ab5db
commit 9f22b17918
6 changed files with 52 additions and 10 deletions
@@ -64,4 +64,6 @@ class BuiltinOverridabilityCondition : ExternalOverridabilityCondition {
// incompatible override
return Result.INCOMPATIBLE
}
override fun getContract() = ExternalOverridabilityCondition.Contract.CONFLICTS_ONLY
}
@@ -43,4 +43,6 @@ class ErasedOverridabilityCondition : ExternalOverridabilityCondition {
else -> Result.UNKNOWN
}
}
override fun getContract() = ExternalOverridabilityCondition.Contract.SUCCESS_ONLY
}
@@ -33,4 +33,6 @@ class FieldOverridabilityCondition : ExternalOverridabilityCondition {
return Result.UNKNOWN
}
override fun getContract() = ExternalOverridabilityCondition.Contract.BOTH
}