bool VisitObjCPropertyImplDecl()

in glean/lang/clang/ast.cpp [1804:1830]


  bool VisitObjCPropertyImplDecl(const clang::ObjCPropertyImplDecl *decl) {
    if (decl->getSourceRange().isValid()) {
      if (auto r = objcPropertyDecls(decl->getPropertyDecl())) {
        // TODO: remove?
        folly::Optional<Fact<Cxx::Name>> name;
        if (decl->isIvarNameSpecified()) {
          name = db.name(decl->getPropertyIvarDecl()->getName());
        }

        if (auto ivar = decl->getPropertyIvarDecl()) {
          if (auto s = varDecls(ivar)) {
            db.fact<Cxx::ObjcPropertyIVar>(r->decl, s->decl);
          }
        }

        db.fact<Cxx::ObjcPropertyImplementation>(
          r->decl,
          decl->getPropertyImplementation()
            == clang::ObjCPropertyImplDecl::Synthesize
            ? Cxx::ObjcPropertyKind::Synthesize
            : Cxx::ObjcPropertyKind::Dynamic,
          maybe(name),
          db.srcRange(decl->getSourceRange()).range);
      }
    }
    return true;
  }