aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/Decl.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2010-02-01 20:16:42 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2010-02-01 20:16:42 +0000
commit31310a21fb2a9f13950f864f681c86080b05d5b2 (patch)
tree38d3c90c066260cc56b899305d21f9c702b3e74f /lib/AST/Decl.cpp
parent21b91a35fb95d7a8b5bdc8634ff8f2231e4d0a1c (diff)
In C++, an initializer on a variable doesn't necessarily mean it's the definition. With that in mind, rename getDefinition to getAnyInitializer (to distinguish it from getInit) and reimplement it in terms of isThisDeclarationADefinition. Update all code to use this new function.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94999 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Decl.cpp')
-rw-r--r--lib/AST/Decl.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index d75d355fdc..894206a847 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -522,10 +522,6 @@ VarDecl::DefinitionKind VarDecl::isThisDeclarationADefinition() const {
return Definition;
}
-const VarDecl *VarDecl::getActingDefinition() const {
- return const_cast<VarDecl*>(this)->getActingDefinition();
-}
-
VarDecl *VarDecl::getActingDefinition() {
DefinitionKind Kind = isThisDeclarationADefinition();
if (Kind != TentativeDefinition)
@@ -553,16 +549,24 @@ bool VarDecl::isTentativeDefinitionNow() const {
if ((*I)->isThisDeclarationADefinition() == Definition)
return false;
}
- return true;
+ return true;
+}
+
+VarDecl *VarDecl::getDefinition() {
+ for (redecl_iterator I = redecls_begin(), E = redecls_end(); I != E; ++I) {
+ if ((*I)->isThisDeclarationADefinition() == Definition)
+ return *I;
+ }
+ return 0;
}
-const Expr *VarDecl::getDefinition(const VarDecl *&Def) const {
+const Expr *VarDecl::getAnyInitializer(const VarDecl *&D) const {
redecl_iterator I = redecls_begin(), E = redecls_end();
while (I != E && !I->getInit())
++I;
if (I != E) {
- Def = *I;
+ D = *I;
return I->getInit();
}
return 0;