]> git.ipfire.org Git - thirdparty/gcc.git/commit
gccrs: Fix ICE when hitting invalid types for generics
authorPhilip Herron <herron.philip@googlemail.com>
Wed, 2 Apr 2025 20:02:44 +0000 (21:02 +0100)
committerPhilip Herron <philip.herron@embecosm.com>
Fri, 4 Apr 2025 08:19:30 +0000 (08:19 +0000)
commit8022ca11ed991cba51843c3226e4de9c2b795ecc
treea391150055591aa9dceb54e233bae4b4af6ab6f8
parent314090971a51037bb77e36b46c7a10652b9e6c3f
gccrs: Fix ICE when hitting invalid types for generics

We need to check upfront if the type is valid or not. Then
error with a decent message.

Fixes Rust-GCC#3643
Fixes Rust-GCC#3646
Fixes Rust-GCC#3654
Fixes Rust-GCC#3663
Fixes Rust-GCC#3671

gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): fix error msg
* typecheck/rust-substitution-mapper.cc (SubstMapper::Resolve): add validation
(SubstMapper::valid_type): new check
(SubstMapper::visit): check if can resolve
* typecheck/rust-substitution-mapper.h: new prototype

gcc/testsuite/ChangeLog:

* rust/compile/nr2/exclude: nr2 is missing type path error
* rust/compile/issue-3643.rs: New test.
* rust/compile/issue-3646.rs: New test.
* rust/compile/issue-3654.rs: New test.
* rust/compile/issue-3663.rs: New test.
* rust/compile/issue-3671.rs: New test.

Signed-off-by: Philip Herron <herron.philip@googlemail.com>
gcc/rust/resolve/rust-ast-resolve-type.cc
gcc/rust/typecheck/rust-substitution-mapper.cc
gcc/rust/typecheck/rust-substitution-mapper.h
gcc/testsuite/rust/compile/issue-3643.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/issue-3646.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/issue-3654.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/issue-3663.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/issue-3671.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/nr2/exclude