Check if splice is still dependent when transforming NNS.

Closes #132.
This commit is contained in:
Dan Katz
2025-04-09 10:34:05 -04:00
parent b5bbdf2baf
commit 2f5c771fe7
2 changed files with 20 additions and 1 deletions

View File

@@ -4751,7 +4751,8 @@ NestedNameSpecifierLoc TreeTransform<Derived>::TransformNestedNameSpecifierLoc(
TemplateKWLoc = Q.getLocalBeginLoc();
SS.MakeSpliceScopeSpecifier(SemaRef.Context, TemplateKWLoc, SR.get(),
Q.getLocalEndLoc());
if (!getSema().TryFindDeclContextOf(SR.get()))
if (SR.get()->getDependence() == SpliceSpecifierDependence::None &&
!getSema().TryFindDeclContextOf(SR.get()))
return NestedNameSpecifierLoc();
break;
}

View File

@@ -312,3 +312,21 @@ struct Y
};
static_assert(&Y::g == &[:^^Y::g:]);
} // namespace bb_clang_p2996_issue_131_regression_test
// ========================================
// bb_clang_p2996_issue_132_regression_test
// ========================================
namespace bb_clang_p2996_issue_132_regression_test {
template<typename>
void f()
{
auto func = []<auto Mem>() static {
return [: ^^[:Mem:] ::func :];
};
}
void g() {
f<int>();
}
} // namespace bb_clang_p2996_issue_132_regression_test