From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id B19423858285 for ; Wed, 7 Feb 2024 12:44:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B19423858285 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 B19423858285 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::430 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707309861; cv=none; b=mdsv2uDKHgLfzfXhbsC65e0E/1buJ8RJSwfMfDtVkS5t6m69aKHeSjwFATZoNbGLFrdPOEOFVIBN+Md6MB50pPrX0c09HcxururL7HPgKe90nRKfNdrAjoFBYOrHOQvs+A6xEdUYu2BfBZQckPrPhxgRdwEaKQgGUqT0IkpRxwE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707309861; c=relaxed/simple; bh=433LSMMt69sVGd61kvw6ZAtRQ/abhWVa1TAERCx76A8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=hsycwWEOoCt3ByazQTf/yu1jV3hNLTKo0L/dALvZP5pqjy/RzjWYK4M8DerWUV1gVmZV7slFxjXfusJX+afp8StTb3Tc49hOLPkAWJUWstGs1fybWn46jBwFhKemVk0jqpgpbCB7t47e69FeF01QXi73UnJRTmMNzR+5QYGq7W0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-33b29b5ea96so346985f8f.0 for ; Wed, 07 Feb 2024 04:44:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1707309850; x=1707914650; 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=mziRn53uDQ0kL2FGZgCxuPFqTax5Tj4yVpHHuRBgQOI=; b=DK41+OZG/zwDKJPhhfiHWTg1rYkItR1LeFSIYXt+CkJ25xm7SUZ0kunegdhy9NfAnk COC6TD3TBfY9T6IHpcFQpFjTzgbnUlzjjm2Q430yiX6zcGekz79PQtisRKYU0yRzRgBU ZGeEfO9MrzaUh77sG0/nCPwKIdgCQrXkITvztdgGxC64aIzgXBl3rr64luGULXrVujF7 ceQjrFoTTDqyOu4348PWbfdt8BGU/U2+TWx1jWbR2UG6O2UEMmCjXb6xsbMcKTUaBeWd NKzZR4oSiGH2X12EyntmYQC5gvMJodLKZwdMlBXSxuHpnCuTMWqLzM+nYsga//OrdPeG LftQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707309850; x=1707914650; 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=mziRn53uDQ0kL2FGZgCxuPFqTax5Tj4yVpHHuRBgQOI=; b=K+UXXMWra4QlgawHkdIYXLo4Y437rDSLjao6nK3cm6tR1p3S/YanaujLe3IHe83jWr jcnI051f2X9hdS34u5uRgzdXiJQP1wyYyG4Mf9uXDqU/AohZBl78sjSkABEKKLQD8jrZ P76Bp/l+8DV3pwkPcsEhKgUpdIySKuK4P+5rbCwVprKFFZdoZ4ptgrbISuMcsDHgD8rZ VuLwywTzpdtAJIt7/uACWE6Yo4OeYECMeUqxpAPfGnDvg4mfrNKuRvU2GjcZaqpyltVW 9/xgi1n2akAzaqoXv2/vMLlgli3iqNxEM/FWsl6y5yDIOEQ63dtNbfFFlAABovyJeJQm Picw== X-Gm-Message-State: AOJu0YzKrkUuarXPw62g12JyLSxUA7UD2Pyc3vNPhnvf6ojsSykJHXGo n/p2nmKGVyRwr77nxRwGqb8TKul+VsihWfzQAKOxeRtPaZD/463fLrlxDbW1Kg== X-Google-Smtp-Source: AGHT+IG3N2SY3TlL5EXiXkwK/jgFySNhFYY/OxRraEFXG0cLjM4puu7eYKrxjsR8YH2G+KX9HRuR5A== X-Received: by 2002:a5d:6da2:0:b0:33b:48ef:2df9 with SMTP id u2-20020a5d6da2000000b0033b48ef2df9mr3963706wrs.24.1707309850500; Wed, 07 Feb 2024 04:44:10 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCVZl2vEJW4pOS5Mrjk13fwtwt+RIhD0ggSSHLGrbG/cQTLCG8pw6VnIpvDy1KsWj/KQ8Zjs85EcRx8WgK9UYLiHWKq3G6pwnuiAmA1o 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.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Feb 2024 04:44:10 -0800 (PST) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Philip Herron Subject: [COMMITTED 12/25] gccrs: Fix ICE accessing empty vector without check Date: Wed, 7 Feb 2024 12:43:58 +0100 Message-ID: <20240207114419.1100894-13-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.4 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: Philip Herron Fixes #2747 gcc/rust/ChangeLog: * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): fix gcc/testsuite/ChangeLog: * rust/compile/issue-2747.rs: New test. --- gcc/rust/typecheck/rust-tyty-subst.cc | 3 ++- gcc/testsuite/rust/compile/issue-2747.rs | 31 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/rust/compile/issue-2747.rs diff --git a/gcc/rust/typecheck/rust-tyty-subst.cc b/gcc/rust/typecheck/rust-tyty-subst.cc index 0a8340e317d..5a753566d48 100644 --- a/gcc/rust/typecheck/rust-tyty-subst.cc +++ b/gcc/rust/typecheck/rust-tyty-subst.cc @@ -660,7 +660,8 @@ SubstitutionRef::get_mappings_from_generic_args ( if (args.get_type_args ().size () + offs > substitutions.size ()) { rich_location r (line_table, args.get_locus ()); - r.add_range (substitutions.front ().get_param_locus ()); + if (!substitutions.empty ()) + r.add_range (substitutions.front ().get_param_locus ()); rust_error_at ( r, diff --git a/gcc/testsuite/rust/compile/issue-2747.rs b/gcc/testsuite/rust/compile/issue-2747.rs new file mode 100644 index 00000000000..a9c09e7372f --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2747.rs @@ -0,0 +1,31 @@ +#[lang = "sized"] +pub trait Sized {} + +#[lang = "fn_once"] +pub trait FnOnce { + #[lang = "fn_once_output"] + type Output; + + extern "rust-call" fn call_once(self, args: Args) -> Self::Output; +} + +struct Foo<'a, 'b: 'a> { + x: &'a i32, + y: &'a i32, + a: &'b i32, + q: &'a [&'b i32], +} + +pub fn test<'x, 'y>(f: Foo<'x, 'y, ()>) { + // { dg-error "generic item takes at most 0 type arguments but 1 were supplied" "" { target *-*-* } .-1 } + let x = 5; + let y = 6; + let z = 7; + type F<'a, 'b> = fn(&'a i32, &'b i32) -> i32; + let f = Foo { + x: &x, + y: &y, + a: &z, + q: &[&x, &y], + }; +} -- 2.42.1