llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Younan Zhang (zyn0217) <details> <summary>Changes</summary> Fixes https://github.com/llvm/llvm-project/issues/88925 --- Full diff: https://github.com/llvm/llvm-project/pull/90195.diff 2 Files Affected: - (modified) clang/lib/Sema/TreeTransform.h (+3) - (modified) clang/test/SemaCXX/cxx2c-pack-indexing.cpp (+19) ``````````diff diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 9404be5a46f3f7..abc4a16c004a9f 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -6649,6 +6649,9 @@ TreeTransform<Derived>::TransformPackIndexingType(TypeLocBuilder &TLB, } } + // We may be doing this in the context of expanding the Pattern. Forget that + // because it has been handled above. + Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(getSema(), -1); QualType Result = getDerived().TransformType(TLB, TL.getPatternLoc()); QualType Out = getDerived().RebuildPackIndexingType( diff --git a/clang/test/SemaCXX/cxx2c-pack-indexing.cpp b/clang/test/SemaCXX/cxx2c-pack-indexing.cpp index 606715e6aacffd..2fd0dbfed294a5 100644 --- a/clang/test/SemaCXX/cxx2c-pack-indexing.cpp +++ b/clang/test/SemaCXX/cxx2c-pack-indexing.cpp @@ -160,3 +160,22 @@ namespace GH88929 { using E = P...[0]; // expected-error {{unknown type name 'P'}} \ // expected-error {{expected ';' after alias declaration}} } + +namespace GH88925 { +template <typename...> struct S {}; + +template <int...> struct sequence {}; + +template <typename... Args, int... indices> auto f(sequence<indices...>) { + return S<Args...[indices]...>(); // #use +} + +void g() { + static_assert(__is_same(decltype(f<int>(sequence<0, 0>())), S<int, int>)); + static_assert(__is_same(decltype(f<int, long>(sequence<0, 0>())), S<int, int>)); + static_assert(__is_same(decltype(f<int, long>(sequence<0, 1>())), S<int, long>)); + f<int, long>(sequence<3>()); + // expected-error@#use {{invalid index 3 for pack 'Args' of size 2}}} + // expected-note-re@-2 {{function template specialization '{{.*}}' requested here}} +} +} `````````` </details> https://github.com/llvm/llvm-project/pull/90195 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits