From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id 1CD9E3857C66 for ; Wed, 7 Feb 2024 12:44:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1CD9E3857C66 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 1CD9E3857C66 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::330 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707309880; cv=none; b=PFpJdMiMrv5I0/d8BOckmAInMJQ9370Kt6NdJAWH6Ymg+FeHvcxikWt3MVrCgOObbmEMvwMUq2YgGqO9Aag/5DZkPxaWJVeNtLxKzW4GgnR6pavVNuL5xYamOuCANWkRb9ZB7Jfvp27up4QJDlSOJHYffi7LWh8zt5LiosSlVnA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707309880; c=relaxed/simple; bh=Udcl/+wQYMuquLHB1iGy05iKpoWCJeCMz8uEudXWGS8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=AsS63F0w2rt0hYDvZAY6Jt+Dj4mcDcXbRiiPRfKbxknkDmZrNRFKpCdu3cTW+3+Ltd3e1Y1tBs8C7JTo4rcPOxDUFQfJ1hqTkw1NcNPwANqGPZkNLkn7PPOUNLA3FZqGantlQEjNrgX15ek/mKJ3p3VgZEN72tiL7wFdKyN5+5M= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-410219f18f9so506295e9.1 for ; Wed, 07 Feb 2024 04:44:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1707309862; x=1707914662; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=LCByLtWih5FZm1TYTsIgXXktR62eqa3J5ps1uxC2ArE=; b=XKQVI6oPU0yIOV9xUD9V7Z8uYjtyu8lA6Jv2hEcD6Hu2ShgvVvsdTz2D6TBhbX0/Bw GPr973q6IV/7Ff1Ch0BxLqz8awCervSESs0C2SDZW4VGCWCFu+F2u+BV2mo6PX9M/hvq I0J7xl+kltE+qXcKYHxZkcW06JJR7ndnJZxHQAofrfIzdphW5vgi9bwj79SLB52Xt0vQ X66DPPQp/tZ9puxH2r5nt0UZ+ByPIiF739vTQ8lL7jdi8ZDXoKsby9sO8eJ42ggbK1Ny NkdrkDs6oEVti1qh8kKN+cb+CTLTDt1wcmXei496qV4o9cmmi2MQ32nBLh6aUk3243AQ Nk8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707309862; x=1707914662; h=content-transfer-encoding:mime-version:reply-to: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=LCByLtWih5FZm1TYTsIgXXktR62eqa3J5ps1uxC2ArE=; b=K4rBmvO+z51vZ7yR+AV8c6wK7XnsyBio9Rh9oQnV4jblLyA8QlgFn+agGdZPzeIUS9 AcwYEcIXswtf3gSHz133I5ZxiyJkqoaskSH93/dW+bRmQJHU+2TFR9BN+wlrM7JiltA8 WvOIgogqxnM+56LjxmfLqH1FNL6OUlTpCiaHBVLF4b9yn5lixtv8QdIX7eVot6Sw5gVw /1X7CBDvCG2h9yL41djgqnENDI0j5lqDRaun+uGb3hT+cxYdrkYY/Etp9Fch3vIFZTYb tsyVXbCCov+BgUuFc1ocW1J7o+EWrJCm1Aop1X0woW110J4zFYZYPv9jiIvemdh4m/74 vU3g== X-Gm-Message-State: AOJu0YziTBl492hR+5Un7d9bFUcJbqglJoPWCSZNnZv3qomr6byYzSQK CxIDOiaGtXEQNBAs6PBTb/3Ld3nE8IrB9a7mIRzZHHXWHiPXfYE99jIa9UCLqg== X-Google-Smtp-Source: AGHT+IHPYZV0JfoUUrEuRuX4Q0n8dl94symWPiZ/J4lQcyPsNmPVyNpHoNVvpmk2E95rTX9mFsMMQw== X-Received: by 2002:a05:600c:4f05:b0:40f:4e0a:4ead with SMTP id l5-20020a05600c4f0500b0040f4e0a4eadmr4336026wmq.26.1707309861976; Wed, 07 Feb 2024 04:44:21 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUdprJjr7/hwyEP9P8hm5lefDmSZ1gcozy5oIHL3r5Q41HVPszt3cPh3sW7lVqp0/fciHU0+EIJz1147rez0Xufo4t30jTo Received: from platypus.sou.embecosm-corp.com ([212.69.42.53]) by smtp.gmail.com with ESMTPSA id x19-20020a05600c2a5300b0040fbdd6f69bsm5044188wme.33.2024.02.07.04.44.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Feb 2024 04:44:21 -0800 (PST) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Kushal Pal Subject: [COMMITTED 25/25] gccrs: Fix macro parsing for trait items. Date: Wed, 7 Feb 2024 12:44:11 +0100 Message-ID: <20240207114419.1100894-26-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.42.1 In-Reply-To: <20240207114419.1100894-2-arthur.cohen@embecosm.com> References: <20240207114419.1100894-2-arthur.cohen@embecosm.com> Reply-To: arthur.cohen@embecosm.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-13.5 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,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Kushal Pal gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_trait_item): Handle macros in trait items similar to how its handled for trait implementation items. Signed-off-by: Kushal Pal --- gcc/rust/parse/rust-parse-impl.h | 37 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index ed264371db7..ac1754542d4 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -5094,6 +5094,18 @@ Parser::parse_trait_item () const_TokenPtr tok = lexer.peek_token (); switch (tok->get_id ()) { + case SUPER: + case SELF: + case CRATE: + case DOLLAR_SIGN: + // these seem to be SimplePath tokens, so this is a macro invocation + // semi + return parse_macro_invocation_semi (std::move (outer_attrs)); + case IDENTIFIER: + if (lexer.peek_token ()->get_str () == Values::WeakKeywords::DEFAULT) + return parse_function (std::move (vis), std::move (outer_attrs)); + else + return parse_macro_invocation_semi (std::move (outer_attrs)); case TYPE: return parse_trait_type (std::move (outer_attrs), vis); case CONST: @@ -5110,25 +5122,14 @@ Parser::parse_trait_item () case EXTERN_KW: case FN_KW: return parse_function (std::move (vis), std::move (outer_attrs)); - - default: { - // TODO: try and parse macro invocation semi - if fails, maybe error. - std::unique_ptr macro_invoc - = parse_macro_invocation_semi (outer_attrs); - - if (macro_invoc == nullptr) - { - // TODO: error? - return nullptr; - } - else - { - return macro_invoc; - } - /* FIXME: macro invocations can only start with certain tokens. be - * more picky with these? */ - } + default: + break; } + add_error (Error (tok->get_locus (), + "unrecognised token %qs for item in trait", + tok->get_token_description ())); + // skip? + return nullptr; } // Parse a typedef trait item. -- 2.42.1