<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 28 March 2018 at 17:27, George Karpenkov via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I am trying to support c++17 structured bindings in the static analyzer, and I was really surprised to learn there is no reasonable way to find a<br>
DecompositionDecl from a BindingDecl (that is often necessary because DecompositionDecl often is the only available VarDecl).<br>
Shouldn’t getParentContext() be usable here?<br>
Any clues for how this can be solved apart from preprocessing and populating parent pointers?</blockquote><div><br></div><div>getParentContext() doesn't seem appropriate to me, because a DecompositionDecl is not really a DeclContext in any normal sense -- it doesn't "contain" other declarations, in the same way that in "struct X {} x;", the declaration of "x" does not "contain" the declaration of "struct X". Rather, we have a syntactic construct that happens to declare multiple related things at once. Can you say more about why the static analyzer might want to map from a BindingDecl to a DecompositionDecl? BindingDecls should generally just be treated wrappers around some lvalue expression.</div></div></div></div>