Skip to content

Commit e65e39b

Browse files
committed
[Clang][Sema] Ignore 'exclude_from_explicit_instantiation' attribute for members of local classes
1 parent 7089c35 commit e65e39b

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

clang/lib/Sema/SemaTemplateInstantiate.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4124,7 +4124,8 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation,
41244124
}
41254125
}
41264126

4127-
if (Function->hasAttr<ExcludeFromExplicitInstantiationAttr>())
4127+
if (Function->hasAttr<ExcludeFromExplicitInstantiationAttr>() &&
4128+
!Instantiation->isLocalClass())
41284129
continue;
41294130

41304131
MemberSpecializationInfo *MSInfo =
@@ -4169,7 +4170,8 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation,
41694170
continue;
41704171

41714172
if (Var->isStaticDataMember()) {
4172-
if (Var->hasAttr<ExcludeFromExplicitInstantiationAttr>())
4173+
if (Var->hasAttr<ExcludeFromExplicitInstantiationAttr>() &&
4174+
!Instantiation->isLocalClass())
41734175
continue;
41744176

41754177
MemberSpecializationInfo *MSInfo = Var->getMemberSpecializationInfo();
@@ -4203,7 +4205,8 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation,
42034205
}
42044206
}
42054207
} else if (auto *Record = dyn_cast<CXXRecordDecl>(D)) {
4206-
if (Record->hasAttr<ExcludeFromExplicitInstantiationAttr>())
4208+
if (Record->hasAttr<ExcludeFromExplicitInstantiationAttr>() &&
4209+
!Instantiation->isLocalClass())
42074210
continue;
42084211

42094212
// Always skip the injected-class-name, along with any

0 commit comments

Comments
 (0)