diff options
| author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-02-01 20:16:42 +0000 |
|---|---|---|
| committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-02-01 20:16:42 +0000 |
| commit | 5ca7984bb4fe32623d40a7f1cd9691eb21eb3560 (patch) | |
| tree | 4d37fae6578972f9b67ea61d617bffc1c0a1c317 /clang/lib/AST/Decl.cpp | |
| parent | b18093e4675655be85226f03aeaba2081c09ddf5 (diff) | |
| download | bcm5719-llvm-5ca7984bb4fe32623d40a7f1cd9691eb21eb3560.tar.gz bcm5719-llvm-5ca7984bb4fe32623d40a7f1cd9691eb21eb3560.zip | |
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.
llvm-svn: 94999
Diffstat (limited to 'clang/lib/AST/Decl.cpp')
| -rw-r--r-- | clang/lib/AST/Decl.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp index d75d355fdcf..894206a8471 100644 --- a/clang/lib/AST/Decl.cpp +++ b/clang/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; |

