From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.bugs Subject: bug#15122: 24.3.50; [PATCH] byte-compiler warnings about destructive functions Date: Sat, 17 Aug 2013 22:26:16 -0700 (PDT) Message-ID: <9ee2e7bb-6036-4e81-bb44-86d4ac74e7b8@default> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="__1376803578549230277abhmt111.oracle.com" X-Trace: ger.gmane.org 1376803642 5547 80.91.229.3 (18 Aug 2013 05:27:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 18 Aug 2013 05:27:22 +0000 (UTC) To: 15122@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Aug 18 07:27:22 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 1VAvWM-0003ea-82 for geb-bug-gnu-emacs@m.gmane.org; Sun, 18 Aug 2013 07:27:22 +0200 Original-Received: from localhost ([::1]:37764 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAvWL-0003wc-JB for geb-bug-gnu-emacs@m.gmane.org; Sun, 18 Aug 2013 01:27:21 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43416) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAvWA-0003vc-Ur for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:27:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VAvW2-00061v-Ku for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:27:10 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:43491) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAvW2-00061r-HQ for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:27:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VAvW2-0004VF-9F for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:27:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Drew Adams Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 18 Aug 2013 05:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 15122 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.137680361417293 (code B ref -1); Sun, 18 Aug 2013 05:27:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 18 Aug 2013 05:26:54 +0000 Original-Received: from localhost ([127.0.0.1]:37807 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VAvVt-0004Ur-TQ for submit@debbugs.gnu.org; Sun, 18 Aug 2013 01:26:54 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:41615) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VAvVr-0004UZ-IL for submit@debbugs.gnu.org; Sun, 18 Aug 2013 01:26:52 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VAvVd-0005yW-2G for submit@debbugs.gnu.org; Sun, 18 Aug 2013 01:26:46 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:59614) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAvVc-0005yS-VA for submit@debbugs.gnu.org; Sun, 18 Aug 2013 01:26:36 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43306) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAvVV-0003uR-F6 for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:26:36 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VAvVN-0005wq-TA for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:26:29 -0400 Original-Received: from aserp1040.oracle.com ([141.146.126.69]:34909) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VAvVN-0005wm-M9 for bug-gnu-emacs@gnu.org; Sun, 18 Aug 2013 01:26:21 -0400 Original-Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by aserp1040.oracle.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id r7I5QKNi027231 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 18 Aug 2013 05:26:20 GMT Original-Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r7I5QJEC021178 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 18 Aug 2013 05:26:19 GMT Original-Received: from abhmt111.oracle.com (abhmt111.oracle.com [141.146.116.63]) by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r7I5QIUP022338 for ; Sun, 18 Aug 2013 05:26:18 GMT X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.8 (707110) [OL 12.0.6680.5000 (x86)] X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). 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:77476 Archived-At: --__1376803578549230277abhmt111.oracle.com Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable This StackOverflow entry suggested that the Emacs-Lisp byte compiler be able to warn about the use of functions that are destructive, i.e., can modify data structures in place: http://stackoverflow.com/questions/17610046/elisp-destructive-operation-war= ning Attached is a patch that provides this, at least a start. It covers the basic functions that can perform in-place data structure=20 modification: lists, strings, vectors and other arrays, symbol properties. These are generally the functions identified as destructive or modifying in the Elisp manual. A comment in the code identifies some other possible candidates that occurred to me while browsing the manual. Modify the list of functions as you see fit (variable `byte-compile-destructive-functions'). I'm no expert on some of the data structure implementations, and the manual is sometimes not so clear about whether destructive modification occurs. And perhaps there are cases where although the modification is destructive at an implementation level the user need not be concerned about that level, so such functions should not be included. Dunno. Perhaps also something could be done in the future wrt recognition of particular cases for `setf' modification. In GNU Emacs 24.3.50.1 (i686-pc-mingw32) of 2013-08-07 on ODIEONE Bzr revision: 113750 lekktu@gmail.com-20130808011911-0jzpc9xuncegg6x9 Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --prefix=3D/c/Devel/emacs/binary --enable-checking=3Dyes,glyphs CFLAGS=3D-O0 -g3 LDFLAGS=3D-Lc:/Devel/emacs/lib CPPFLAGS=3D-Ic:/Devel/emacs/include' --__1376803578549230277abhmt111.oracle.com Content-Type: application/octet-stream; name="bytecomp-2013-08-17a.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bytecomp-2013-08-17a.patch" ZGlmZiAtYyBieXRlY29tcC5lbCBieXRlY29tcC1wYXRjaGVkLmVsCioqKiBieXRlY29tcC5lbAlT YXQgQXVnIDE3IDIxOjM1OjA1IDIwMTMKLS0tIGJ5dGVjb21wLXBhdGNoZWQuZWwJU2F0IEF1ZyAx NyAyMjoxMTo0NSAyMDEzCioqKioqKioqKioqKioqKgoqKiogMjc0LDI4MSAqKioqCiAgKGRlZmNv bnN0IGJ5dGUtY29tcGlsZS13YXJuaW5nLXR5cGVzCiAgICAnKHJlZGVmaW5lIGNhbGxhcmdzIGZy ZWUtdmFycyB1bnJlc29sdmVkCiAgCSAgICAgb2Jzb2xldGUgbm9ydW50aW1lIGNsLWZ1bmN0aW9u cyBpbnRlcmFjdGl2ZS1vbmx5CiEgCSAgICAgbWFrZS1sb2NhbCBtYXBjYXIgY29uc3RhbnRzIHN1 c3BpY2lvdXMgbGV4aWNhbCkKICAgICJUaGUgbGlzdCBvZiB3YXJuaW5nIHR5cGVzIHVzZWQgd2hl biBgYnl0ZS1jb21waWxlLXdhcm5pbmdzJyBpcyB0LiIpCiAgKGRlZmN1c3RvbSBieXRlLWNvbXBp bGUtd2FybmluZ3MgdAogICAgIkxpc3Qgb2Ygd2FybmluZ3MgdGhhdCB0aGUgYnl0ZS1jb21waWxl ciBzaG91bGQgaXNzdWUgKHQgZm9yIGFsbCkuCiAgCi0tLSAyNzQsMjgyIC0tLS0KICAoZGVmY29u c3QgYnl0ZS1jb21waWxlLXdhcm5pbmctdHlwZXMKICAgICcocmVkZWZpbmUgY2FsbGFyZ3MgZnJl ZS12YXJzIHVucmVzb2x2ZWQKICAJICAgICBvYnNvbGV0ZSBub3J1bnRpbWUgY2wtZnVuY3Rpb25z IGludGVyYWN0aXZlLW9ubHkKISAJICAgICBtYWtlLWxvY2FsIG1hcGNhciBjb25zdGFudHMgc3Vz cGljaW91cyBsZXhpY2FsIGRlc3RydWN0aXZlKQogICAgIlRoZSBsaXN0IG9mIHdhcm5pbmcgdHlw ZXMgdXNlZCB3aGVuIGBieXRlLWNvbXBpbGUtd2FybmluZ3MnIGlzIHQuIikKKyAKICAoZGVmY3Vz dG9tIGJ5dGUtY29tcGlsZS13YXJuaW5ncyB0CiAgICAiTGlzdCBvZiB3YXJuaW5ncyB0aGF0IHRo ZSBieXRlLWNvbXBpbGVyIHNob3VsZCBpc3N1ZSAodCBmb3IgYWxsKS4KICAKKioqKioqKioqKioq KioqCioqKiAyOTgsMzAzICoqKioKLS0tIDI5OSwzMDUgLS0tLQogICAgbWFwY2FyICAgICAgbWFw Y2FyIGNhbGxlZCBmb3IgZWZmZWN0LgogICAgY29uc3RhbnRzICAgbGV0LWJpbmRpbmcgb2YsIG9y IGFzc2lnbm1lbnQgdG8sIGNvbnN0YW50cy9ub252YXJpYWJsZXMuCiAgICBzdXNwaWNpb3VzICBj b25zdHJ1Y3RzIHRoYXQgdXN1YWxseSBkb24ndCBkbyB3aGF0IHRoZSBjb2RlciB3YW50ZWQuCisg ICBkZXN0cnVjdGl2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gbW9kaWZ5IGRhdGEgc3RydWN0dXJlIGlu IHBsYWNlLgogIAogIElmIHRoZSBsaXN0IGJlZ2lucyB3aXRoIGBub3QnLCB0aGVuIHRoZSByZW1h aW5pbmcgZWxlbWVudHMgc3BlY2lmeSB3YXJuaW5ncyB0bwogIHN1cHByZXNzLiAgRm9yIGV4YW1w bGUsIChub3QgbWFwY2FyKSB3aWxsIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IG1hcGNhci4iCioq KioqKioqKioqKioqKgoqKiogMzUzLDM1OCAqKioqCi0tLSAzNTUsMzcwIC0tLS0KICAgICAgICAg ICAgICAgICAgICAodAogICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIGJ5dGUtY29tcGlsZS13 YXJuaW5ncyAobGlzdCB3YXJuaW5nKSkpKSkpKQogIAorIDs7IFBvc3NpYmxlIGNhbmRpZGF0ZXM/ IGBjbHJoYXNoJywgYG1hdGNoLWRhdGEnICh3aXRoIFJFVVNFKSwgYHB1dCcsIGBwdXRoYXNoJywK KyA7OyBgcmVtaGFzaCcsIGBzZXQtY2hhci10YWJsZS1leHRyYS1zbG90JywgYHNldC1jaGFyLXRh YmxlLXBhcmVudCcsCisgOzsgYHNldC1jaGFyLXRhYmxlLXJhbmdlJywgYHNldHBsaXN0JywgYHVu aW50ZXJuJywgYHdyaXRlLXJlZ2lvbicgKG1lcmdpbmcgYW5ub3RhdGlvbnMpPworIDs7IFdoYXQg dG8gZG8gYWJvdXQgYHNldGYnIHdpdGggdmFyaW91cyBnZW5lcmFsaXplZCB2YXJzPworIDs7Cisg KGRlZnZhciBieXRlLWNvbXBpbGUtZGVzdHJ1Y3RpdmUtZnVuY3Rpb25zCisgICAnKGFzZXQgY2xl YXItc3RyaW5nIGRlbGV0ZSBkZWxldGUtZHVwcyBkZWxxIGZpbGxhcnJheSBuYnV0bGFzdCBuY29u YyBucmV2ZXJzZSBwbGlzdC1wdXQKKyAgICAgcmluZy1pbnNlcnQgcmluZy1pbnNlcnQtYXQtYmVn aW5uaW5nIHJpbmctcmVtb3ZlIHNldGNhciBzZXRjZHIgc29ydCBzdG9yZS1zdWJzdHJpbmcpCisg ICAiTGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBjYW4gbW9kaWZ5IGRhdGEgc3RydWN0dXJlcyBpbiBw bGFjZS4iKQorIAogIChkZWZ2YXIgYnl0ZS1jb21waWxlLWludGVyYWN0aXZlLW9ubHktZnVuY3Rp b25zCiAgICAnKGJlZ2lubmluZy1vZi1idWZmZXIgZW5kLW9mLWJ1ZmZlciByZXBsYWNlLXN0cmlu ZyByZXBsYWNlLXJlZ2V4cAogICAgICBpbnNlcnQtZmlsZSBpbnNlcnQtYnVmZmVyIGluc2VydC1m aWxlLWxpdGVyYWxseSBwcmV2aW91cy1saW5lIG5leHQtbGluZQoqKioqKioqKioqKioqKioKKioq IDI5MjUsMjkzMCAqKioqCi0tLSAyOTM3LDI5NDYgLS0tLQogICAgICAgICAgICAgICAoaGFuZGxl ciAoZ2V0IGZuICdieXRlLWNvbXBpbGUpKSkKICAgICAgICAgICh3aGVuIChtYWNyb2V4cC0tY29u c3Qtc3ltYm9sLXAgZm4pCiAgICAgICAgICAgIChieXRlLWNvbXBpbGUtd2FybiAiYCVzJyBjYWxs ZWQgYXMgYSBmdW5jdGlvbiIgZm4pKQorICAgICAgICAgKGFuZCAoYnl0ZS1jb21waWxlLXdhcm5p bmctZW5hYmxlZC1wICdkZXN0cnVjdGl2ZSkKKyAgICAgICAgICAgICAgKG1lbXEgZm4gYnl0ZS1j b21waWxlLWRlc3RydWN0aXZlLWZ1bmN0aW9ucykKKyAgICAgICAgICAgICAgKGJ5dGUtY29tcGls ZS13YXJuICJgJXMnIGNhbiBtb2RpZnkgZGF0YSBzdHJ1Y3R1cmUgaW4gcGxhY2UgXAorIFwoZGVz dHJ1Y3RpdmUpIiBmbikpCiAgICAgICAgICAoYW5kIChieXRlLWNvbXBpbGUtd2FybmluZy1lbmFi bGVkLXAgJ2ludGVyYWN0aXZlLW9ubHkpCiAgICAgICAgICAgICAgIChtZW1xIGZuIGJ5dGUtY29t cGlsZS1pbnRlcmFjdGl2ZS1vbmx5LWZ1bmN0aW9ucykKICAgICAgICAgICAgICAgKGJ5dGUtY29t cGlsZS13YXJuICJgJXMnIHVzZWQgZnJvbSBMaXNwIGNvZGVcblwKCkRpZmYgZmluaXNoZWQuICBT YXQgQXVnIDE3IDIyOjEyOjA0IDIwMTMK --__1376803578549230277abhmt111.oracle.com--