diff options
author | Philip Herron <herron.philip@googlemail.com> | 2025-03-12 17:03:25 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2025-03-14 19:11:22 +0000 |
commit | 9d88bcce6da404acee0363d7d417b199aca011c5 (patch) | |
tree | 4bbfdc474170fe2e22c52d46d8b57158f8ba4a9a /gcc/rust/resolve/rust-late-name-resolver-2.0.cc | |
parent | aa88863a0f370235931f5d948ed5019fdc9254a9 (diff) | |
download | gcc-9d88bcce6da404acee0363d7d417b199aca011c5.zip gcc-9d88bcce6da404acee0363d7d417b199aca011c5.tar.gz gcc-9d88bcce6da404acee0363d7d417b199aca011c5.tar.bz2 |
gccrs: check for recursion trait cycle with bounds checks
We need to be careful when doing bounds check as to not create a recusive
trait resolution. This patch checks for that case and fixes a bad type
is equal check on ADT Types which was caught with a regression here.
Fixes Rust-GCC#3126
gcc/rust/ChangeLog:
* typecheck/rust-hir-trait-resolve.cc (TraitResolver::ResolveHirItem): new helper
* typecheck/rust-hir-trait-resolve.h: add helper prototype
* typecheck/rust-type-util.cc (query_type): add debug
* typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::scan): check for recursion
* typecheck/rust-tyty.cc (VariantDef::is_equal): fix is equal check
gcc/testsuite/ChangeLog:
* rust/execute/torture/issue-3126.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
Diffstat (limited to 'gcc/rust/resolve/rust-late-name-resolver-2.0.cc')
0 files changed, 0 insertions, 0 deletions