Skip to content

Commit 3d27f11

Browse files
committed
continue to handle context instead of finish
1 parent 50aa5b6 commit 3d27f11

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

clang/lib/Sema/SemaTemplateInstantiate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ Response HandleFunction(Sema &SemaRef, const FunctionDecl *Function,
292292
if (TemplatePattern && FunctionPattern &&
293293
TemplatePattern->getTemplateDepth() ==
294294
FunctionPattern->getTemplateDepth())
295-
return Response::Done();
295+
return Response::UseNextDecl(Function);
296296
}
297297

298298
// If this function is a generic lambda specialization, we are done.

clang/test/SemaCXX/PR90349.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,27 @@ int main(int argc, const char * argv[]) {
4141
FindBlobs<double, int>();
4242
return 0;
4343
}
44+
45+
template<typename T, typename U>
46+
concept D = sizeof(T) == sizeof(U);
47+
48+
template<typename T>
49+
struct A
50+
{
51+
template<typename U, typename V> requires D<U, V>
52+
static void f();
53+
};
54+
55+
template<typename T, typename U>
56+
struct B
57+
{
58+
template<typename V>
59+
struct C
60+
{
61+
friend void A<char>::f<T, U>();
62+
};
63+
};
64+
65+
template struct B<int, int>::C<short>;
66+
67+
extern template void A<char>::f<int, int>(); // crash here

0 commit comments

Comments
 (0)