From 680b57564dc5f9d3dced8627889c0204d8441b55 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Thu, 5 Feb 2026 10:01:56 -0500 Subject: [PATCH] [Clang][Sema] Fix crash when nested-name-specifier prefix points to non-dependent context --- clang/lib/Sema/SemaCXXScopeSpec.cpp | 2 +- clang/test/SemaTemplate/dependent-names.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaCXXScopeSpec.cpp b/clang/lib/Sema/SemaCXXScopeSpec.cpp index 17ae7ca5627a9..e21f15bea576e 100644 --- a/clang/lib/Sema/SemaCXXScopeSpec.cpp +++ b/clang/lib/Sema/SemaCXXScopeSpec.cpp @@ -33,7 +33,7 @@ static CXXRecordDecl *getCurrentInstantiationOf(QualType T, return nullptr; auto *RD = cast(TagTy->getDecl())->getDefinitionOrSelf(); if (isa(TagTy) || - RD->isCurrentInstantiation(CurContext)) + (RD->isDependentContext() && RD->isCurrentInstantiation(CurContext))) return RD; return nullptr; } diff --git a/clang/test/SemaTemplate/dependent-names.cpp b/clang/test/SemaTemplate/dependent-names.cpp index d6bd670841c08..332c4a3342fd2 100644 --- a/clang/test/SemaTemplate/dependent-names.cpp +++ b/clang/test/SemaTemplate/dependent-names.cpp @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s +// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -fms-extensions %s typedef double A; template class B { @@ -481,3 +482,17 @@ namespace TransformNestedName { template ::State::kA>> inline void N::F() {} } // namespace TransformNestedName + +namespace GH133610 { + struct a { + using e = int; + }; + +#ifdef _MSC_EXTENSIONS + void current(const char * = __builtin_FUNCSIG()); + template void c() { + decltype(a(current()))::e; + } +#endif +} +