Subject: bug#38611: closed (Re: bug#38611: Guile 2.9.7 regression: "duplicate" record field names)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 12 Jan 2020 20:58:02 +0000

Your bug report

#38611: Guile 2.9.7 regression: "duplicate" record field names

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
38611: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=38611
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#38611: Guile 2.9.7 regression: "duplicate" record field names
From: Andy Wingo <[email-masked]>
To: Göran Weinholt <[email-masked]>
Cc: [email-masked]
Date: Sun, 12 Jan 2020 21:56:55 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On Sat 14 Dec 2019 14:31, Göran Weinholt <[email-masked]> writes:

> The following program works in Guile 2.2.6 (and other R6RS
> implementations), but raises an exception in Guile 2.9.7. A field called
> "name" exists in record type a and record type b, but there is no actual
> naming conflict as I understand it.
>
> (import (rnrs))
>
> (define-record-type a
>   (fields name))
>
> (define-record-type b
>   (parent a)
>   (fields name))
>
> (let ((x (make-b 'a 'b)))
>   (write (list (a-name x)
>                (b-name x)))
>   (newline))

Fixed in master.  Thanks for the report!

Andy

Subject: Guile 2.9.7 regression: "duplicate" record field names
From: Göran Weinholt <[email-masked]>
To: [email-masked]
Date: Sat, 14 Dec 2019 14:31:10 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello schemers,

The following program works in Guile 2.2.6 (and other R6RS
implementations), but raises an exception in Guile 2.9.7. A field called
"name" exists in record type a and record type b, but there is no actual
naming conflict as I understand it.

--8<---------------cut here---------------start------------->8---
(import (rnrs))

(define-record-type a
  (fields name))

(define-record-type b
  (parent a)
  (fields name))

(let ((x (make-b 'a 'b)))
  (write (list (a-name x)
               (b-name x)))
  (newline))
--8<---------------cut here---------------end--------------->8---

It should print (a b). The backtrace:

--8<---------------cut here---------------start------------->8---
Backtrace:
In ice-9/boot-9.scm:
  1722:10  8 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           7 (apply-smob/0 #<thunk 56291f86b320>)
In ice-9/boot-9.scm:
    718:2  6 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
In ice-9/eval.scm:
    619:8  5 (_ #(#(#<directory (guile-user) 56291f8eff00>)))
In ice-9/boot-9.scm:
   2792:4  4 (save-module-excursion _)
  4336:12  3 (_)
In /tmp/foo.sps:
      6:0  2 (_)
In ice-9/boot-9.scm:
  1090:10  1 (make-record-type b ((immutable name)) _ #:parent _ # _ ?)
  1073:12  0 (append-fields _ _)

ice-9/boot-9.scm:1073:12: In procedure append-fields:
duplicate field name
--8<---------------cut here---------------end--------------->8---

Regards,

-- 
Göran Weinholt   | https://weinholt.se/
Debian developer | 73 de SA6CJK