override fun visitElement()

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)
                }
            }