From patchwork Tue Dec 4 00:28:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Lance Taylor X-Patchwork-Id: 203514 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 6D7DD2C008D for ; Tue, 4 Dec 2012 11:28:49 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1355185730; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:From:To:Subject:Date:Message-ID:User-Agent:MIME-Version: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=BTrSjlU 6L1hKWaEWZ3SpaI62ggE=; b=fWVeEa342BEhaiS57VLST82aSfjiBgPv7BgfDSX u5SVcilkucvHUh4bvhG/sDc92U4NkoTZEBSnVxyauqbw+tfRt7UVuqd2kNqvA0WQ urlrR7lp4pQBmdQlD+HwnKE5FvDc6j+sAs4bRs5CLT/NqKKO4CyQutqeBee+XDTn Nw9c= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-Google-DKIM-Signature:Received:Received:From:To:Subject:Date:Message-ID:User-Agent:MIME-Version:Content-Type:X-Gm-Message-State:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=MRD1iolNzG5SsXeFfBrpznZPsie7vtflEJ804BTyl8hbwXoFjRIqTUUc5VjLQ3 vyDcZWv14k5kQNSNKTYo5n2v6ccDZdJjdiFNXwTPVuRvX1GVpdlPeEis8/h9cphh 5EIuM/uzkAHwOOS19gMZLC9pznbnCcyNliihS/TCP6Yoo=; Received: (qmail 21510 invoked by alias); 4 Dec 2012 00:28:45 -0000 Received: (qmail 21500 invoked by uid 22791); 4 Dec 2012 00:28:44 -0000 X-SWARE-Spam-Status: No, hits=-4.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, KHOP_RCVD_TRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, RP_MATCHES_RCVD, TW_CC, T_TVD_MIME_NO_HEADERS X-Spam-Check-By: sourceware.org Received: from mail-pb0-f47.google.com (HELO mail-pb0-f47.google.com) (209.85.160.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 04 Dec 2012 00:28:39 +0000 Received: by mail-pb0-f47.google.com with SMTP id un1so2153223pbc.20 for ; Mon, 03 Dec 2012 16:28:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:subject:date:message-id:user-agent:mime-version :content-type:x-gm-message-state; bh=n3Ka0bXG58htmkv7zeeCYoJh6DvY5yqHi8wIfzyStcA=; b=KaoCOsQUBYSLj21Mf+6fbztLr7tWVhR36004F9d3pJrQxnTIb0AgjJ25yns35ART5b R0a9O9F8u6TlHdD/SbZTZGkB8kpd1xRLMCceoUt6AGkw2by6dyPd+JTFG3WjsD7tl3mW E/QEdSghtz2dnmHnD99OnnQ52PW1YcTVtK7dKnoQC2Bg8eRdRTfcFTu4jVyP/N4mHGD+ Qxq05Crl61djCMCjDD0qZkJbizV+K4VXWjgWXJYh6iPlIChp+ebliNDwLD7qrKq6WCZ9 0qO3+NOvHLYaPTBP2WpTn0xHMqAG7ZdMePBgYA7C0gphE3Q9B78G49T17x/rrN2rnFNc jxAA== Received: by 10.68.212.68 with SMTP id ni4mr33501459pbc.107.1354580918826; Mon, 03 Dec 2012 16:28:38 -0800 (PST) Received: from coign.google.com ([2401:fa00:0:9:224:d7ff:fe8f:f634]) by mx.google.com with ESMTPS id ip8sm8845533pbc.36.2012.12.03.16.28.36 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 03 Dec 2012 16:28:37 -0800 (PST) From: Ian Lance Taylor To: gcc-patches@gcc.gnu.org, gofrontend-dev@googlegroups.com Subject: Go patch committed: Don't permit go/defer calls to be parenthesized Date: Mon, 03 Dec 2012 16:28:33 -0800 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) MIME-Version: 1.0 X-Gm-Message-State: ALoCoQnVPjJGxazTsN0dHh/RlTLYdDiu+QmA5w+MtgsYWwdgTT6e1WwzAXUe2kGcAEG2miQ+GA7OLISQEdDtVEtWT2R4HbhqAGpWtE2X4waP/OOO16pxdJSEtWU3o16bqbzPlPtCtQS1yxkdBamXXIWnmkVwQI6RFBJ9qZRoVu/D8K5Me3IYcVigu186SLmy6ydj/qqFxoGv X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org The Go language spec does not permit go or defer calls to be parenthesized, but gccgo was permitting it. This patch issues an error for that case. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline. Ian diff -r 4427b2edf858 go/parse.cc --- a/go/parse.cc Sun Dec 02 23:20:02 2012 -0800 +++ b/go/parse.cc Mon Dec 03 16:26:16 2012 -0800 @@ -4089,13 +4089,16 @@ || this->peek_token()->is_keyword(KEYWORD_DEFER)); bool is_go = this->peek_token()->is_keyword(KEYWORD_GO); Location stat_location = this->location(); - this->advance_token(); + + const Token* token = this->advance_token(); Location expr_location = this->location(); + bool is_parenthesized = token->is_op(OPERATOR_LPAREN); + Expression* expr = this->expression(PRECEDENCE_NORMAL, false, true, NULL); Call_expression* call_expr = expr->call_expression(); - if (call_expr == NULL) - { - error_at(expr_location, "expected call expression"); + if (is_parenthesized || call_expr == NULL) + { + error_at(expr_location, "argument to go/defer must be function call"); return; }