From 234e7176a5d337af632b67380163d7bbd3526f3a Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Fri, 3 Mar 2023 20:05:59 -0500 Subject: gccrs: Resolve closure parameters without given type gcc/rust/ChangeLog: * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Check for closure parameter without given type. gcc/testsuite/ChangeLog: * rust/compile/closure_no_type_anno.rs: Extend test. Signed-off-by: Owen Avery --- gcc/rust/resolve/rust-early-name-resolver.cc | 3 ++- gcc/testsuite/rust/compile/closure_no_type_anno.rs | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'gcc') diff --git a/gcc/rust/resolve/rust-early-name-resolver.cc b/gcc/rust/resolve/rust-early-name-resolver.cc index 6dc11c4..c6cbdb0 100644 --- a/gcc/rust/resolve/rust-early-name-resolver.cc +++ b/gcc/rust/resolve/rust-early-name-resolver.cc @@ -326,7 +326,8 @@ EarlyNameResolver::visit (AST::ClosureExprInner &expr) expr.get_definition_expr ()->accept_vis (*this); for (auto ¶m : expr.get_params ()) - param.get_type ()->accept_vis (*this); + if (param.has_type_given ()) + param.get_type ()->accept_vis (*this); } void diff --git a/gcc/testsuite/rust/compile/closure_no_type_anno.rs b/gcc/testsuite/rust/compile/closure_no_type_anno.rs index beade76..ff2c8b8 100644 --- a/gcc/testsuite/rust/compile/closure_no_type_anno.rs +++ b/gcc/testsuite/rust/compile/closure_no_type_anno.rs @@ -1,5 +1,10 @@ -// { dg-additional-options "-fsyntax-only" } +#[lang = "fn_once"] +trait FnOnce { + type Output; + + fn call_once(self, args: Args) -> Self::Output; +} pub fn foo() { - let a = |_| 15; + let a = |_| 15; // { dg-error "type annotations needed" } } -- cgit v1.1