[clang] [Clang][AST][NFC] Fix printing of dependent PackIndexTypes (PR #88146)

2024-04-10 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88146 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-10 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/88311 Reapplies #87541 and addresses the bug which caused expressions naming overload sets to be incorrectly rebuilt. >From f6d703151ec06cec140c4d425dc2bbd8b7ac4f93 Mon Sep 17 00:00:00 2001 From: Krystian Stasiows

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-10 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH] Reapply "[Clang][Sema] Fix crash when 'this' is used in a

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH 1/3] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH 1/3] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH 1/3] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @Endilll `clang/www/make_cxx_dr_status` queries core issues from https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_index.html. Since a new revision of the index has not yet been published since CWG2858 was opened, `clang/www/make_cxx_dr_status` doesn't add an entry for the iss

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @erichkeane Apologies, I should have structured the commits differently so it's clear what the new changes are... I added an `IsAddressOfOperand` parameter to `TreeTransform::TransformUnresolvedLookupExpr` and changed the conditions under which `Sema::BuildPossibleImplicitMe

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: Could also get them from the CWG GitHub pages repository (https://github.com/cplusplus/CWG/tree/gh-pages/issues)... anyways, am I good to merge this? https://github.com/llvm/llvm-project/pull/88042 ___ cfe-commits mailing list cfe-c

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: Oh, sorry. I'll do that :) https://github.com/llvm/llvm-project/pull/88042 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH 1/4] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88042 >From e850ae0982efbb7cec7c33d6b927844d89128743 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 8 Apr 2024 09:46:08 -0400 Subject: [PATCH 1/6] [Clang][Sema] Implement approved resolution for CWG28

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH 1/5] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @Endilll I ran `make_cxx_dr_status` with the index from the WG21 wiki... should I drop the commit? https://github.com/llvm/llvm-project/pull/88042 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88311 >From eb389e142b18d1a14d23d9fadea3c503331c2f73 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 08:31:52 -0400 Subject: [PATCH 1/6] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88042 >From e850ae0982efbb7cec7c33d6b927844d89128743 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 8 Apr 2024 09:46:08 -0400 Subject: [PATCH 1/5] [Clang][Sema] Implement approved resolution for CWG28

[clang] [Clang][Sema] Implement approved resolution for CWG2858 (PR #88042)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88042 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @erichkeane I'm thinking of keeping the use of `bool` to represent the presence of `typename` in this patch, and opening another PR that changes both `TemplateTemplateParmDecl` and `TypeTemplateParmDecl` to use `TypeParmKeyword`... What do you think? https://github.com/llvm/

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88139 >From a3a9dd90ffd82c738c41c6c581852a10742f2bbc Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 10:51:56 -0400 Subject: [PATCH 1/2] [Clang][AST] Track whether template template paramete

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: What category should the release note go under? https://github.com/llvm/llvm-project/pull/88139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88139 >From a3a9dd90ffd82c738c41c6c581852a10742f2bbc Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 10:51:56 -0400 Subject: [PATCH 1/3] [Clang][AST] Track whether template template paramete

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88139 >From bf5efab69470cfca1c4bea4d8fc31415012a1b17 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 9 Apr 2024 10:51:56 -0400 Subject: [PATCH 1/3] [Clang][AST] Track whether template template paramete

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][AST] Track whether template template parameters used the 'typename' keyword (PR #88139)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: Seems like there is a stray call to `TemplateTemplateParmDecl::Create` in LLDB... #88139 will address it https://github.com/llvm/llvm-project/pull/88139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-11 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88311 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-12 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @rupprecht looks like the issue is with non-static members in base classes: ```cpp struct B { int z; void h(int); }; template struct A : B { int y; void g(int); template void f(U); template<> void f(int x) { x; y;

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541)" (PR #88311)

2024-04-12 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: The expression type need to be set to `ASTContext::DependentTy` (currently, it's set to `ASTContext::OverloadTy`) if we find a member of a base class (as it is for direct members). Should be an easy fix, so I'm thinking of not reverting and just opening a PR that will address

[clang] [clang][Index] Use canonical function parameter types in USRs (PR #68222)

2024-04-14 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @mizvekov I totally forgot about this PR, sorry! I'll add a test and merge tomorrow :) https://github.com/llvm/llvm-project/pull/68222 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/lis

[clang] Fixed grammatical error in "enum specifier" error msg #94443 (PR #94592)

2024-06-06 Thread Krystian Stasiowski via cfe-commits
@@ -6088,9 +6088,9 @@ def err_redefinition_different_concept : Error< "redefinition of concept %0 with different template parameters or requirements">; def err_tag_reference_non_tag : Error< "%select{non-struct type|non-class type|non-union type|non-enum " - "type|typedef

[clang] [libcxx] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-06-06 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @erichkeane Hoping you can review this before your break! https://github.com/llvm/llvm-project/pull/92957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [libcxx] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-06-06 Thread Krystian Stasiowski via cfe-commits
@@ -1442,19 +1442,27 @@ SourceLocation CXXUnresolvedConstructExpr::getBeginLoc() const { CXXDependentScopeMemberExpr::CXXDependentScopeMemberExpr( const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow, SourceLocation OperatorLoc, NestedNameSpecifierLoc Qua

[clang] [clang] always use resolved arguments for default argument deduction (PR #94756)

2024-06-07 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/94756 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-06-18 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/93873 >From 40b69a190a1af610d946108394a38e3ac93dbd71 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 28 May 2024 07:42:06 -0400 Subject: [PATCH 1/4] [Clang][Sema] Diagnose variable template explicit s

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-06-18 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/93873 >From 40b69a190a1af610d946108394a38e3ac93dbd71 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 28 May 2024 07:42:06 -0400 Subject: [PATCH 1/5] [Clang][Sema] Diagnose variable template explicit s

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-06-18 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/93873 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-05-30 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/92957 >From 616b2cf138f9b4a1f3a23db404f77c0603ad61e1 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 21 May 2024 13:15:24 -0400 Subject: [PATCH 1/2] [WIP][Clang] Implement resolution for CWG1835 ---

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-05-30 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/93873 According to [[temp.expl.spec] p2](http://eel.is/c++draft/temp.expl.spec#2): > The declaration in an _explicit-specialization_ shall not be an > _export-declaration_. An explicit specialization shall not use a

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-05-30 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/93873 >From e638448bce1dd529acbf81592f324bdc1ecb3e19 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 28 May 2024 07:42:06 -0400 Subject: [PATCH 1/2] [Clang][Sema] Diagnose variable template explicit s

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-05-30 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @mizvekov GCC seems to be right; [[decl.meaning.general] p3.3](eel.is/c++draft/dcl.meaning.general#3.3) requires that the specialized declaration be nominable (per [[basic.scope.scope] p7](eel.is/c++draft/basic.scope.scope#7)) in `S` (which in this case is the global namespa

[clang] [Clang][Sema] Diagnose variable template explicit specializations with storage-class-specifiers (PR #93873)

2024-05-30 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/93873 >From e638448bce1dd529acbf81592f324bdc1ecb3e19 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 28 May 2024 07:42:06 -0400 Subject: [PATCH 1/3] [Clang][Sema] Diagnose variable template explicit s

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-05-31 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: I added support for unqualified lookup finding multiple declarations in the most recent commits, fixing the crash the currently happens on clang assertions trunk for the following ([godbolt link](https://godbolt.org/z/rEzo76qr5)): ```cpp inline namespace N { struct A { };

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-05-31 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian ready_for_review https://github.com/llvm/llvm-project/pull/92957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-05-31 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: I still need to add more comments and a release note, but this is otherwise functionally complete https://github.com/llvm/llvm-project/pull/92957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-05-31 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: Ping @erichkeane @shafik @Endilll (not sure if drafts send emails for review requests) https://github.com/llvm/llvm-project/pull/92957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/lis

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-06-03 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: > > Per [[basic.lookup.qual.general] > > p1](http://eel.is/c++draft/basic.lookup.qual.general#1), lookup for a > > member-qualified name is type-only if it's an identifier followed by ::; > > Per my reading, type-only lookup is performed only for elaborated type > specifiers

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-06-03 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian edited https://github.com/llvm/llvm-project/pull/92957 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-06-03 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: This does seem to cause an error in libstdc++: ``` include/c++/11/bits/shared_ptr.h:365:10: error: use 'template' keyword to treat '__shared_ptr' as a dependent template name this->__shared_ptr<_Tp>::operator=(__r); ^ ``` Since `this` is dependent (it's of t

[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-04 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/94311 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [libcxx] [Clang] Implement resolution for CWG1835 (PR #92957)

2024-06-04 Thread Krystian Stasiowski via cfe-commits
@@ -55,15 +55,21 @@ namespace PR11856 { template T *end(T*); - class X { }; + struct X { }; + struct Y { +int end; + }; template void Foo2() { T it1; -if (it1->end < it1->end) { -} +if (it1->end < it1->end) { } X *x; -if (x->end <

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/88731 Reapplies #87541 and #88311 (again) addressing the bug which caused expressions naming overload sets to be incorrectly rebuilt, as well as the bug which caused base class members to always be treated as overl

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88731 >From 02d98a20ad2214c928d6ffcc7f54abe1172a2407 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 15 Apr 2024 09:17:39 -0400 Subject: [PATCH] Reapply "[Clang][Sema] Fix crash when 'this' is used in

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88731 >From 02d98a20ad2214c928d6ffcc7f54abe1172a2407 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 15 Apr 2024 09:17:39 -0400 Subject: [PATCH 1/3] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88731 >From 02d98a20ad2214c928d6ffcc7f54abe1172a2407 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 15 Apr 2024 09:17:39 -0400 Subject: [PATCH 1/3] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88731 >From 02d98a20ad2214c928d6ffcc7f54abe1172a2407 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 15 Apr 2024 09:17:39 -0400 Subject: [PATCH 1/4] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: The primary change since #88311 is `UnresolvedLookupExpr::Create` is called directly in `BuildPossibleImplicitMemberExpr` with `KnownDependent` as `true` (which causes the expression type to be set to `ASTContext::DependentTy`). This ensures that any further semantic analysis

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/88777 A local class and its members declared in a function template are instantiated alongside the definition of that template. It therefore does not make sense to apply the `exclude_from_explicit_instantiation` at

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88777 >From e65e39bfb9915cf248dbfa64451298ed1877d45c Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Fri, 12 Apr 2024 14:33:30 -0400 Subject: [PATCH 1/2] [Clang][Sema] Ignore 'exclude_from_explicit_instant

[clang] [clang][Index] Use canonical function parameter types in USRs (PR #68222)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/68222 >From 8022677bd92d4074ccaebda687f43066ce33d152 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Wed, 4 Oct 2023 10:06:28 -0400 Subject: [PATCH] [clang][Index] Use canonical function parameter types in

[clang] [clang][Index] Use canonical function parameter types in USRs (PR #68222)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/68222 >From 8022677bd92d4074ccaebda687f43066ce33d152 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Wed, 4 Oct 2023 10:06:28 -0400 Subject: [PATCH 1/2] [clang][Index] Use canonical function parameter types

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
@@ -9315,6 +9330,9 @@ ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL, case ParsedAttr::AT_Error: handleErrorAttr(S, D, AL); break; + case ParsedAttr::AT_ExcludeFromExplicitInstantiation: sdkrystian wrote: `exclude_from_ex

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-15 Thread Krystian Stasiowski via cfe-commits
@@ -9315,6 +9330,9 @@ ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL, case ParsedAttr::AT_Error: handleErrorAttr(S, D, AL); break; + case ParsedAttr::AT_ExcludeFromExplicitInstantiation: sdkrystian wrote: In the default c

[clang] [clang][Index] Use canonical function parameter types in USRs (PR #68222)

2024-04-16 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/68222 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Sema] Improve support for explicit specializations of constrained member functions & member function templates (PR #88963)

2024-04-16 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/88963 Consider the following snippet from the discussion of [CWG2847](https://cplusplus.github.io/CWG/issues/2847.html) on the [core reflector](https://lists.isocpp.org/core/2024/04/15720.php) ([godbolt link](http

[clang] [Clang][Sema] Improve support for explicit specializations of constrained member functions & member function templates (PR #88963)

2024-04-16 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian edited https://github.com/llvm/llvm-project/pull/88963 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-16 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @erichkeane Perhaps the release note should go under "Attribute Changes in Clang"? https://github.com/llvm/llvm-project/pull/88777 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinf

[clang] [Clang][Parse] Diagnose requires expressions with explicit object parameters (PR #88974)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
@@ -0,0 +1,4 @@ +// RUN: %clang_cc1 -std=c++23 -fsyntax-only -verify %s + +auto x0 = requires (this int) { true; }; // expected-error {{a requires clause cannot have an explicit object parameter}} +auto x1 = requires (int, this int) { true; }; // expected-error {{a requires clau

[clang] [Clang][Parse] Diagnose requires expressions with explicit object parameters (PR #88974)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88974 >From 05e44aedb2acfa2945b7be0217db9f8bb8bf70f5 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 16 Apr 2024 15:42:45 -0400 Subject: [PATCH 1/2] [Clang][Parse] Diagnose requires expressions with e

[clang] [Clang][Parse] Diagnose requires expressions with explicit object parameters (PR #88974)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88974 >From 05e44aedb2acfa2945b7be0217db9f8bb8bf70f5 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 16 Apr 2024 15:42:45 -0400 Subject: [PATCH 1/2] [Clang][Parse] Diagnose requires expressions with e

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88777 >From 5f19ff4e34c3e3153157cfb06ba1022e982b4f2d Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Fri, 12 Apr 2024 14:33:30 -0400 Subject: [PATCH 1/2] [Clang][Sema] Ignore 'exclude_from_explicit_instant

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88777 >From 5f19ff4e34c3e3153157cfb06ba1022e982b4f2d Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Fri, 12 Apr 2024 14:33:30 -0400 Subject: [PATCH 1/3] [Clang][Sema] Ignore 'exclude_from_explicit_instant

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: Release note added https://github.com/llvm/llvm-project/pull/88777 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Parse] Diagnose requires expressions with explicit object parameters (PR #88974)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88974 >From f81f0582dd7ee8d951128917398319c052371b3e Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Tue, 16 Apr 2024 15:42:45 -0400 Subject: [PATCH 1/3] [Clang][Parse] Diagnose requires expressions with e

[clang] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
@@ -1455,21 +1455,17 @@ void TypePrinter::printTag(TagDecl *D, raw_ostream &OS) { // If this is a class template specialization, print the template // arguments. - if (const auto *Spec = dyn_cast(D)) { -ArrayRef Args; -TypeSourceInfo *TAW = Spec->getTypeAsWritten

[clang] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
@@ -2596,27 +2588,14 @@ class VarTemplateSpecializationDecl : public VarDecl, llvm::PointerUnion SpecializedTemplate; - /// Further info for explicit template specialization/instantiation. - struct ExplicitSpecializationInfo { -/// The type-as-written. -TypeSourc

[clang] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
@@ -2596,27 +2588,14 @@ class VarTemplateSpecializationDecl : public VarDecl, llvm::PointerUnion SpecializedTemplate; - /// Further info for explicit template specialization/instantiation. - struct ExplicitSpecializationInfo { -/// The type-as-written. -TypeSourc

[clang] [Clang] Disallow explicit object parameters in more contexts (PR #89078)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: I'm going to merge #88974 shortly, but I don't think this interferes with anything here https://github.com/llvm/llvm-project/pull/89078 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/li

[clang] [Clang][Parse] Diagnose requires expressions with explicit object parameters (PR #88974)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88974 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [clang-tools-extra] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
@@ -6390,6 +6394,7 @@ TEST(HasTemplateArgumentLoc, BindsToSpecializationWithDoubleArgument) { 0, hasTypeLoc(loc(asString("double"))); } +#if 0 sdkrystian wrote: @erichkeane I just pushed a commit which converts all the `

[clang] [clang-tools-extra] [Clang] Unify interface for accessing template arguments as written for class/variable template specializations (PR #81642)

2024-04-17 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: I added a commit which adds support for matching the `TemplateArgumentLoc`s of explicit specializations directly. https://github.com/llvm/llvm-project/pull/81642 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.l

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-18 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88777 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Sema] Diagnose explicit specializations with object parameters that do not match their primary template (PR #89300)

2024-04-18 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/89300 According to [[dcl.fct] p6](https://eel.is/c++draft/dcl.fct#6) (with the resolution for [CWG2846](https://cplusplus.github.io/CWG/issues/2846.html) applied): > An explicit-object-parameter-declaration shall a

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-18 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88731 >From f74be45a07ec82fb008341b98d549aed1d3354fd Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 15 Apr 2024 09:17:39 -0400 Subject: [PATCH 1/5] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-19 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @mikaelholmen I believe there are two uses of `exclude_from_explicit_instantiation` in libc++ which are responsible for all these warnings. I was assuming that someone more experienced with the libc++ side of things would handle it, but I can submit a patch that addresses the

[clang] [Clang][Sema] Warn when 'exclude_from_explicit_instantiation' attribute is used on local classes and members thereof (PR #88777)

2024-04-19 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @mikaelholmen See #89377 https://github.com/llvm/llvm-project/pull/88777 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-22 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/88731 >From 9b54d77ef690a69b94ab2985f62fa1a281259796 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 15 Apr 2024 09:17:39 -0400 Subject: [PATCH 1/5] Reapply "[Clang][Sema] Fix crash when 'this' is used

[clang] Reapply "[Clang][Sema] Fix crash when 'this' is used in a dependent class scope function template specialization that instantiates to a static member function (#87541, #88311)" (PR #88731)

2024-04-22 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/88731 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Sema] Remove unused function after #88731 (PR #89618)

2024-04-22 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian created https://github.com/llvm/llvm-project/pull/89618 Removes an unused static function `IsOverloaded` from `SemaOverload.cpp` that is unused after #88731. >From b0dcd5b85d4945530abb8209d8069e5fca65eb72 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: M

[clang] [Clang][Sema] Remove unused function after #88731 (PR #89618)

2024-04-22 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/89618 >From ab5add6546306348079041d977735fdac44e5724 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 22 Apr 2024 11:57:18 -0400 Subject: [PATCH] [Clang][Sema] Remove unused function after #88731 ---

[clang] [Clang][Sema] Remove unused function after #88731 (PR #89618)

2024-04-22 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/89618 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][AST] Don't use canonical type when checking dependence in Type::isOverloadable (PR #98563)

2024-07-23 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/98563 >From 5cefddec13ca2bafb58a6f714fd2bef435166c8d Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Thu, 11 Jul 2024 18:28:50 -0400 Subject: [PATCH 1/2] [Clang][AST] Don't use canonical type when checking

[clang] [libcxx] [llvm] Reapply "[Clang] Implement resolution for CWG1835 (#92957)" (PR #98547)

2024-07-23 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @KyunLFA Could you send the commit hash of the clang build which you're using? I'm unable to reproduce. https://github.com/llvm/llvm-project/pull/98547 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cg

[clang] [Clang][Parse] Fix ambiguity with nested-name-specifiers that may declarative (PR #96364)

2024-07-23 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/96364 >From 0d0a1e242db6a117ffb37ab4ce3d72e6adf26a2e Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Wed, 12 Jun 2024 14:14:26 -0400 Subject: [PATCH 1/6] [Clang][Parse] Fix ambiguity with nested-name-specif

[clang] [Clang][Parse] Fix ambiguity with nested-name-specifiers that may declarative (PR #96364)

2024-07-23 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/96364 >From 0d0a1e242db6a117ffb37ab4ce3d72e6adf26a2e Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Wed, 12 Jun 2024 14:14:26 -0400 Subject: [PATCH 1/6] [Clang][Parse] Fix ambiguity with nested-name-specif

[clang] [Clang][AST] Don't use canonical type when checking dependence in Type::isOverloadable (PR #98563)

2024-07-23 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian updated https://github.com/llvm/llvm-project/pull/98563 >From fde01e26873828b9ab2aa1eb2ae1e1b6106b66c6 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Thu, 11 Jul 2024 18:28:50 -0400 Subject: [PATCH 1/3] [Clang][AST] Don't use canonical type when checking

[clang] [Clang][AST] Don't use canonical type when checking dependence in Type::isOverloadable (PR #98563)

2024-07-24 Thread Krystian Stasiowski via cfe-commits
https://github.com/sdkrystian closed https://github.com/llvm/llvm-project/pull/98563 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[clang] [Clang][Sema] Make UnresolvedLookupExprs in class scope explicit specializations instantiation dependent (PR #100392)

2024-07-24 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: > For tests, I think we can just dump & validate the AST for the > specialization, WDYT? Sounds reasonable, I'll do that. https://github.com/llvm/llvm-project/pull/100392 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https

[clang] [libcxx] Reapply "[Clang] Implement resolution for CWG1835 (#92957, #98547)" (PR #100425)

2024-07-24 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: I'm considering whether to add a compatibility warning to ease the transition to the new behavior, e.g. ```cpp template struct A { int x; }; template struct B : A { void f() { this->A::f(); // warning `template` is required after '->' in C++23 and later } }; ``` ht

[clang] [libcxx] Reapply "[Clang] Implement resolution for CWG1835 (#92957, #98547)" (PR #100425)

2024-07-24 Thread Krystian Stasiowski via cfe-commits
@@ -628,10 +628,12 @@ namespace cwg141 { // cwg141: 3.1 // expected-error@-1 {{use 'template' keyword to treat 'f' as a dependent template name}} } void h() { - (void)t.S::n; // ok + (void)t.S::n; sdkrystian wrote: @Endilll `t` is depe

[clang] [libcxx] Reapply "[Clang] Implement resolution for CWG1835 (#92957, #98547)" (PR #100425)

2024-07-24 Thread Krystian Stasiowski via cfe-commits
sdkrystian wrote: @KyunLFA Could you check if ares compiles with the patch applied using C++23 please? https://github.com/llvm/llvm-project/pull/100425 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/list

[clang] [Clang][Sema] Improve support for explicit specializations of constrained member functions & member function templates (PR #88963)

2024-07-25 Thread Krystian Stasiowski via cfe-commits
@@ -10339,24 +10339,53 @@ Sema::CheckMemberSpecialization(NamedDecl *Member, LookupResult &Previous) { if (Previous.empty()) { // Nowhere to look anyway. } else if (FunctionDecl *Function = dyn_cast(Member)) { +SmallVector Candidates; +bool Ambiguous = false;

<    1   2   3   4   5   6   7   8   9   10   >