[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