in src/main/kotlin/org/arend/inspection/RedundantParensInspection.kt [32:54]
override fun visitElement(element: PsiElement) {
super.visitElement(element)
if (element !is ArendTuple && element !is ArendTypeTele && element !is ArendMaybeAtomLevelExprs) return
if (element is ArendMaybeAtomLevelExprs) {
if (isRedundantParensInArendMaybeAtomLevelExprs(element)) {
registerFix(element)
}
return
}
if (element is ArendTypeTele && !(element.isExplicit && element.referableList == listOf(null))) return
if (element is ArendTuple && element.tupleExprList.size > 1 &&
withAncestors(ArendAtom::class.java, ArendAtomFieldsAcc::class.java, ArendArgumentAppExpr::class.java, ArendNewExpr::class.java, ArendTupleExpr::class.java, ArendImplicitArgument::class.java).accepts(element) &&
element.parentOfType<ArendArgumentAppExpr>()?.children?.size == 1) {
registerFix(element)
return
}
val expression = unwrapParens(element) ?: return
if (expression is ArendArrExpr && withAncestors(ArendAtom::class.java, ArendAtomFieldsAcc::class.java, ArendArgumentAppExpr::class.java, ArendNewExpr::class.java, ArendReturnExpr::class.java, ArendCaseExpr::class.java).accepts(element)) return
if (element is ArendTuple && (neverNeedsParens(expression) || isCommonRedundantParensPattern(element, expression)/* || isApplicationUsedAsBinOpArgument(element, expression)*/) ||
element is ArendTypeTele && typeTeleDoesntNeedParens(expression)) {
registerFix(element)
}
}