<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
<p class="MsoNormal" style="font-family: Tahoma; font-size: 10pt; "><br></p><p class="MsoNormal"><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">Dear Clang developers, I am experimenting with “poor man’s deep const” in C++.</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">I have the following C++ code:</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2"> </font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">    #define immutable const</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">    struct CC { immutable int myInt; };</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2"> </font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">I would like to use Clang to check if the type qualifier source code reads “const” or “immutable”.</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">I am able to retrieve the clang::FieldDecl and it’s QualType.</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">Is it possible, given my fieldDecl, to retrieve it’s DeclSpec?</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">If I had a DeclSpec, I would then call DeclSpec::getConstSpecLoc() and retrieve the source code at that location.</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2"><br></font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">Here are two of the approaches I already tried:</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">1) called fieldDecl->getSourceRange(); but that returns range only for "int myInt"</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">2) retrieved my field's TypeLoc and cast it to a QualifiedTypeLoc.</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">But, as the header file warns, the QualifiedTypeLoc does not have valid SourceRange data.</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2"><br></font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">Any ideas?</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2"><br></font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">Thanks for your advice,</font></p><p class="MsoNormal"><font class="Apple-style-span" face="Tahoma" size="2">Jiri</font></p></p>                                         </div></body>
</html>