sammccall added inline comments.
================ Comment at: clangd/JSONExpr.h:62 +// Array and Object also have typed indexing accessors for easy traversal: +// if (json::obj* Opts = O.array("options")) +// if (Optional<StringRef> Font = Opts->string("font")) ---------------- ioeric wrote: > It's not obvious what `O.array("options")` does. Does it convert > `O.at("options")` to an array? Yes. Added a bit more context here. ================ Comment at: clangd/JSONExpr.h:78 public: - class Object; + enum Kind { + Null, ---------------- ioeric wrote: > I wonder if we could merge `Kind` and `ExprType`. As discussed offline, the conceptual difference is public API vs internal implementation. If there was no difference in practice, YAGNI, but we have String->{T_String, T_StringRef}. So either we need two enums or some hidden internal state which helps us distinguish. The latter seems more error prone to me (e.g. no help from -Wswitch). So I prefer the current way overall, though it's not a really big deal. https://reviews.llvm.org/D40182 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits