From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ignacio Casso Newsgroups: gmane.emacs.bugs Subject: bug#53938: 27.2; Defining function that modifies cl-struct before defining cl-struct Date: Fri, 11 Feb 2022 10:45:50 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2852"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.6.10; emacs 27.2 To: 53938@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Feb 11 11:03:15 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nISlm-0000Tp-V2 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 11 Feb 2022 11:03:15 +0100 Original-Received: from localhost ([::1]:38290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nISlk-0004ZS-Ol for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 11 Feb 2022 05:03:12 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:39204) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nISla-0004ZK-QB for bug-gnu-emacs@gnu.org; Fri, 11 Feb 2022 05:03:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:36239) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nISla-0003yE-GG for bug-gnu-emacs@gnu.org; Fri, 11 Feb 2022 05:03:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nISla-0003ue-84 for bug-gnu-emacs@gnu.org; Fri, 11 Feb 2022 05:03:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Ignacio Casso Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 11 Feb 2022 10:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 53938 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.164457374914995 (code B ref -1); Fri, 11 Feb 2022 10:03:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 11 Feb 2022 10:02:29 +0000 Original-Received: from localhost ([127.0.0.1]:58369 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nISl3-0003tn-Gg for submit@debbugs.gnu.org; Fri, 11 Feb 2022 05:02:29 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:45546) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nISl1-0003tg-RB for submit@debbugs.gnu.org; Fri, 11 Feb 2022 05:02:28 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:39096) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nISl1-0004UU-KN for bug-gnu-emacs@gnu.org; Fri, 11 Feb 2022 05:02:27 -0500 Original-Received: from mail-oln040092072074.outbound.protection.outlook.com ([40.92.72.74]:23527 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nISkz-0003vd-KW for bug-gnu-emacs@gnu.org; Fri, 11 Feb 2022 05:02:27 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J7T09W+KlGaV0qA/bmXv2HMR62NNHhTQtg0x0aKHA5a/wDQW7iXN43I9k0+7YXLLbYxv6B7nu/YSCWzRGekYtvEUG/SF3TZt81TPnPcDAJ/7vi2A1adskpgesumopWHBXh8kkuh+Iv8nmdfVW1jDtwB/TNTRidRtCEEelvrVAzXOrJb8FMJ2RqxymFjsX6uXH4UTbFWu9nMKa2Ed6mZntD0CaKP/RWPVILKp9SrWk73+ZOygoB6LDJ0JUU6pCDZFMTStJpqa9O3lQ5dNEBDNG59XcCMg3VXCnkP8LAYWxW60hWdWrqW2eJFWu1MdL/bSPQXPQqkzNJrkXu1eofzJKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ws6+2ClMgHPL3VWQcMvSf0sglo66bMgXSYk2Gmiy9WQ=; b=c80Z414qb4bBGRnioTMS8KEhvdoLwEoOToFSzgmyt/QX7p5dqcZxJKBnEsx9JCucTRU30o1aKG+bdz6nroOkgA5Of0o/OSiot0S9yh6YemWAeQXsyHCmz9pAEJIXfDNoqKGrr+HZsakzVKXySO3kthW/cPQ+DgtOGjNI9z9eH+5AUuW+tM3HcGKfSLoLlWml/h8qVy5y9kJknxNgqtu91UDglVzE2BzSoFstrB7lKE/YxOBHkm8ix4c7ZoPdrTsLSH3GLGSczGv72LoxUx5+PaU0ZAPGEPm2ZJ/pnMEIOAqF+hpCyl7CqKAxgepsfglr42unGYFuHjKJEON46LRUuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ws6+2ClMgHPL3VWQcMvSf0sglo66bMgXSYk2Gmiy9WQ=; b=Ym5+0Da1Xbi4FluhUsqigwPOl05+1jUWAo9qCPZnPnYeVpSMs8VrZGunp5WL4b5R+daYwvbpa9WWcDqqd10rMC3D7KutHFM17Nn46eaH/SkIg2rJh+hnLngyCNK3a9m0G23xvhQJAfvGyCoJLLA+Uvevj1O7lnMAqMSU58ryQEehO43rU+U6qfAlW3DFX3mKdjgkOjTGVt/B/BcSPGAeWk1ZfppwcBSZOR6/lrudk/pM55cFQgO/UN8nHb3f2zrZ3g0fKP8WAE42o798jscC1dCS5jIBjeCgvLm2SCsGuBXLle0P+kVA6kauSUWvLo4Plk43Zz0LRGbaYeYWsrYitw== Original-Received: from PAXPR06MB7760.eurprd06.prod.outlook.com (2603:10a6:102:155::8) by AM6PR06MB4390.eurprd06.prod.outlook.com (2603:10a6:20b:4::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.17; Fri, 11 Feb 2022 10:02:23 +0000 Original-Received: from PAXPR06MB7760.eurprd06.prod.outlook.com ([fe80::50de:9162:7856:2782]) by PAXPR06MB7760.eurprd06.prod.outlook.com ([fe80::50de:9162:7856:2782%6]) with mapi id 15.20.4975.015; Fri, 11 Feb 2022 10:02:23 +0000 X-TMN: [7Gvud0kgncND0+i1UpdBX/78HNLpaxLw] X-ClientProxiedBy: MR1P264CA0078.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:3f::24) To PAXPR06MB7760.eurprd06.prod.outlook.com (2603:10a6:102:155::8) X-Microsoft-Original-Message-ID: <87bkzd4t7a.fsf@hotmail.com> X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6f5e4987-13e7-4a1d-0af2-08d9ed459914 X-MS-TrafficTypeDiagnostic: AM6PR06MB4390:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OcK8IF0IwjHp71OT8D/RHVN0Jd6/ypTQ5DexvMEr8pu02zENQJM1Oym+cvPYUW/YHzj5mwJdwIz9yt3Y/G1BcDcxBMA/gWMt8ElYiqWccj4wBPxtrBvUlFVF/Um0zp3w8w6fbj8Q2y2Rpi9/r0lTYajwSZLFJ5SpXB9A/049DBMax0rbxfA18Ia5Q3Klkr4I3/aF+9TDQPZykTQ+RNJIMQsy85yQgvxhxqZnEY/gMwuAH4IVI3Cm8JAq3iFn+RDbENZLJS3FFrlrF+fmwIXI7JFeeAlVjHUKwGgIwMUjCzlcmNvjuGVtR0MEsA36rUpq1Dq+oBlc2pGrbmum8bNcO+EgnB9CqhMo+xqu4BT9R0GiJBRJQ+ncHG27hvV+kEfe/CI+Lwb3rw9UK5gylfIAyJhCGNg7w9qSjKw9T8I85wpv6ez7u9FeGInz3fPzz2WYBQmKER5ErwxOCZp6JVrIYc9C0FUUiI8cWK4g2I0z+wZLFM4LFtVf0O+cvzxdd75fthArBjk4sGwXDe3moJXuE7t8GSzF245BpHX985l218Gmsg+14yZUJ4isJ6BbNQCZ8BHfeUhxp4zCpkKVer08kA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: R4p32agymwRmxsuWQoH2Suu36jnw9Kf0rUow6Des+AbxnyQb/gC+ec65J8iLebWGcelWncLb+1L1rucCDnbfZH1lD+95r5G0bcM8+F2n43g7/OQwOOkAbeL/FD6TrWEwGG57Uzia868kbJ4Eddl4dClQuHxJbVea+FI8sfNm1Ka15vGjcOIjCdUjcoQz+SuoFjLi8Zjq7fbrxds2IaiNcWwIwrg4DPO3eQElsW3v/CcYVP69RAaFr5U4CkdCtSJyg7Vf65tkx8n9tiRqciFSZp6R6znlI7jRyj6D80rlrDkZ7g7HsBhYJDShX/R9WuPd3dvKtMiRd9KS/E+GlahZmb+ODtZ+fWWN8BFezgDn1qncOp4PrE+Zfq9PvtP5GSNljZzPCSefBwMaR+/gTtUDPUy8GOhn06ewZElMnVcoH+cSgAqEehPMWSc25DO6dWiIL17hNvyB00P6/41cNg5s2Io0ubV41kbhXp1YMAd09/8hb1rEmmkbQ8XxwzZXL8mWXXAfEFhdowY4EJHtRmV6YYW2advCkh5FXhOebWMAuwJWYFcdfmv+M2F9RQwq67ROVbabzAkegpnd1pCjFQAgLYRNsyRKpb/lUPRVd0+xT2oxZwspkszclqT3NAkIDsXEmGoolroykAYBzwAr+iUqdivHTguwmqmtwP8KlVHlVrjr2TluCeVtNsi58p8EfzmVXOM8X6divT7PVK25I3ig1pwgxU/jL429TgKVRsou7q12FwYzhtoWiQVuOR 8gCMj1n/vQYPn/LqekdTtE2MW4f3KIem4BB4/zPc6w/e+bozRcWLldr0l4/BePkYdW/wIouOW8cLNH+jHW1Qg3y6BEYlJ0oyue X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-6e454.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 6f5e4987-13e7-4a1d-0af2-08d9ed459914 X-MS-Exchange-CrossTenant-AuthSource: PAXPR06MB7760.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Feb 2022 10:02:23.2651 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR06MB4390 Received-SPF: pass client-ip=40.92.72.74; envelope-from=ignaciocasso@hotmail.com; helo=EUR03-VE1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:226659 Archived-At: Hello, I've noticed a possible bug in Emacs. If you define a function that uses a cl struct before defining the cl struct (e.g., because the struct is defined in a package to be autoloaded and the function in your init file), there is an error when calling the function later. Here is a simple elisp file to reproduce it, starting Emacs with "emacs -Q": (require 'cl-macs) (defun change-name (struct new-name) (setf (my-struct-name struct) new-name)) (cl-defstruct my-struct name) (setq my-struct (make-my-struct)) (change-name my-struct "My struct") This produces the following error: Debugger entered--Lisp error: (void-function \(setf\ my-struct-name\)) (\(setf\ my-struct-name\) new-name v) (let* ((v struct)) (\(setf\ my-struct-name\) new-name v)) change-name(#s(my-struct :name nil) "asdf") eval((change-name my-struct "asdf") nil) elisp--eval-last-sexp(nil) eval-last-sexp(nil) funcall-interactively(eval-last-sexp nil) call-interactively(eval-last-sexp nil nil) command-execute(eval-last-sexp) A more realistic example, which produces the same error: (defun my-package-config () (setf (package-struct-slot package-var) 'new-value)) (eval-after-load 'my-package '(my-package-config)) (cl-defstruct package-struct slot) (defvar package-var (make-package-struct)) (provide 'my-package) It does not work either if we use instead a form inside eval-after-load instead of defining a function, as in this example: (eval-after-load 'my-package '(setf (package-struct-slot package-var) 'new-value)) However, it does work if we do something like this: (setq my-package-config '(setf (package-struct-slot package-var) 'new-value)) (eval-after-load 'my-package '(eval my-package-config)) I realize that this might be a design constraint given that this common lisp feature is "emulated", but maybe it should be better documented or produce more descriptive errors? It's a really uncommon case though, I only encountered it trying to configure in a weird way mu4e which uses cl structs. Regards, Ignacio In GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.20) of 2022-01-16 built on ignacio-IdeaPad-3-15ADA05 Windowing system distributor 'The X.Org Foundation', version 11.0.12013000 System Description: Ubuntu 20.04.3 LTS