FIR checker: report tailrec problems on the keyword

FE1.0 reports it on the declaration signature. This is not ideal so we
move it to the `tailrec` keyword in FIR.
This commit is contained in:
Tianyu Geng
2021-09-23 20:34:27 -07:00
committed by teamcityserver
parent 922ae607f6
commit 5252effb10
26 changed files with 86 additions and 74 deletions
@@ -821,8 +821,8 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
// TODO: replace with KtParameter
val CANNOT_INFER_PARAMETER_TYPE by error<KtElement>()
val NO_TAIL_CALLS_FOUND by warning<KtNamedFunction>(PositioningStrategy.DECLARATION_SIGNATURE)
val TAILREC_ON_VIRTUAL_MEMBER_ERROR by error<KtNamedFunction>(PositioningStrategy.DECLARATION_SIGNATURE)
val NO_TAIL_CALLS_FOUND by warning<KtNamedFunction>(PositioningStrategy.TAILREC_MODIFIER)
val TAILREC_ON_VIRTUAL_MEMBER_ERROR by error<KtNamedFunction>(PositioningStrategy.TAILREC_MODIFIER)
val NON_TAIL_RECURSIVE_CALL by warning<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED)
val TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED by warning<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED)
}
@@ -107,6 +107,7 @@ enum class PositioningStrategy(private val strategy: String? = null) {
NON_FINAL_MODIFIER_OR_NAME,
ENUM_MODIFIER,
FIELD_KEYWORD,
TAILREC_MODIFIER,
;