aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
diff options
context:
space:
mode:
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>2023-03-03 17:27:37 +0800
committerChuanqi Xu <yedeng.yd@linux.alibaba.com>2023-03-03 17:27:37 +0800
commit2408f97652caadf733a879e1d7d9c0702a80d609 (patch)
tree76bb56818d0af7f51823d0f81eed529d102b23a3 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
parent8a023fed2f848031769eae804e55eed719cdd12d (diff)
downloadllvm-2408f97652caadf733a879e1d7d9c0702a80d609.zip
llvm-2408f97652caadf733a879e1d7d9c0702a80d609.tar.gz
llvm-2408f97652caadf733a879e1d7d9c0702a80d609.tar.bz2
Recommit [C++20] [Modules] Trying to compare the trailing require clause from the primary template function
Close https://github.com/llvm/llvm-project/issues/60890. For the following example: ``` export module a; export template<typename T> struct a { friend void aa(a) requires(true) { } }; ``` ``` export module b; import a; struct b { a<int> m; }; ``` ``` export module c; import a; struct c { void f() const { aa(a<int>()); } }; ``` ``` import a; import b; import c; void d() { aa(a<int>()); } ``` The current clang will reject this incorrectly. The reason is that the require clause will be replaced with the evaluated version (https://github.com/llvm/llvm-project/blob/efae3174f09560353fb0f3d528bcbffe060d5438/clang/lib/Sema/SemaConcept.cpp#L664-L665). In module 'b', the friend function is instantiated but not used so the require clause of the friend function is `(true)`. However, in module 'c', the friend function is used so the require clause is `true`. So deserializer classify these two function to two different functions instead of one. Then here is the bug report. The proposed solution is to try to compare the trailing require clause of the primary template when performing ODR checking. Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D144626
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h')
0 files changed, 0 insertions, 0 deletions