paulkirth added inline comments.
================
Comment at: clang-tools-extra/clang-doc/Serialize.cpp:439
+static void populateMemberTypeInfo(MemberTypeInfo &I, const FieldDecl *D) {
+ ASTContext& Context = D->getASTContext();
+ RawComment *Comment = Context.getRawCommentForDeclNoCache(D);
----------------
brettw wrote:
> paulkirth wrote:
> > I think we need to at least assert that `D != nullptr`. While there is only
> > one caller now, its likely there may be more in the future. Plus `nullptr`
> > is deref is never fun to debug.
> >
> > If getting a `nullptr` is expected to be a common input, then an early
> > return is also fine.
> >
> > If you prefer, a few places in the codebase do both to maintain correct
> > behavior when asserts are disabled. Often they have a form along these
> > lines:
> >
> > ```
> > if(!D){
> > assert(false && "Some error message");
> > return;
> > }
> > ```
> >
> > Any of these would be fine, and I don't have a preference between them.
> >
> I'm fine adding an assert to unblock the review.
>
> But clang-doc is full of pointers and none of them are asserted on. Is this
> one special in some way? To me, it seems weird to assert on this one random
> pointer. Is there some policy about this?
>
> I follow the opposite theory that asserts on null pointers all over the place
> clutter the code and random null parameters are one of the easiest types of
> crashes to debug.
There's nothing special regarding this particular pointer, but such checks are
common in other parts of LLVM.
We use asserts liberally throughout the LLVM codebase
(https://llvm.org/docs/CodingStandards.html#assert-liberally) and asserting
that a pointer is valid is common.
The other thing to keep in mind is that debug builds of LLVM are > 20GB, and
enabling asserts is a more desirable choice for most of our developers. That
probably isn't as bad for clang-doc, but I'd rather err on the side of caution.
While I agree that right now it may be a bit strange to have a single assert,
hopefully overtime the surrounding code will start to use such checks in a way
that is more consistent with the rest of the codebase.
But like I said, an early return is also fine IMO.
================
Comment at: clang-tools-extra/clang-doc/YAMLGenerator.cpp:195
IO.mapOptional("Access", I.Access, clang::AccessSpecifier::AS_none);
+ IO.mapOptional("Description", I.Description);
}
----------------
brettw wrote:
> paulkirth wrote:
> > Can we get a comment describing this?
> I don't think this needs a comment, a substantial part of this file is just
> adding these mappings between YAML keys and field names. The one above it has
> a comment only because of the non-obvious default value. If you feel
> strongly, please let me know what the comment should say.
Now that I see this in context, I agree that it doesn't need a comment.
================
Comment at: clang-tools-extra/unittests/clang-doc/SerializeTest.cpp:197
Method.IsMethod = true;
+
ExpectedRecordWithMethod.ChildFunctions.emplace_back(std::move(Method));
----------------
?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131298/new/
https://reviews.llvm.org/D131298
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits