LGTM with some tiny tweaks. Thank you!
================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:674-677
@@ -665,5 +673,6 @@
// not the definitions of scoped member enumerations.
// FIXME: There appears to be no wording for what happens for an enum defined
// within a block scope, but we treat that much like a member template. Only
// instantiate the definition when visiting the definition in that case,
since
// we will visit all redeclarations.
+ if (isDeclWithinFunction(D) ? D == Def : (Def && !Enum->isScoped())) {
----------------
Please add a reference to the relevant DR here.
================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:736
@@ -726,3 +735,3 @@
if (Pattern->getDeclContext()->isFunctionOrMethod() &&
- !Enum->isScoped()) {
+ !Enum->isScoped() && !Enum->isScoped()) {
// If the enumeration is within a function or method, record the enum
----------------
This change looks unnecessary =)
================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:1140
@@ +1139,3 @@
+
+ if (D->isCompleteDefinition() && D->isLocalClass()) {
+ if (SemaRef.InstantiateClass(D->getLocation(), Record, D, TemplateArgs,
----------------
A brief comment mentioning the DR would be helpful here.
http://llvm-reviews.chandlerc.com/D2236
BRANCH
PR9685
ARCANIST PROJECT
clang
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits