From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Nathan Trapuzzano Newsgroups: gmane.emacs.bugs Subject: bug#15814: 24.3.50; Signal error on malformed bindings in `cl-symbol-macrolet' (patch) Date: Wed, 06 Nov 2013 22:22:30 -0500 Message-ID: <87mwlggakp.fsf@nbtrap.com> References: <87k3gmmvk9.fsf@nbtrap.com> <87a9himfvp.fsf@nbtrap.com> <87ppqd2314.fsf@nbtrap.com> <871u2tgghu.fsf@nbtrap.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1383794597 28831 80.91.229.3 (7 Nov 2013 03:23:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 7 Nov 2013 03:23:17 +0000 (UTC) Cc: 15814@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Nov 07 04:23:21 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VeGBk-0007Lh-2W for geb-bug-gnu-emacs@m.gmane.org; Thu, 07 Nov 2013 04:23:20 +0100 Original-Received: from localhost ([::1]:37482 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeGBi-0006pL-7B for geb-bug-gnu-emacs@m.gmane.org; Wed, 06 Nov 2013 22:23:18 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35995) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeGBa-0006nn-1s for bug-gnu-emacs@gnu.org; Wed, 06 Nov 2013 22:23:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VeGBT-0004FO-Tw for bug-gnu-emacs@gnu.org; Wed, 06 Nov 2013 22:23:10 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:52286) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeGBS-0004F0-NL for bug-gnu-emacs@gnu.org; Wed, 06 Nov 2013 22:23:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VeGBS-00060a-AH for bug-gnu-emacs@gnu.org; Wed, 06 Nov 2013 22:23:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Nathan Trapuzzano Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 07 Nov 2013 03:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 15814 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 15814-submit@debbugs.gnu.org id=B15814.138379455923055 (code B ref 15814); Thu, 07 Nov 2013 03:23:02 +0000 Original-Received: (at 15814) by debbugs.gnu.org; 7 Nov 2013 03:22:39 +0000 Original-Received: from localhost ([127.0.0.1]:38072 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VeGB4-0005zm-En for submit@debbugs.gnu.org; Wed, 06 Nov 2013 22:22:38 -0500 Original-Received: from oproxy16-pub.mail.unifiedlayer.com ([69.89.22.201]:42980) by debbugs.gnu.org with smtp (Exim 4.80) (envelope-from ) id 1VeGB0-0005zc-Lk for 15814@debbugs.gnu.org; Wed, 06 Nov 2013 22:22:35 -0500 Original-Received: (qmail 11586 invoked by uid 0); 7 Nov 2013 03:22:32 -0000 Original-Received: from unknown (HELO host393.hostmonster.com) (66.147.240.193) by oproxy16.mail.unifiedlayer.com with SMTP; 7 Nov 2013 03:22:32 -0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=nbtrap.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:References:Subject:Cc:To:From; bh=7zavRxXb5pcw0glfHG/4Vac5cvJBz3OCv9urjOuGLZo=; b=lj03+vvEgycBWotYmve6hPnza4X6g5DhRfLWJJHs14NstCRAQoQc5R1Fnv9s8b1RRBYgGzvd7RtPvrdhcgVGHZhZBpf8fQrzTv9OA39HqMp+zDPdFJ9dNb/4gVnKvyx0; Original-Received: from [50.90.253.209] (port=52342 helo=Nathan-GNU) by host393.hostmonster.com with esmtpsa (TLSv1:CAMELLIA128-SHA:128) (Exim 4.80) (envelope-from ) id 1VeGAy-0001OR-CW; Wed, 06 Nov 2013 20:22:32 -0700 In-Reply-To: (Stefan Monnier's message of "Wed, 06 Nov 2013 21:08:39 -0500") User-Agent: Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3.50 (gnu/linux) X-Identified-User: {1585:host393.hostmonster.com:nbtrapco:nbtrap.com} {sentby:smtp auth 50.90.253.209 authed with nbtrap@nbtrap.com} X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:80103 Archived-At: --=-=-= Content-Type: text/plain Stefan Monnier writes: >> What's the alternative? Transform malformed let in some undefined way? > > Yup. Just like we've done so far. I think I understand what you want. This patch uses macroexp--warn-and-return. I'll try to move the checks in bytecomp.el/cconv.el later. Nathan --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=cl-macs.el.patch >From 3843a58d0ebcaea9e6c9446ca6b6f52611c8097d Mon Sep 17 00:00:00 2001 From: Nathan Trapuzzano Date: Tue, 5 Nov 2013 14:36:32 -0500 Subject: [PATCH] Print warning for malformed bindings in cl-symbol-macrolet. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/cl-macs.el | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 828fcda..824e73c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-11-05 Nathan Trapuzzano + + * emacs-lisp/cl-macs.el (cl-symbol-macrolet): Print warning for + malformed bindings form. + 2013-11-05 Eli Zaretskii * international/quail.el (quail-help): Be more explicit about the diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 60fdc09..9cdde5e 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1992,11 +1992,19 @@ by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...). (unwind-protect (progn (fset 'macroexpand #'cl--sm-macroexpand) - ;; FIXME: For N bindings, this will traverse `body' N times! - (macroexpand-all (cons 'progn body) - (cons (list (symbol-name (caar bindings)) - (cl-cadar bindings)) - macroexpand-all-environment))) + (let ((expansion + ;; FIXME: For N bindings, this will traverse `body' + ;; N times! + (macroexpand-all (cons 'progn body) + (cons (list (symbol-name (caar bindings)) + (cl-cadar bindings)) + macroexpand-all-environment)))) + (if (or (null (cdar bindings)) (cl-cddar bindings)) + (macroexp--warn-and-return + (format "Malformed `cl-symbol-macrolet' binding: %S" + (car bindings)) + expansion) + expansion))) (fset 'macroexpand previous-macroexpand)))))) ;;; Multiple values. -- 1.8.4.2 --=-=-=--