diff options
author | Erich Keane <erich.keane@intel.com> | 2022-10-31 08:43:08 -0700 |
---|---|---|
committer | Erich Keane <erich.keane@intel.com> | 2022-11-01 12:18:58 -0700 |
commit | 2cee2663338ee65ff5786432c30ba22c8dcd711b (patch) | |
tree | 3d805d6b450d3c9ab332d59999e0ed81ddc1a796 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 72ba2489f2c7b0a911bd23e50aaaca6eae9a183e (diff) | |
download | llvm-2cee2663338ee65ff5786432c30ba22c8dcd711b.zip llvm-2cee2663338ee65ff5786432c30ba22c8dcd711b.tar.gz llvm-2cee2663338ee65ff5786432c30ba22c8dcd711b.tar.bz2 |
[Concepts] Correctly handle failure when checking concepts recursively
Based on discussion on the core reflector, it was made clear that a
concept that depends on itself should be a hard error, not a constraint
failure. This patch implements a stack of constraint-checks-in-progress
to make sure we quit, rather than hitting stack-exhaustion.
Note that we DO need to be careful to make sure we still check
constraints properly that are caused by a previous constraint, but not
derived from (such as when a check causes us to check special member
function generation), so we cannot use the existing logic to see if this
is being instantiated.
This fixes https://github.com/llvm/llvm-project/issues/44304 and
https://github.com/llvm/llvm-project/issues/50891.
Differential Revision: https://reviews.llvm.org/D136975
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions