diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-12-25 18:13:43 +0000 |
---|---|---|
committer | CohenArthur <arthur.cohen@embecosm.com> | 2025-01-03 11:19:08 +0000 |
commit | 9de42352bb28dc20752fa81ca26cf9929936a48a (patch) | |
tree | 16756ba2466bdfcec7fa2649032a3763bc820e18 /gcc/rust/resolve | |
parent | 31d3f550bad1d8fe8d9f0d08252412a8d106d860 (diff) | |
download | gcc-9de42352bb28dc20752fa81ca26cf9929936a48a.zip gcc-9de42352bb28dc20752fa81ca26cf9929936a48a.tar.gz gcc-9de42352bb28dc20752fa81ca26cf9929936a48a.tar.bz2 |
tychk: Add more support for additional trait bounds in functions
This commit correctly lowers and typechecks parenthesized types, which are used for trait objects with additional bounds.
gcc/rust/ChangeLog:
* resolve/rust-ast-resolve-type.cc (ResolveType::visit): New visitor to handle
ParenthesizedType.
* resolve/rust-ast-resolve-type.h: Likewise.
* typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): Likewise.
* typecheck/rust-hir-type-check-type.h: Likewise.
gcc/testsuite/ChangeLog:
* rust/compile/auto_traits2.rs: New test.
* rust/compile/auto_traits3.rs: New test.
* rust/compile/nr2/exclude: Add auto_traits2 test.
Diffstat (limited to 'gcc/rust/resolve')
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-type.cc | 6 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-type.h | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc b/gcc/rust/resolve/rust-ast-resolve-type.cc index 56ce95f..a4878a2 100644 --- a/gcc/rust/resolve/rust-ast-resolve-type.cc +++ b/gcc/rust/resolve/rust-ast-resolve-type.cc @@ -51,6 +51,12 @@ ResolveType::visit (AST::TraitObjectType &type) } void +ResolveType::visit (AST::ParenthesisedType &type) +{ + resolved_node = ResolveType::go (*type.get_type_in_parens ()); +} + +void ResolveType::visit (AST::ReferenceType &type) { resolved_node = ResolveType::go (type.get_type_referenced ()); diff --git a/gcc/rust/resolve/rust-ast-resolve-type.h b/gcc/rust/resolve/rust-ast-resolve-type.h index 763838e..3a7dbd6 100644 --- a/gcc/rust/resolve/rust-ast-resolve-type.h +++ b/gcc/rust/resolve/rust-ast-resolve-type.h @@ -24,6 +24,7 @@ #include "rust-diagnostics.h" #include "rust-hir-map.h" #include "rust-path.h" +#include "rust-type.h" #include "util/rust-hir-map.h" namespace Rust { @@ -143,6 +144,8 @@ public: void visit (AST::TraitObjectType &type) override; + void visit (AST::ParenthesisedType &type) override; + void visit (AST::SliceType &type) override; private: |