From patchwork Thu Aug 1 14:57:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 95048 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4BE20386481C for ; Thu, 1 Aug 2024 15:32:17 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by sourceware.org (Postfix) with ESMTPS id 61E03385DDF9 for ; Thu, 1 Aug 2024 14:59:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 61E03385DDF9 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 61E03385DDF9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::534 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722524431; cv=none; b=km3vAi2oq9tWlHPZJjs0eoSCIaaeedm1NICKPU/NnUKZ7HZvchAPqoeud4b7JWDfS3WX0yIoAFHhL2Ncgcp4dk13krwZpOpg1XBkPSQAJh51AgEdnG4qVL1u6OGhWKSMI4Ww4cooaq4ghGt8UPvhTGtnn5scdYMETSBlpnafCxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722524431; c=relaxed/simple; bh=x/RaTRveSEFm6P+q4VmjLvBpea15csucO2e446zTiNk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=uMXIiyOVpQERkD0Luw7T83tvCPqdfShMk7tPdx8+tFk/USMFtVc6kLFe14N4XQqvLfN+eOSjBeOw2Pb7pjHasUkujmk6HZoy7QjHQTwiEq//uxNamc/FZCVmdMab/8Jpr93E8wGj8TEvWRXAN/MKkGeqXEeP+FUM4nreU0Q29Z0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-5a2a90243c9so8479942a12.0 for ; Thu, 01 Aug 2024 07:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1722524381; x=1723129181; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YPV4FLY6BvvwSJ8th+9vxs7fraYc/GfkVhXlbLCD8Eo=; b=L0R5/EgbLHMoHlRdIwUYbtyffwzi35ITj8nTRoYQ5cl3u4fIkhrlcKNPEUCFdBbHTI HY1V1N7aj7h6MtwOxTishkoOKQiPDp7h/dxe0xb+AWdKwf7as0I5mqUgPS+RW32McAdB MIMSKJgXq6KBUXUVjdC3sL8nb1xfbtRdgwbVc0x52WjzGlyvLSHLFQ8yDXJ61G1ryj0i ddc5FLoj7Tp8uL93OefRpsjx+NnvTrX6DgEjNGJo5cEvwLi9ospElDvf0mwYKABFIbrY gyXUch5eT5V6DOQpgv1mjiYqZuVBL1V8kV+wHAmP9xrplwSS/Cj1BM6Ywmpk3r5IRHVn ZUcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722524381; x=1723129181; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YPV4FLY6BvvwSJ8th+9vxs7fraYc/GfkVhXlbLCD8Eo=; b=A2uyZK6UJthRrxnoVi6AmZjvh0rLyqzDWgIUZnB+/xea/3UQ6dzCyTLKyWjJ5KVvGk nQt1ChgYJg9N614qJnAivXhYVdOD9cB9p77ejcLkypiPXFyfg+DJ85LG/oijwtG0gpTP kR5oYqJVlgFG7GNUne/ugpZIOu36n9HJbg4D1TGzMsI+5wVYMSrhaVDMekSk+zlcJmzZ tI1Vu7f7Cw3juAxuJrfDYtOV6WU1Lcty64O2mh7j8SzZbdAY6tO79KIapka2IejIjbho WR5F3KsbBXgfhxVgtRrAeSV/THiO3f9U4lcCBR39nWmwBOAebNsdufk9bA9Ge3Lh2lk8 I9QQ== X-Gm-Message-State: AOJu0YySaQ8TZL4R7ui9EYPlfK3B2WzcQbI2nN7prp0PsxWI3IklrAHE 5Fz7XQLwK7kKoHYs1Go2j532Ynd+LlCAH773RbsrGILdkCw0tgUAtGAHGrx2wL4nTeVH3VINngy /i24Z X-Google-Smtp-Source: AGHT+IHwuZRD8ed38rIo+dEvdomLH2tsEH8k3vkglf80swmIiR0JGlsVotCJD/rUnGVJ9CAhS2Hb8w== X-Received: by 2002:a05:6402:38d:b0:58b:7b90:94e2 with SMTP id 4fb4d7f45d1cf-5b7f61a9ba6mr387385a12.38.1722524380654; Thu, 01 Aug 2024 07:59:40 -0700 (PDT) Received: from platypus.lan ([2a04:cec2:9:dc84:3622:6733:ff49:ee91]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5ac63590592sm10252456a12.25.2024.08.01.07.59.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Aug 2024 07:59:40 -0700 (PDT) From: Arthur Cohen To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Pierre-Emmanuel Patry Subject: [PATCH 076/125] gccrs: Add call to globbing visitor Date: Thu, 1 Aug 2024 16:57:12 +0200 Message-ID: <20240801145809.366388-78-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240801145809.366388-2-arthur.cohen@embecosm.com> References: <20240801145809.366388-2-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-14.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org From: Pierre-Emmanuel Patry Globbing visitor did not visit subitems. gcc/rust/ChangeLog: * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Add a check for missing item. * resolve/rust-toplevel-name-resolver-2.0.cc (GlobbingVisitor::go): Add a new function in the visitor to dispatch the visitor to items in the given module. (TopLevel::handle_use_glob): Change call to visitor to use the pointer. * resolve/rust-toplevel-name-resolver-2.0.h: Add prototype for new member function. Signed-off-by: Pierre-Emmanuel Patry --- gcc/rust/resolve/rust-late-name-resolver-2.0.cc | 2 ++ gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 9 ++++++++- gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc index 68eb88a1e4c..d8bd9ac524f 100644 --- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc @@ -197,6 +197,8 @@ Late::visit (AST::PathInExpression &expr) // do we emit it in `get`? auto value = ctx.values.resolve_path (expr.get_segments ()); + if (!value.has_value ()) + rust_unreachable (); // Should have been resolved earlier ctx.map_usage (Usage (expr.get_node_id ()), Definition (*value)); } diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc index 3122d41412f..501204174f2 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc @@ -25,6 +25,13 @@ namespace Rust { namespace Resolver2_0 { +void +GlobbingVisitor::go (AST::Module *module) +{ + for (auto &i : module->get_items ()) + visit (i); +} + void GlobbingVisitor::visit (AST::Module &module) { @@ -399,7 +406,7 @@ TopLevel::handle_use_glob (AST::SimplePath glob) return false; GlobbingVisitor gvisitor (ctx); - gvisitor.visit (*result.value ()); + gvisitor.go (result.value ()); return true; } diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h index 31535a9b22e..f5e224fa049 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h @@ -33,6 +33,7 @@ class GlobbingVisitor : public AST::DefaultASTVisitor public: GlobbingVisitor (NameResolutionContext &ctx) : ctx (ctx) {} + void go (AST::Module *module); void visit (AST::Module &module) override; void visit (AST::MacroRulesDefinition ¯o) override; void visit (AST::Function &function) override;