<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I am looking at some debug information for the following code:<div class=""><br class=""></div><div class=""><div class=""><font face="Menlo" class="">int main (int argc, char const *argv[])</font></div><div class=""><font face="Menlo" class="">{</font></div><div class=""><font face="Menlo" class="">    struct point_tag {</font></div><div class=""><font face="Menlo" class="">        int x;</font></div><div class=""><font face="Menlo" class="">        int y;</font></div><div class=""><font face="Menlo" class="">        char padding[0];</font></div><div class=""><font face="Menlo" class="">    };</font></div></div><div class=""><font face="Menlo" class="">…</font></div><div class=""><br class=""></div><div class="">LLDB has constructed the struct like this:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" class="">(lldb) p ((TagDecl*)0x1102eed78)->dump()</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">CXXRecordDecl 0x1102eed78 <<invalid sloc>> <invalid sloc> struct point_tag definition</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">|-FieldDecl 0x1102eeeb8 <<invalid sloc>> <invalid sloc> x 'int'</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">|-FieldDecl 0x1102eef00 <<invalid sloc>> <invalid sloc> y 'int'</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">`-FieldDecl 0x1102eef78 <<invalid sloc>> <invalid sloc> padding 'char []'</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">(lldb) p ((TagDecl*)0x1102eed78)->getContext()</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">error: no member named 'getContext' in 'clang::TagDecl'</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">(lldb) p ((TagDecl*)0x1102eed78)->getDeclContext()</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">(clang::DeclContext *) $22 = 0x00000001102eed10</font></span></div></div><div style="margin: 0px; font-size: 10px; line-height: normal; font-family: 'Anonymous Pro';" class=""><br class=""></div><div style="margin: 0px; font-size: 10px; line-height: normal; font-family: 'Anonymous Pro';" class=""><span style="font-family: Helvetica; font-size: 12px;" class="">But the context doesn't have a body.</span></div><div style="margin: 0px; line-height: normal;" class=""><br class=""></div><div style="margin: 0px; line-height: normal;" class=""><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><font face="Menlo" class="">(lldb) p ((FunctionDecl*)$22)</font></span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class=""><font face="Menlo" class="">(clang::FunctionDecl *) $23 = 0x00000001102eecd0</font></span></div></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="font-family: Menlo; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">(lldb) p $23->dump()</span></div><div style="font-family: Menlo; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">FunctionDecl 0x1102eecd0 <<invalid sloc>> <invalid sloc> main 'int (int, const char **)' extern</span></div><div style="font-family: Menlo; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">|-ParmVarDecl 0x1102eec10 <<invalid sloc>> <invalid sloc> argc 'int'</span></div><div style="font-family: Menlo; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">`-ParmVarDecl 0x1102eec70 <<invalid sloc>> <invalid sloc> argv 'const char **'</span></div><div style="font-family: Menlo; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">(lldb) p $23->getBody()</span></div><div style="font-family: Menlo; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class="">(clang::Stmt *) $24 = 0x0000000000000000</span></div><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><div style="font-family: 'Anonymous Pro'; margin: 0px; font-size: 10px; line-height: normal;" class=""><span style="font-family: Helvetica; font-size: 12px;" class=""><br class=""></span></div><div style="font-family: 'Anonymous Pro'; margin: 0px; font-size: 10px; line-height: normal;" class=""><span style="font-family: Helvetica; font-size: 12px;" class="">Are these legal ASTs?  It seems like with things set up the way they are, point_tag can't be looked up if you only have the FunctionDecl. </span></div><div style="font-family: 'Anonymous Pro'; margin: 0px; font-size: 10px; line-height: normal;" class=""><span style="font-family: Helvetica; font-size: 12px;" class=""><br class=""></span></div><div style="margin: 0px; line-height: normal;" class="">Sean</div></span></div></span></div></body></html>