private function isUriMappable()

in src/privateimpl/ControllerFacts.hack [42:65]


  private function isUriMappable(
    ScannedClassish $class
  ): bool {
    if (!$class is ScannedClass) {
      return false;
    }
    if ($class->isAbstract()) {
      return false;
    }

    $cf = $this->classFacts;
    if (!$cf->doesImplement(IncludeInUriMap::class, $class->getName())) {
      return false;
    }

    // This is also me being opinionated.
    invariant(
      $class->isFinal(),
      'Classes implementing IncludeInUriMap should be abstract or final; '.
      '%s is neither',
      $class->getName(),
    );
    return true;
  }