]> git.ipfire.org Git - thirdparty/gcc.git/commit
gccrs: Emit error diagnostic for bad impl type usage
authorPhilip Herron <herron.philip@googlemail.com>
Mon, 5 May 2025 20:07:20 +0000 (21:07 +0100)
committerPhilip Herron <philip.herron@embecosm.com>
Wed, 7 May 2025 12:04:19 +0000 (12:04 +0000)
commitef44f649655dcbba63b925c06e923ed1aefd6678
tree2df1721f870a7d3d1266347a5333d24f82ce3e1a
parent5599bf49cdf6d89f7e1f4e13b150b43d2cf6dca3
gccrs: Emit error diagnostic for bad impl type usage

Rust only allows impl traits to be used in the return position of
functions.

Fixes Rust-GCC#1485

gcc/rust/ChangeLog:

* hir/rust-ast-lower-implitem.cc (ASTLowerImplItem::visit): allow impl type
* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): likewise
* hir/rust-ast-lower-type.cc (ASTLoweringType::ASTLoweringType): new flag for impl trait
(ASTLoweringType::translate): pass flag
(ASTLoweringType::visit): track impl trait tag
(ASTLoweringType::emit_impl_trait_error): new diagnostic
* hir/rust-ast-lower-type.h: add new field

gcc/testsuite/ChangeLog:

* rust/compile/impl_trait_diag.rs: New test.
* rust/compile/issue-1485.rs: New test.

Signed-off-by: Philip Herron <herron.philip@googlemail.com>
gcc/rust/hir/rust-ast-lower-implitem.cc
gcc/rust/hir/rust-ast-lower-item.cc
gcc/rust/hir/rust-ast-lower-type.cc
gcc/rust/hir/rust-ast-lower-type.h
gcc/testsuite/rust/compile/impl_trait_diag.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/issue-1485.rs [new file with mode: 0644]