]> git.ipfire.org Git - thirdparty/gcc.git/commit
rust: fix ICE when compiling impl block for !
authorPhilip Herron <herron.philip@googlemail.com>
Fri, 20 Sep 2024 17:45:12 +0000 (18:45 +0100)
committerP-E-P <32375388+P-E-P@users.noreply.github.com>
Thu, 26 Sep 2024 11:01:20 +0000 (11:01 +0000)
commit09cfe530f9c8c29ee2675ad91f6672a62dcf9519
tree54ea0f9ebdd7db1d4f45553110c6883cf1aa3737
parent71affd20219c14bc9b64726b1af288d095e5eb47
rust: fix ICE when compiling impl block for !

We need to resolve the never type which is its own special AST node so it
doesnt magically get handled like the regular builtin type paths such as
i32.

Fixes #3035

gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-type.cc (ResolveType::visit):
handle never type
(ResolveTypeToCanonicalPath::visit): likewise
* resolve/rust-ast-resolve-type.h: missing never type
* resolve/rust-name-resolver.cc (Resolver::generate_builtins):
track never type node_id
(Resolver::setup_builtin): likewise
* resolve/rust-name-resolver.h: new never type getter

gcc/testsuite/ChangeLog:

* rust/compile/nr2/exclude: nr2 cant handle this
* rust/compile/issue-3035.rs: New test.

Signed-off-by: Philip Herron <herron.philip@googlemail.com>
gcc/rust/resolve/rust-ast-resolve-type.cc
gcc/rust/resolve/rust-ast-resolve-type.h
gcc/rust/resolve/rust-name-resolver.cc
gcc/rust/resolve/rust-name-resolver.h
gcc/testsuite/rust/compile/issue-3035.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/nr2/exclude