From patchwork Sat Aug 1 10:23:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Richard Thomas X-Patchwork-Id: 1339687 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=trM4llY2; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BJgGR0l79z9sSt for ; Sat, 1 Aug 2020 20:23:25 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 13FCD385700B; Sat, 1 Aug 2020 10:23:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 13FCD385700B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1596277400; bh=OhQooGIWiHzqHuIhtBAYsPBHfE9p0ZfSU3/qaQTVmN4=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=trM4llY2uEBUQ1CYYCW91LnvAZPkWPu7xHsOeUKZN339W/iWWIq/t8B8nOT1rHmnP 5C2PdBLcVTl5ZuwPKHbWuvmRwvM4BBSkLCO5Uaodnld4j4Ie5iXuSvF5Pd3XNJ8Oui vQb8HR9ZHGOz8R5zLYqO1JCd/HpTbSVBhYu48feg= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by sourceware.org (Postfix) with ESMTPS id 00CDC3858D35; Sat, 1 Aug 2020 10:23:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 00CDC3858D35 Received: by mail-lf1-x129.google.com with SMTP id 140so18103174lfi.5; Sat, 01 Aug 2020 03:23:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=yG0dC39Lu1dm5MrpSvfX7HwfgWIaNPnwVEuyWtlLER4=; b=MXC2ERVgSG/Y8vOFGRWnLcRrQTHbFMP2zAxCm4DDeD/T9R1rOWaJ5ZqvNQ7gX6I8zS 0Jd1dxCuixE9PIptoJJV5Xt86llXkN3+ssib3KUfpDl9sSx76UVeBJkzfeOlosh94MZk Paewvdly/0B3gb23xuxUy4fy4i4rK5IQ4sN1L7y1Utvsa0+L14IKtam/nTkIRicej4GZ IqWrCf2TZLQmOCdGbLlE2rV02SOv79tbUjytvIq0YKUySugTN49D1pGXoSG/IHB7MdD3 gj2vmPMGER4/6oLopdl8+o5uRSLykRBbFEG9ZsMOi5PL+/uVWaOJp6ewUZApjQ62m1wL 9Y2Q== X-Gm-Message-State: AOAM530//Lo9LgotkyNBKoX2FGZ+LZwcyuN53D3tSTBzG+roMVBe0DoQ Wz7ClSzxcNoeNYfKhYREE6S3nCav3H0xDTUIJuc9oZyBr9o= X-Google-Smtp-Source: ABdhPJzbzF+84txiiO6K+DgLwebfvdHfL45lCK/J6mBIrUgq6o2Sqeo0btrCprQA691B642mIRYl8fMSEzhCESHST2g= X-Received: by 2002:a05:6512:1182:: with SMTP id g2mr4061361lfr.126.1596277394310; Sat, 01 Aug 2020 03:23:14 -0700 (PDT) MIME-Version: 1.0 Date: Sat, 1 Aug 2020 11:23:03 +0100 Message-ID: Subject: [Patch, fortran] PR96325 - Unclassifiable statement with syntax similar to a type-bound procedure call is accepted To: "fortran@gcc.gnu.org" , gcc-patches X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Paul Richard Thomas via Gcc-patches From: Paul Richard Thomas Reply-To: Paul Richard Thomas Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" The attached patch regtests on FC31/x86_64 - OK for trunk? Cheers Paul Commit message: This patch fixes PR96325. See the explanatory comment in the testcase. 2020-08-01 Paul Thomas gcc/fortran PR target/96325 * primary.c (gfc_match_varspec): In the case that a component reference is added to an intrinsic type component, emit the error message in this function. gcc/testsuite/ PR target/96325 * gfortran.dg/pr96325.f90: New test. * gfortran.dg/pr91589.f90: Update error message. diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index c0f66d3df22..a58a25924da 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -2023,7 +2023,8 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, { char name[GFC_MAX_SYMBOL_LEN + 1]; gfc_ref *substring, *tail, *tmp; - gfc_component *component; + gfc_component *component = NULL; + gfc_component *previous = NULL; gfc_symbol *sym = primary->symtree->n.sym; gfc_expr *tgt_expr = NULL; match m; @@ -2343,15 +2344,19 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, break; } + previous = component; + if (!inquiry && !intrinsic) component = gfc_find_component (sym, name, false, false, &tmp); else component = NULL; - /* In some cases, returning MATCH_NO gives a better error message. Most - cases return "Unclassifiable statement at..." */ if (intrinsic && !inquiry) - return MATCH_NO; + { + gfc_error ("%qs at %C is not an inquiry reference to an intrinsic " + "type component %qs", name, previous->name); + return MATCH_ERROR; + } else if (component == NULL && !inquiry) return MATCH_ERROR; diff --git a/gcc/testsuite/gfortran.dg/pr91589.f90 b/gcc/testsuite/gfortran.dg/pr91589.f90 index d02cb64bfc2..375d895e0b7 100644 --- a/gcc/testsuite/gfortran.dg/pr91589.f90 +++ b/gcc/testsuite/gfortran.dg/pr91589.f90 @@ -10,6 +10,6 @@ program p integer :: a end type type(t) :: x = t(1) - call sub (x%a%a) ! { dg-error "Syntax error in argument list" } + call sub (x%a%a) ! { dg-error "is not an inquiry reference" } end