[cfe-dev] Lexical vs Semantic DeclContext

Vassil Vassilev vasil.georgiev.vasilev at cern.ch
Tue Jun 26 09:19:12 PDT 2012


Hi,
   Clang internals manual says:
   "Each declaration has two potentially different declaration contexts: 
a /lexical/ context, which corresponds to the source-centric view of the 
declaration context, and a /semantic/ context, which corresponds to the 
semantics-centric view."

   When debugging the code snippet:
   enum E {e1 = -12}
   In the debugger I see:
#1  0x00007ffff60cd4cb in clang::Sema::ActOnEnumConstant (this=0x44e6b0, 
S=0x4099c0, theEnumDecl=0x4e5a70, lastEnumConst=0x0, IdLoc=..., 
Id=0x46a240, Attr=0x0, EqualLoc=...,
     Val=0x4e5b40) at 
/home/vvassilev/workspace/llvm/src/tools/clang/lib/Sema/SemaDecl.cpp:10229
10229        PushOnScopeChains(New, S);
(gdb) p New
$99 = (clang::EnumConstantDecl *) 0x4e5b60
(gdb) p New->getDeclContext ()
$100 = (clang::DeclContext *) *0x4e5aa8*
(gdb) p New->getLexicalDeclContext ()
$101 = (clang::DeclContext *) *0x4e5aa8*

  I would expect the lexical and the semantic DeclContext to be 
different since "E" is transparent context. Could somebody explain why 
is that? Is that expected?

Vassil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120626/9eb08ba3/attachment.html>


More information about the cfe-dev mailing list