[cfe-dev] C++ namespaces support

Chris Lattner clattner at apple.com
Tue Mar 25 17:01:11 PDT 2008


On Mar 24, 2008, at 6:20 PM, Argiris Kirtzidis wrote:
> Hi,
> The attached patch adds support for parsing C++ namespaces and  
> resolving name lookups based on them.

Wow, this is really cool!

Two high level thoughts before the details:

+/// NamespaceDecl - Represent a C++ namespace.
+class NamespaceDecl : public ScopedDecl {
+  llvm::SmallVector<ScopedDecl *, 16> Decls;
+  SourceLocation LBracLoc, RBracLoc;
+
+  // The Scope that is associated with this namespace
+  Scope *NSScope;

"Scope" is an artifact of the parser, which is transiently live when  
parsing is happening.  Is it possible to move this to Sema instead of  
being in the AST?


+++ include/clang/Parse/Parser.h	(working copy)
@@ -16,6 +16,7 @@

  #include "clang/Lex/Preprocessor.h"
  #include "clang/Parse/Action.h"
+#include <stack>

  namespace clang {
    class DeclSpec;
@@ -49,6 +50,7 @@
    enum { ScopeCacheSize = 16 };
    unsigned NumCachedScopes;
    Scope *ScopeCache[ScopeCacheSize];
+  std::stack<Scope*> ScopeStack;
  public:

Why do you need an explicit stack of scopes here?  Aren't the current  
scope chains enough?

-Chris



More information about the cfe-dev mailing list