[Frontend] Treat function with skipped body as definition

Summary:
This fixes an invalid warning about missing definition of a function when
parsing with SkipFunctionBodies=true

Reviewers: bkramer, sepavloff

Reviewed By: sepavloff

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D41189

llvm-svn: 320696
This commit is contained in:
Ilya Biryukov 2017-12-14 13:00:33 +00:00
parent a2d4607a4b
commit bf484aa0f1
2 changed files with 11 additions and 2 deletions

View File

@ -1967,8 +1967,8 @@ public:
/// This does not determine whether the function has been defined (e.g., in a
/// previous definition); for that information, use isDefined.
bool isThisDeclarationADefinition() const {
return IsDeleted || IsDefaulted || Body || IsLateTemplateParsed ||
WillHaveBody || hasDefiningAttr();
return IsDeleted || IsDefaulted || Body || HasSkippedBody ||
IsLateTemplateParsed || WillHaveBody || hasDefiningAttr();
}
/// doesThisDeclarationHaveABody - Returns whether this specific

View File

@ -0,0 +1,9 @@
// RUN: env CINDEXTEST_SKIP_FUNCTION_BODIES=1 c-index-test -test-load-source all %s 2>&1 \
// RUN: | FileCheck %s
inline int with_body() { return 10; }
inline int without_body();
int x = with_body() + without_body();
// CHECK: warning: inline function 'without_body' is not defined
// CHECK-NOT: warning: inline function 'with_body' is not defined