private def overridesNonNullary()

in rsc/src/main/scala/rsc/semanticdb/Params.scala [34:82]


  private def overridesNonNullary(tree: DefnMethod, scope: Scope): Boolean = {
    val parents = scope match {
      case scope: TemplateScope =>
        scope.parents
      case scope: SignatureScope =>
        val syms = scope.signature.parents.collect { case s.TypeRef(_, sym, _) => sym }.toList
        syms.map(sym => symtab.scopes(sym))
      case _ =>
        crash(scope)
    }
    parents.exists { parent =>
      parent.resolve(tree.id.name) match {
        case ResolvedSymbol(baseSym) =>
          baseSym.asMulti.exists { baseSym =>
            symtab.metadata(baseSym) match {
              case OutlineMetadata(baseOutline: DefnMethod) =>
                baseOutline.desugaredParamss match {
                  case List() => false
                  case List(List()) => true
                  case _ => overridesNonNullary(tree, parent)
                }
              case ClasspathMetadata(baseInfo) =>
                baseInfo.signature match {
                  case s.MethodSignature(_, paramss, _) =>
                    paramss match {
                      case Seq() => false
                      case Seq(params) if params.symbols.isEmpty =>
                        scope match {
                          case scope: TemplateScope
                              // Best effort approximation; not sure why this is the case
                              if (scope.tree.hasAbstract || scope.tree.mods.hasTrait) &&
                                tree.rhs.isEmpty =>
                            false
                          case _ => true
                        }
                      case _ => overridesNonNullary(tree, parent)
                    }
                  case _ =>
                    false
                }
              case _ =>
                false
            }
          }
        case _ =>
          false
      }
    }
  }