From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id B4A513858C62; Sat, 22 Oct 2022 10:48:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B4A513858C62 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666435701; bh=GSBA2e1ZH6gJBI9zLGMJNxC8lu2P7hnIXIAy2zU3qUY=; h=From:To:Subject:Date:From; b=ociKai+msxYt17CJZKe1Tfekeg5dM8q28yYPDIz7c2Ry+KdR325oVKgJ2qlEg9l2S SwumNmLtCtw42lH+zjfyxwchVVyFwiFdWw3o6ZjDaS+lOdEIOJl6lnLXFSxN3jigaG qbRY+/I01s6vMCeyjjgqiUU8aCzlhTzTd3qTL33w= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] Add missing name resolution to Function type-path segments X-Act-Checkin: gcc X-Git-Author: Philip Herron X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: 678bf852435aca6de25704ca417fab257fe03da9 X-Git-Newrev: 8e09dfb538db9af6eb312ecd0a5a4e5931db201e Message-Id: <20221022104821.B4A513858C62@sourceware.org> Date: Sat, 22 Oct 2022 10:48:21 +0000 (GMT) List-Id: https://gcc.gnu.org/g:8e09dfb538db9af6eb312ecd0a5a4e5931db201e commit 8e09dfb538db9af6eb312ecd0a5a4e5931db201e Author: Philip Herron Date: Thu Oct 20 17:59:03 2022 +0100 Add missing name resolution to Function type-path segments Diff: --- gcc/rust/resolve/rust-ast-resolve-type.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc b/gcc/rust/resolve/rust-ast-resolve-type.cc index 6b08613755a..e42bab68234 100644 --- a/gcc/rust/resolve/rust-ast-resolve-type.cc +++ b/gcc/rust/resolve/rust-ast-resolve-type.cc @@ -149,7 +149,20 @@ ResolveRelativeTypePath::go (AST::TypePath &path, NodeId &resolved_node_id) break; case AST::TypePathSegment::SegmentType::FUNCTION: - gcc_unreachable (); + AST::TypePathSegmentFunction *fnseg + = static_cast (segment.get ()); + + AST::TypePathFunction &fn = fnseg->get_type_path_function (); + for (auto ¶m : fn.get_params ()) + { + ResolveType::go (param.get ()); + } + + if (fn.has_return_type ()) + { + ResolveType::go (fn.get_return_type ().get ()); + } + break; }