From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by sourceware.org (Postfix) with ESMTPS id 9AA4A3856956 for ; Wed, 5 Apr 2023 14:05:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9AA4A3856956 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-wm1-x32f.google.com with SMTP id j18-20020a05600c1c1200b003ee5157346cso23814973wms.1 for ; Wed, 05 Apr 2023 07:05:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1680703531; 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=7jGqIhnCvLCExBSHTdhRQCiCVGfsMOwDCWAqMZ4yqAc=; b=fMvcHqWIOkCMLsqizO+3O2Rht2X366y53xtkndaeqfBpRRIDv/XmZfmJDsDBEh+LZt SWf7LlIAWfMp2BXggFMMkl21GFr46ZemSXMuQzP8bmutqqHxkmSIaclMptI6tDtrnwdS byj6DsJkcDZlMLLOgMeEe25V4QpEH2AkSk+MNJYfrM3w8Cw9cPzUQ0lhKZWDD1tKHgky sweOCJxc8ZMAy/99Iv/9YYAQb39rwItOuK65IjiO19iDezD72Bp0U2lMY5RTQC0XpPRz 3K/VayeoL/dFD69pqdBsjj8Br/zYlICsSL4PgzuQTqTdX7al6YeKa+PBNhvT9svZ0TUl zwxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703531; 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=7jGqIhnCvLCExBSHTdhRQCiCVGfsMOwDCWAqMZ4yqAc=; b=LKVvp9eKfeClLfOWLa9HI9h1GdC2QbtqBhLyd27iSB3D6OGmJwdbfcwsWfgrLbSbCD girsfAvSf0GKH7O814LtKl5ghdO48Be/XxXRBwDtrG7QfZBG+GJu2k5Z8XBtOYXHOxHX OwR84GfZ0yFJsrL8wn6Yu4XXYLFGtyA/ekgQOUxxEdSWT8lrwyrQF7QIkl0WR2KE6pP0 AmC/5gi1Jk36CSF6JcSCWBg3udp4/c4sxTCfH0JqQtJnLflm/Nib/usvphb6mMvtYYHy BG2+WXuY+ynsqYZ9FkcccCIGBuIA+n7VMmrvFfRG1SdZwgygwTFmHIf2yALO4tHENwwZ aY5A== X-Gm-Message-State: AAQBX9cvCrEHcxfzcBZhEnGd1Yyp8ovFiWbxcW0uCO0+zCxOKpQEpL07 9zn5qNDFaaDF7aKTbSaHgYR/q1L1LtS1oOiT2w== X-Google-Smtp-Source: AKy350afnPJvfgyZXtXjryyXe151f01oZ/4wjUhRP2Mihfzp+XqdheIpFLZ6RAbCu4jndkFYGf0ucA== X-Received: by 2002:a05:600c:22d1:b0:3ee:4678:dde with SMTP id 17-20020a05600c22d100b003ee46780ddemr4909219wmg.27.1680703531354; Wed, 05 Apr 2023 07:05:31 -0700 (PDT) Received: from platypus.localdomain ([62.23.166.218]) by smtp.gmail.com with ESMTPSA id ay8-20020a05600c1e0800b003edddae1068sm2330150wmb.9.2023.04.05.07.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:05:31 -0700 (PDT) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, mxlol233 Subject: [committed 04/88] gccrs: rust: add bound parsing in parse_generic_arg. Date: Wed, 5 Apr 2023 16:02:48 +0200 Message-Id: <20230405140411.3016563-5-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140411.3016563-1-arthur.cohen@embecosm.com> References: <20230405140411.3016563-1-arthur.cohen@embecosm.com> Reply-To: arthur.cohen@embecosm.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-14.6 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 List-Id: From: mxlol233 gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_generic_arg): Add proper bound parsing. gcc/testsuite/ChangeLog: * rust/compile/bounds.rs: New test. Signed-off-by: Xiao Ma --- gcc/rust/parse/rust-parse-impl.h | 17 +++++++++++++++++ gcc/testsuite/rust/compile/bounds.rs | 10 ++++++++++ 2 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/rust/compile/bounds.rs diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index cbd40efcc9b..959e0338a10 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -6198,6 +6198,23 @@ Parser::parse_generic_arg () else return AST::GenericArg::create_error (); } + else if (next_tok->get_id () == COLON) + { + lexer.skip_token (); // skip ident + lexer.skip_token (); // skip colon + + auto tok = lexer.peek_token (); + std::vector> bounds + = parse_type_param_bounds (); + + auto type = std::unique_ptr ( + new AST::TraitObjectType (std::move (bounds), tok->get_locus (), + false)); + if (type) + return AST::GenericArg::create_type (std::move (type)); + else + return AST::GenericArg::create_error (); + } lexer.skip_token (); return AST::GenericArg::create_ambiguous (tok->get_str (), tok->get_locus ()); diff --git a/gcc/testsuite/rust/compile/bounds.rs b/gcc/testsuite/rust/compile/bounds.rs new file mode 100644 index 00000000000..ecb10d81f65 --- /dev/null +++ b/gcc/testsuite/rust/compile/bounds.rs @@ -0,0 +1,10 @@ +trait Foo { + type Bar; +} + +trait Copy {} + + +fn c>() where F::Bar: Copy { // { dg-warning "function is never used: 'c'" } +} + -- 2.40.0