[cfe-dev] Scope::TemplateParamScope?

Dai Mikurube dmikurube at chromium.org
Tue May 22 01:27:38 PDT 2012


Hi cfe-dev,

I'm hacking on Clang and have a trouble about template scope.  Should
'Scope::TemplateParamScope (*1)' be turned on while parsing entire template
declarations, or not?

The description "Template parameter scope starts at the 'template' keyword
and ends when the template declaration ends." (*1) sounds like it should be
true.  I found that the flag is, however, sometimes turned off.  I wonder
if I could know whether it's expected behavior or not.  (If it's not good
behavior, I'm thinking about fixing it.)


Let's think about the following simple template function.

template<typename T>
Object* make(T a) {
  return new Object(&a);
}

I expected 'TemplateParamScope' is on while parsing the 'new' expression
above.  But, it's actually turned off since the Scope is overwritten in
ParseFunctionDefinition at (*2).

(*1) TemplateParamScope:
http://clang.llvm.org/doxygen/classclang_1_1Scope.html#afa7e82b8e23f84d0d73e27953b9afab7a40ab45d2b9c9fca9a32b710f457d449a
(*2) http://clang.llvm.org/doxygen/Parser_8cpp_source.html#l00975


Thanks in advance.

-- 
Dai MIKURUBE
   dmikurube at chromium.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120522/d8d72033/attachment.html>


More information about the cfe-dev mailing list