File: test891.thp

package info (click to toggle)
theme-d 7.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,036 kB
  • sloc: lisp: 9,625; sh: 5,321; makefile: 715; ansic: 477
file content (72 lines) | stat: -rw-r--r-- 2,542 bytes parent folder | download | duplicates (2)
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)))))