From patchwork Thu Aug 1 14:57:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 1967810 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=embecosm.com header.i=@embecosm.com header.a=rsa-sha256 header.s=google header.b=aN8FZ/cA; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WZXtw4RZJz1ybV for ; Fri, 2 Aug 2024 01:29:12 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C7A02386074C for ; Thu, 1 Aug 2024 15:29:10 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id F1FD3385E027 for ; Thu, 1 Aug 2024 15:00:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F1FD3385E027 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 F1FD3385E027 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::52c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722524463; cv=none; b=pMvcdowMVwGb6FdpAxrAipcy5L1RWrtODRwSJMqOlbzcY6bNZuwVZc+WfN/gdPHAwAtGxoGdr2ZLCie/C4OumAunN2TChehgGkXwcc4tStPKxaV7BBLTzjjhlthCk796Ug1hCVri9nFmFtZwsbsV31frIVAKYWrsnnVnKxgeoaE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1722524463; c=relaxed/simple; bh=XmgdKbAYG3Bqi8fECxBWhRgcK2TA1W6RrClTdEJCSgI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=d/jFJA7ACvs5eTCtQI+V57VD9jyDpRaqewvRfMeELpNhBr21/vNJfSEs4aAlsPASF5Gb0+bxbOkQ2wC2M7ihaCelafPzGQCPIS69Pp6SaiYnbK9fH40JEgoWovo1Xoo+65Fn6gZqUmSA85xaQ3cjHceP4QwAGWn3R7+Pfnw9bew= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-5a167b9df7eso11118919a12.3 for ; Thu, 01 Aug 2024 08:00:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1722524411; x=1723129211; 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=Z3niD0hvyJATSV5aRGDSvsYfpZvxcpVWWsE8iZQhunE=; b=aN8FZ/cAlArSb5T9F4wnyBHpIVo7iinntJzeQgasViZzFAcSDhrWjKeC93emtJHycp Hon3WzE+WQLkhBfxeG5e9oQDC1/VOOG4lryqx1mJdJ46RV4mD6VbkWrzNzzCCjIvYQj/ oHY7/seSFJ5T+oqgSL/3jd8G3JTaMOcp/E2+kQ7fZx6Qsi646pCfMgeUeM6QrgDKxHca iriUonGhAoqZXimvh5r5l2D3B2DUVqbSKdCFqwhwWuMRJipxfSVNP5OE/AQehpZbLb0k jgib6JFmbEfwW05Wb5MCY8dv+RGVO+d9TcC97u8Rt30SN7725R2/KuVUttL9+quHbShz KdVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722524411; x=1723129211; 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=Z3niD0hvyJATSV5aRGDSvsYfpZvxcpVWWsE8iZQhunE=; b=SMcuEzIkqHmybNSVaqQ/W4pw6LVsLCIyikef/pqCPa9FXNY+LlBGbcdyw3B4eU7ASD Qrqqb8MXtlDw8XwmZeJT1hobLTZFzpfIFsepfX7tOIWbZGSzJ4G1D4xWOYs+rQzeatX7 ZI7lxD0C77uuUOUnk7dnxKOZtccQmX3qJzkPmjxhNCo9rJCeG4y+mgnFAP8Dqpdw8yC6 IoFvSOWMwkl6MCrKMVj5KO6QWTF6eJ7Zd/lVKZ2fW6CZ/dTiIBdnyuSgw5FcqVCfRQjy 3Mu2prmv+lZVsiYHZ71JLMDpboqC8mmrwrar1guMhviudAdwmAn2Zx98f3RwF6v27wsa aXYQ== X-Gm-Message-State: AOJu0YyWCCsAc9f3AMOJZl7otZQWGBrzHckuIm6YW1Vs4ex53pUkGoSO OADNR5rrCuC7DO8ASaTzQkBo1gKx1aQZvY9ZdmJ1HY4SqGLg2EcKzdVkEn2pLxSLdsebgwRsAqr VSdYI X-Google-Smtp-Source: AGHT+IH/FY0whdKIBQMJWVW0Fj512DF15mp2fw9zCSkNzelrYH6YjIK8YrwtqYr1R68JkL2wUL6/AQ== X-Received: by 2002:a05:6402:1642:b0:5a2:2101:a714 with SMTP id 4fb4d7f45d1cf-5b7f540abfamr417865a12.25.1722524411232; Thu, 01 Aug 2024 08:00:11 -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.08.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Aug 2024 08:00:11 -0700 (PDT) From: Arthur Cohen To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Pierre-Emmanuel Patry Subject: [PATCH 097/125] gccrs: Add mappings for struct base and struct fields Date: Thu, 1 Aug 2024 16:57:33 +0200 Message-ID: <20240801145809.366388-99-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~incoming=patchwork.ozlabs.org@gcc.gnu.org From: Pierre-Emmanuel Patry Definition/usage mapping during name resolution was missing. gcc/rust/ChangeLog: * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Add mapping implementation. * resolve/rust-late-name-resolver-2.0.h: Add function visitor prototype override. Signed-off-by: Pierre-Emmanuel Patry --- .../resolve/rust-late-name-resolver-2.0.cc | 21 +++++++++++++++++++ .../resolve/rust-late-name-resolver-2.0.h | 2 ++ 2 files changed, 23 insertions(+) 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 dc7cde1b323..f580c23377b 100644 --- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc @@ -228,5 +228,26 @@ Late::visit (AST::TypePath &type) Definition (resolved->get_node_id ())); } +void +Late::visit (AST::StructExprStructBase &s) +{ + auto resolved = ctx.types.get (s.get_struct_name ().as_string ()); + + ctx.map_usage (Usage (s.get_struct_name ().get_node_id ()), + Definition (resolved->get_node_id ())); + DefaultResolver::visit (s); +} + +void +Late::visit (AST::StructExprStructFields &s) +{ + auto resolved = ctx.types.get (s.get_struct_name ().as_string ()); + + ctx.map_usage (Usage (s.get_struct_name ().get_node_id ()), + Definition (resolved->get_node_id ())); + + DefaultResolver::visit (s); +} + } // namespace Resolver2_0 } // namespace Rust diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.h b/gcc/rust/resolve/rust-late-name-resolver-2.0.h index 3a8a0060f5a..ee712b305d4 100644 --- a/gcc/rust/resolve/rust-late-name-resolver-2.0.h +++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.h @@ -46,6 +46,8 @@ public: void visit (AST::IdentifierExpr &) override; void visit (AST::PathInExpression &) override; void visit (AST::TypePath &) override; + void visit (AST::StructExprStructBase &) override; + void visit (AST::StructExprStructFields &) override; private: /* Setup Rust's builtin types (u8, i32, !...) in the resolver */