1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
;; -*-theme-d-*-
;; Copyright (C) 2024 Tommi Höynälänmaa
;; Distributed under GNU General Public License version 3,
;; see file doc/GPL-3.
;; Expected results: translation error
;; missing field initialization
(define-proper-program (tests test891)
(import (standard-library core)
(standard-library console-io))
(define <module-name> (:union (:nonempty-uniform-list <symbol>) <symbol>))
(define <general-module-name>
(:union <module-name> <boolean> <null>))
(define-class <address>
(attributes equal-by-value)
(inheritance-access hidden)
(fields
(mn <general-module-name> public public)
(i-number <integer> public public)
(s-source-name (:maybe <symbol>) public public)
(toplevel? <boolean> public public)
(s-target-name (:maybe <symbol>) public public)))
(define-class <macro-binding>
(inheritance-access hidden)
(fields
(s-type <symbol> public public)
(s-name <symbol> public public)
(l-levels (:uniform-list <integer>) public public)
(x-content (:union <boolean> <integer>) public public)
(x-library <object> public public)
(toplevel? <boolean> public public)
(address (:alt-maybe <address>) public public)))
;; (x-macro (:alt-maybe <macro>) public public)))
(define-main-proc (() <none> nonpure)
(let* ((address
(make <address>
#:mn 'builtins
#:i-number 100
#:s-source-name 'gl-i
#:toplevel? #t
#:s-target-name '_l_100_gl-i))
(binding
(make <macro-binding>
#:s-type 'variable
#:s-name 'gl-i
;; #:l-levels '(0 1)
#:x-content #f
#:x-library null
#:toplevel? #t
#:address address)))
(console-display-line (field-ref binding 's-type))
(console-display-line (field-ref binding 's-name))
(console-display-line (field-ref binding 'l-levels))
(console-display-line (field-ref binding 'x-content))
(console-display-line (field-ref binding 'x-library))
(console-display-line (field-ref binding 'toplevel?))
(console-display-line (field-ref binding 'address))
(console-display-line (field-ref address 'mn))
(console-display-line (field-ref address 'i-number))
(console-display-line (field-ref address 's-source-name))
(console-display-line (field-ref address 'toplevel?))
(console-display-line (field-ref address 's-target-name)))))
|