[PATCH] D30170: Function definition may have uninstantiated body
Kim Gräsman via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 13 13:34:09 PDT 2018
On Wed, Feb 28, 2018 at 8:21 PM, Richard Smith - zygoloid via
Phabricator via cfe-commits <cfe-commits at lists.llvm.org> wrote:
> ================
> Comment at: lib/Sema/SemaDecl.cpp:11986
> + !FD->isDefined(Definition)
> + && FD->getDeclContext()->isFileContext()) {
> + // If this is a friend function defined in a class template, it does not
> ----------------
> `&&` on the end of the previous line, please.
>
> If the intent here is to detect non-member functions, using `!FD->isCXXClassMember()` or `!isa<CXXMethodDecl>(FD)` would be clearer.
I just recently did something like this and finally settled on
`FD->getKind() == Decl::Function`. `FunctionDecl` now has two derived
types, `CXXMethodDecl` and `CXXDeductionGuideDecl`, so the negation on
`CXXMethodDecl` is no longer strictly enough.
I think it would be nice if `FunctionDecl` had an
`isNonMemberFunction()` (or whatever the formal term is) that did the
above-mentioned check for kind equality.
For what it's worth,
- Kim
More information about the cfe-commits
mailing list