]> git.ipfire.org Git - thirdparty/gcc.git/commit
gccrs: fix name resolution for generics where type param is declared later
authorPhilip Herron <herron.philip@googlemail.com>
Thu, 13 Feb 2025 17:01:31 +0000 (17:01 +0000)
committerPhilip Herron <philip.herron@embecosm.com>
Thu, 13 Feb 2025 17:35:40 +0000 (17:35 +0000)
commit45fc433d0fa4c447df695aae4c2f63cb428ca6b5
tree66226f28140b905d4669c19da3cd6d366daae8a2
parent5f7213e82064b3b6220a62e103eb361c0428d2d1
gccrs: fix name resolution for generics where type param is declared later

Rust allows you to use generics within type bounds when they are declared
later on. This changes the name resolution to walk the genric params
in two passes to ensure the type parameters are setup before drilling down
into the type parameters

This issue has exposed another type checking issue which needs fixed in
a subseqent patch.

Addresses Rust-GCC#3022

gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): use new api
(ResolveItem::visit): likewise
(ResolveExternItem::visit): likewise
* resolve/rust-ast-resolve-stmt.h: likewise
* resolve/rust-ast-resolve-type.h (class ResolveGenericParam): remove
(class ResolveGenericParams): added new api

Signed-off-by: Philip Herron <herron.philip@googlemail.com>
gcc/rust/resolve/rust-ast-resolve-item.cc
gcc/rust/resolve/rust-ast-resolve-stmt.h
gcc/rust/resolve/rust-ast-resolve-type.h