[cfe-dev] How can I check if the qualifiers of a type has a class in it?
Manasij Mukherjee
manasij7479 at gmail.com
Mon Jun 30 23:26:30 PDT 2014
I have a FunctionDecl while overriding VisitFunctionDecl of ASTVisitor.
I did Decl->getQualifier()->getKind() == NestedNameSpecifier::TypeSpec
But it segfaults in getKind
So, I am probably calling getQualifier from the wrong thing.
Decl->getQualifier() is always returning a null value.
When is a valid qualifier returned?
My input code is:
namespace test { //nested name specifier
class HasSubType {
public:
class SubType {};
};
HasSubType::SubType FunctionUsingSubtype(HasSubType::SubType s){return s;}
extern HasSubType::SubType variable;
HasSubType FunctionNotUsingSubType(HasSubType h){return h;}
}
I want to filter out FunctionUsingSubType and the variable.
Thanks
On Tue, Jul 1, 2014 at 10:28 AM, Nikola Smiljanic <popizdeh at gmail.com>
wrote:
> It looks like you're looking for NestedNameSpecifier. You should check the
> Kind and traverse the Prefix. I don't know how you obtain the type as it
> can appear in various contexts, but assuming you have some kind of Decl
> object on your hands you can call the the getQualifier() method.
>
>
> On Sun, Jun 29, 2014 at 5:30 PM, Manasij Mukherjee <manasij7479 at gmail.com>
> wrote:
>
>> It seems I made a mistake in terminology.
>>
>> What is the following called?
>> Suppose I have the types:
>> MyNamespace::ClassName
>> MyNamespace::ClassName::iterator
>> The second type has MyNamespace::ClassName as its scope (?).
>>
>> I want to detect if there are only namespaces there or a class somewhere
>> in the scope .
>>
>>
>>
>> On Sun, Jun 29, 2014 at 9:59 AM, Nikola Smiljanic <popizdeh at gmail.com>
>> wrote:
>>
>>> What do you mean by 'if the qualifiers include a class name"?
>>>
>>> Qualifiers class deals with const, volatile, etc.
>>>
>>>
>>> On Sun, Jun 29, 2014 at 12:40 AM, Manasij Mukherjee <
>>> manasij7479 at gmail.com> wrote:
>>>
>>>> Hi
>>>> I get the qualifiers like this:
>>>> Qualifiers q = qualifiedType.getQualifiers();
>>>>
>>>> How can I check whether if the qualifiers include a class name ?
>>>>
>>>> I can not figure out how to find this information from the Qualifiers
>>>> interface.
>>>>
>>>> Types in namespaces ..single or nested.. should not trigger this check.
>>>>
>>>> Thanks
>>>> Manasij Mukherjee
>>>>
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140701/ad440773/attachment.html>
More information about the cfe-dev
mailing list