https://github.com/zyn0217 updated https://github.com/llvm/llvm-project/pull/108148
>From bd6097801e9a822f5b9e49a6f2fb09b999b4a80d Mon Sep 17 00:00:00 2001 From: Younan Zhang <zyn7...@gmail.com> Date: Wed, 11 Sep 2024 14:28:46 +0800 Subject: [PATCH 1/2] [Clang][Parser] Build up QualifiedTemplateName for typo correction --- clang/lib/Sema/SemaTemplate.cpp | 5 ++++- .../cxx1z-class-template-argument-deduction.cpp | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 513f83146fb59e..e58cd7959b9d77 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3567,7 +3567,10 @@ bool Sema::resolveAssumedTemplateNameAsType(Scope *S, TemplateName &Name, if (Corrected && Corrected.getFoundDecl()) { diagnoseTypo(Corrected, PDiag(diag::err_no_template_suggest) << ATN->getDeclName()); - Name = TemplateName(Corrected.getCorrectionDeclAs<TemplateDecl>()); + Name = Context.getQualifiedTemplateName( + /*NNS=*/nullptr, /*TemplateKeyword=*/false, + TemplateName( + TemplateName(Corrected.getCorrectionDeclAs<TemplateDecl>()))); return false; } diff --git a/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp b/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp index 2dd61baac31b3c..a1594333abae73 100644 --- a/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp +++ b/clang/test/Parser/cxx1z-class-template-argument-deduction.cpp @@ -255,3 +255,15 @@ void f() { GH57495::vector.d; // expected-error {{cannot use dot operator on a type}} } } + +namespace GH107887 { + +namespace a { +template <class> struct pair; // expected-note 3{{declared here}} +} +template <class T2> pair() -> pair<T2>; // expected-error 2{{no template named 'pair'}} \ + // expected-error {{deduction guide must be declared in the same scope}} \ + // expected-error {{cannot be deduced}} \ + // expected-note {{non-deducible template parameter 'T2'}} + +} >From 4ea01b4f1053c7d9c2c53ef547ee65395786c39b Mon Sep 17 00:00:00 2001 From: Younan Zhang <zyn7...@gmail.com> Date: Wed, 11 Sep 2024 23:28:23 +0800 Subject: [PATCH 2/2] Fix a copy-pasta --- clang/lib/Sema/SemaTemplate.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index e58cd7959b9d77..e5ea02a919f4eb 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3569,8 +3569,7 @@ bool Sema::resolveAssumedTemplateNameAsType(Scope *S, TemplateName &Name, << ATN->getDeclName()); Name = Context.getQualifiedTemplateName( /*NNS=*/nullptr, /*TemplateKeyword=*/false, - TemplateName( - TemplateName(Corrected.getCorrectionDeclAs<TemplateDecl>()))); + TemplateName(Corrected.getCorrectionDeclAs<TemplateDecl>())); return false; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits