summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/AST/Decl.h36
-rw-r--r--clang/include/clang/AST/DeclBase.h11
-rw-r--r--clang/include/clang/AST/DeclObjC.h18
-rw-r--r--clang/include/clang/AST/Redeclarable.h7
-rw-r--r--clang/lib/AST/DeclBase.cpp14
5 files changed, 34 insertions, 52 deletions
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index c4451e73cdc..d20fd689d13 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -1850,9 +1850,7 @@ public:
param_iterator param_end() {
return param_iterator(ParamInfo + param_size());
}
- param_range params() {
- return param_range(ParamInfo, ParamInfo + param_size());
- }
+ param_range params() { return param_range(param_begin(), param_end()); }
param_const_iterator param_begin() const {
return param_const_iterator(ParamInfo);
@@ -1861,7 +1859,7 @@ public:
return param_const_iterator(ParamInfo + param_size());
}
param_const_range params() const {
- return param_const_range(ParamInfo, ParamInfo + param_size());
+ return param_const_range(param_begin(), param_end());
}
/// getNumParams - Return the number of parameters this function must have
@@ -2339,11 +2337,11 @@ public:
typedef NamedDecl * const *chain_iterator;
typedef llvm::iterator_range<chain_iterator> chain_range;
- chain_range chain() const {
- return chain_range(Chaining, Chaining + ChainingSize);
+ chain_range chain() const { return chain_range(chain_begin(), chain_end()); }
+ chain_iterator chain_begin() const { return chain_iterator(Chaining); }
+ chain_iterator chain_end() const {
+ return chain_iterator(Chaining + ChainingSize);
}
- chain_iterator chain_begin() const { return chain().begin(); }
- chain_iterator chain_end() const { return chain().end(); }
unsigned getChainingSize() const { return ChainingSize; }
@@ -3312,17 +3310,21 @@ public:
}
bool param_empty() const { return NumParams == 0; }
- param_range params() {
- return param_range(ParamInfo, ParamInfo + param_size());
+ param_range params() { return param_range(param_begin(), param_end()); }
+ param_iterator param_begin() { return param_iterator(ParamInfo); }
+ param_iterator param_end() {
+ return param_iterator(ParamInfo + param_size());
}
- param_iterator param_begin() { return params().begin(); }
- param_iterator param_end() { return params().end(); }
param_const_range params() const {
- return param_const_range(ParamInfo, ParamInfo + param_size());
+ return param_const_range(param_begin(), param_end());
+ }
+ param_const_iterator param_begin() const {
+ return param_const_iterator(ParamInfo);
+ }
+ param_const_iterator param_end() const {
+ return param_const_iterator(ParamInfo + param_size());
}
- param_const_iterator param_begin() const { return params().begin(); }
- param_const_iterator param_end() const { return params().end(); }
unsigned getNumParams() const { return NumParams; }
const ParmVarDecl *getParamDecl(unsigned i) const {
@@ -3439,9 +3441,7 @@ public:
param_iterator param_end() const { return getParams() + NumParams; }
/// \brief Retrieve an iterator range for the parameter declarations.
- param_range params() const {
- return param_range(getParams(), getParams() + NumParams);
- }
+ param_range params() const { return param_range(param_begin(), param_end()); }
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
diff --git a/clang/include/clang/AST/DeclBase.h b/clang/include/clang/AST/DeclBase.h
index 4139e28afef..4fb7cd10a40 100644
--- a/clang/include/clang/AST/DeclBase.h
+++ b/clang/include/clang/AST/DeclBase.h
@@ -776,8 +776,7 @@ public:
/// \brief Returns an iterator range for all the redeclarations of the same
/// decl. It will iterate at least once (when this decl is the only one).
redecl_range redecls() const {
- return redecl_range(redecl_iterator(const_cast<Decl *>(this)),
- redecl_iterator());
+ return redecl_range(redecls_begin(), redecls_end());
}
redecl_iterator redecls_begin() const {
@@ -1312,7 +1311,7 @@ public:
/// decls_begin/decls_end - Iterate over the declarations stored in
/// this context.
- decl_range decls() const;
+ decl_range decls() const { return decl_range(decls_begin(), decls_end()); }
decl_iterator decls_begin() const;
decl_iterator decls_end() const { return decl_iterator(); }
bool decls_empty() const;
@@ -1320,8 +1319,10 @@ public:
/// noload_decls_begin/end - Iterate over the declarations stored in this
/// context that are currently loaded; don't attempt to retrieve anything
/// from an external source.
- decl_range noload_decls() const;
- decl_iterator noload_decls_begin() const;
+ decl_range noload_decls() const {
+ return decl_range(noload_decls_begin(), noload_decls_end());
+ }
+ decl_iterator noload_decls_begin() const { return decl_iterator(FirstDecl); }
decl_iterator noload_decls_end() const { return decl_iterator(); }
/// specific_decl_iterator - Iterates over a subrange of
diff --git a/clang/include/clang/AST/DeclObjC.h b/clang/include/clang/AST/DeclObjC.h
index 6948443d8d3..c46c1a9ed8d 100644
--- a/clang/include/clang/AST/DeclObjC.h
+++ b/clang/include/clang/AST/DeclObjC.h
@@ -345,11 +345,9 @@ public:
typedef llvm::iterator_range<param_iterator> param_range;
typedef llvm::iterator_range<param_const_iterator> param_const_range;
- param_range params() {
- return param_range(getParams(), getParams() + NumParams);
- }
+ param_range params() { return param_range(param_begin(), param_end()); }
param_const_range params() const {
- return param_const_range(getParams(), getParams() + NumParams);
+ return param_const_range(param_begin(), param_end());
}
param_const_iterator param_begin() const {
@@ -1277,9 +1275,9 @@ public:
bool RHSIsQualifiedID = false);
typedef redeclarable_base::redecl_range redecl_range;
- typedef redeclarable_base::redecl_iterator redecl_iterator;
- using redeclarable_base::redecls_begin;
- using redeclarable_base::redecls_end;
+ typedef redeclarable_base::redecl_iterator redecl_iterator;
+ using redeclarable_base::redecls_begin;
+ using redeclarable_base::redecls_end;
using redeclarable_base::redecls;
using redeclarable_base::getPreviousDecl;
using redeclarable_base::getMostRecentDecl;
@@ -1586,9 +1584,9 @@ public:
}
typedef redeclarable_base::redecl_range redecl_range;
- typedef redeclarable_base::redecl_iterator redecl_iterator;
- using redeclarable_base::redecls_begin;
- using redeclarable_base::redecls_end;
+ typedef redeclarable_base::redecl_iterator redecl_iterator;
+ using redeclarable_base::redecls_begin;
+ using redeclarable_base::redecls_end;
using redeclarable_base::redecls;
using redeclarable_base::getPreviousDecl;
using redeclarable_base::getMostRecentDecl;
diff --git a/clang/include/clang/AST/Redeclarable.h b/clang/include/clang/AST/Redeclarable.h
index 25b81c2a807..1170eda819c 100644
--- a/clang/include/clang/AST/Redeclarable.h
+++ b/clang/include/clang/AST/Redeclarable.h
@@ -171,11 +171,8 @@ public:
redecl_iterator());
}
- redecl_iterator redecls_begin() const {
- return redecl_iterator(
- const_cast<decl_type *>(static_cast<const decl_type *>(this)));
- }
- redecl_iterator redecls_end() const { return redecl_iterator(); }
+ redecl_iterator redecls_begin() const { return redecls().begin(); }
+ redecl_iterator redecls_end() const { return redecls().end(); }
friend class ASTDeclReader;
friend class ASTDeclWriter;
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index 5797e554a3c..97434c2e957 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -1076,20 +1076,6 @@ ExternalASTSource::SetExternalVisibleDeclsForName(const DeclContext *DC,
return List.getLookupResult();
}
-DeclContext::decl_range DeclContext::noload_decls() const {
- return decl_range(decl_iterator(FirstDecl), decl_iterator());
-}
-
-DeclContext::decl_iterator DeclContext::noload_decls_begin() const {
- return decl_iterator(FirstDecl);
-}
-
-DeclContext::decl_range DeclContext::decls() const {
- if (hasExternalLexicalStorage())
- LoadLexicalDeclsFromExternalStorage();
- return decl_range(decl_iterator(FirstDecl), decl_iterator());
-}
-
DeclContext::decl_iterator DeclContext::decls_begin() const {
if (hasExternalLexicalStorage())
LoadLexicalDeclsFromExternalStorage();
OpenPOWER on IntegriCloud