private def apply()

in rsc/src/main/scala/rsc/outline/Outliner.scala [139:196]


  private def apply(env: Env, sketch: Sketch, tpt: Tpt): Unit = {
    tpt match {
      case TptApply(fun, targs) =>
        apply(env, sketch, fun)
        targs.foreach(apply(env, sketch, _))
      case TptArray(tpt) =>
        apply(env, sketch, tpt)
      case TptAnnotate(tpt, mods) =>
        apply(env, sketch, tpt)
        mods.annots.foreach(annot => apply(env, sketch, annot.init.tpt))
      case TptByName(tpt) =>
        apply(env, sketch, tpt)
      case existentialTpt @ TptExistential(tpt, stats) =>
        val existentialScope = symtab.scopes(existentialTpt)
        val existentialEnv = existentialScope :: env
        apply(existentialEnv, sketch, tpt)
      case TptIntersect(tpts) =>
        tpts.foreach(apply(env, sketch, _))
      case tpt: TptLit =>
        ()
      case tpt: TptPath =>
        val resolution = {
          tpt match {
            case TptProject(qual @ TptRefine(None, _), id) =>
              apply(env, sketch, qual)
              val env1 = Env(env.root, List(symtab.scopes(qual)))
              resolveSym(env1, id)
            case _ =>
              resolveSym(env, tpt)
          }
        }
        resolution match {
          case BlockedResolution(dep) =>
            if (sketch.status.isPending) sketch.block(dep)
            else ()
          case _: FailedResolution =>
            if (sketch.status.isPending) sketch.fail()
            else ()
          case _: ResolvedSymbol =>
            ()
        }
      case tpt: TptPrimitive =>
        ()
      case refineTpt @ TptRefine(tpt, stats) =>
        val refineScope = symtab.scopes(refineTpt)
        val refineEnv = refineScope :: env
        tpt.foreach(apply(refineEnv, sketch, _))
      case TptRepeat(tpt) =>
        apply(env, sketch, tpt)
      case TptWildcard(ubound, lbound) =>
        ubound.foreach(apply(env, sketch, _))
        lbound.foreach(apply(env, sketch, _))
      case TptWildcardExistential(_, tpt) =>
        apply(env, sketch, tpt)
      case TptWith(tpts) =>
        tpts.foreach(apply(env, sketch, _))
    }
  }