diff options
author | Philip Herron <herron.philip@googlemail.com> | 2023-03-29 13:35:53 +0100 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-03-30 16:52:24 +0000 |
commit | 1ef39479434ce54879e46926d1ac1c12009c5c07 (patch) | |
tree | 7e317d9daab85ca97416f1f752ad74f91493566a /gcc/rust/resolve/rust-ast-resolve-item.cc | |
parent | 3cc5c9360c9454f7aa20717b6cfcc7085836233b (diff) | |
download | gcc-1ef39479434ce54879e46926d1ac1c12009c5c07.zip gcc-1ef39479434ce54879e46926d1ac1c12009c5c07.tar.gz gcc-1ef39479434ce54879e46926d1ac1c12009c5c07.tar.bz2 |
gccrs: Fix handling of generic arguments for lifetimes only
We might have generics that are only for lifetimes this is a bad error
check. We can simply rely on the function to marshall the HIR generics
arguements for the type system to do the error handling for us which will
be more acurate anyway.
Fixes #2043 #2039
gcc/rust/ChangeLog:
* resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
add check for reference marker and type's in self params
(ResolveItem::visit): likewise
* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path):
remove bad generics check
(TypeCheckExpr::resolve_segments): likewise
* typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): likewise
gcc/testsuite/ChangeLog:
* rust/compile/const_generics_5.rs: update test case
* rust/compile/issue-2043.rs: New test.
* rust/compile/issue-2039.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-item.cc')
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-item.cc | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-item.cc b/gcc/rust/resolve/rust-ast-resolve-item.cc index 0605acc..9758984 100644 --- a/gcc/rust/resolve/rust-ast-resolve-item.cc +++ b/gcc/rust/resolve/rust-ast-resolve-item.cc @@ -142,13 +142,8 @@ ResolveTraitItems::visit (AST::TraitItemMethod &func) if (self_param.has_type ()) { - if (self_param.get_has_ref ()) - { - // FIXME is this true? - rust_error_at ( - self_param.get_locus (), - "it is not possible to mark self as reference and specify type"); - } + // This shouldn't happen the parser should already error for this + rust_assert (!self_param.get_has_ref ()); ResolveType::go (self_param.get_type ().get ()); } else @@ -655,13 +650,8 @@ ResolveItem::visit (AST::Method &method) if (self_param.has_type ()) { - if (self_param.get_has_ref ()) - { - // FIXME is this true? - rust_error_at ( - self_param.get_locus (), - "it is not possible to mark self as reference and specify type"); - } + // This shouldn't happen the parser should already error for this + rust_assert (!self_param.get_has_ref ()); ResolveType::go (self_param.get_type ().get ()); } else |