887
887
(global ,name) (const ,name)
888
888
,@(map (lambda (v ) `(local ,v)) params)
889
889
,@(map (lambda (n v ) (make-assignment n (bounds-to-TypeVar v))) params bounds)
890
- (composite_type ,name (call (core svec) ,@params)
891
- (call (core svec) ,@(map (lambda (x ) `',x) field-names))
892
- ,super (call (core svec) ,@field-types) ,mut ,min-initialized)))
890
+ (struct_type ,name (call (core svec) ,@params)
891
+ (call (core svec) ,@(map (lambda (x ) `',x) field-names))
892
+ ,super (call (core svec) ,@field-types) ,mut ,min-initialized)))
893
893
; ; "inner" constructors
894
894
(scope-block
895
895
(block
925
925
,@(map (lambda (n v ) (make-assignment n (bounds-to-TypeVar v))) params bounds)
926
926
(abstract_type ,name (call (core svec) ,@params) ,super))))))
927
927
928
- (define (bits -def-expr n name params super )
928
+ (define (primitive-type -def-expr n name params super )
929
929
(receive
930
930
(params bounds) (sparam-name-bounds params)
931
931
`(block
934
934
(block
935
935
,@(map (lambda (v ) `(local ,v)) params)
936
936
,@(map (lambda (n v ) (make-assignment n (bounds-to-TypeVar v))) params bounds)
937
- (bits_type ,name (call (core svec) ,@params) ,n ,super))))))
937
+ (primitive_type ,name (call (core svec) ,@params) ,n ,super))))))
938
938
939
939
; ; take apart a type signature, e.g. T{X} <: S{Y}
940
940
(define (analyze-type-sig ex )
1188
1188
(else
1189
1189
(error " invalid macro definition" ))))
1190
1190
1191
- (define (expand-type -def e )
1191
+ (define (expand-struct -def e )
1192
1192
(let ((mut (cadr e))
1193
1193
(sig (caddr e))
1194
1194
(fields (cdr (cadddr e))))
1892
1892
'-> expand-arrow
1893
1893
'let expand-let
1894
1894
'macro expand-macro-def
1895
- 'type expand-type-def
1895
+ 'struct expand-struct-def
1896
+ 'type
1897
+ (lambda (e )
1898
+ (syntax-deprecation #f " :type expression head" " :struct" )
1899
+ (expand-struct-def e))
1896
1900
'try expand-try
1897
1901
; ; deprecated in 0.6
1898
1902
'typealias (lambda (e ) (expand-typealias (cadr e) (caddr e)))
2084
2088
2085
2089
'bitstype
2086
2090
(lambda (e )
2087
- (let ((n (cadr e))
2088
- (sig (caddr e)))
2091
+ (syntax-deprecation #f " Expr(:bitstype, nbits, name)" " Expr(:primitive, name, nbits)" )
2092
+ (expand-forms `(primitive ,(caddr e) ,(cadr e))))
2093
+ 'primitive
2094
+ (lambda (e )
2095
+ (let ((sig (cadr e))
2096
+ (n (caddr e)))
2089
2097
(expand-forms
2090
2098
(receive (name params super) (analyze-type-sig sig)
2091
- (bits -def-expr n name params super)))))
2099
+ (primitive-type -def-expr n name params super)))))
2092
2100
2093
2101
'comparison
2094
2102
(lambda (e ) (expand-forms (expand-compare-chain (cdr e))))
@@ -2781,21 +2789,21 @@ f(x) = yt(x)
2781
2789
(() () 0 ())
2782
2790
(body (global ,name) (const ,name)
2783
2791
,@(map (lambda (p n ) `(= ,p (call (core TypeVar) ',n (core Any)))) P names)
2784
- (composite_type ,name (call (core svec) ,@P)
2785
- (call (core svec) ,@(map (lambda (v ) `',v) fields))
2786
- ,super
2787
- (call (core svec) ,@types) false ,(length fields))
2792
+ (struct_type ,name (call (core svec) ,@P)
2793
+ (call (core svec) ,@(map (lambda (v ) `',v) fields))
2794
+ ,super
2795
+ (call (core svec) ,@types) false ,(length fields))
2788
2796
(return (null))))))))
2789
2797
2790
2798
(define (type-for-closure name fields super )
2791
2799
`((thunk (lambda ()
2792
2800
(() () 0 ())
2793
2801
(body (global ,name) (const ,name)
2794
- (composite_type ,name (call (core svec))
2795
- (call (core svec) ,@(map (lambda (v ) `',v) fields))
2796
- ,super
2797
- (call (core svec) ,@(map (lambda (v ) '(core Any)) fields))
2798
- false ,(length fields))
2802
+ (struct_type ,name (call (core svec))
2803
+ (call (core svec) ,@(map (lambda (v ) `',v) fields))
2804
+ ,super
2805
+ (call (core svec) ,@(map (lambda (v ) '(core Any)) fields))
2806
+ false ,(length fields))
2799
2807
(return (null)))))))
2800
2808
2801
2809
@@ -2808,20 +2816,20 @@ f(x) = yt(x)
2808
2816
; `((global ,name)
2809
2817
; (const ,name)
2810
2818
; ,@(map (lambda (p n) `(= ,p (call (core TypeVar) ',n (core Any)))) P names)
2811
- ; (composite_type ,name (call (core svec) ,@P)
2812
- ; (call (core svec) ,@(map (lambda (v) `',v) fields))
2813
- ; ,super
2814
- ; (call (core svec) ,@types) false ,(length fields)))))
2819
+ ; (struct_type ,name (call (core svec) ,@P)
2820
+ ; (call (core svec) ,@(map (lambda (v) `',v) fields))
2821
+ ; ,super
2822
+ ; (call (core svec) ,@types) false ,(length fields)))))
2815
2823
2816
2824
; ; ... and without parameters
2817
2825
; (define (type-for-closure name fields super)
2818
2826
; `((global ,name)
2819
2827
; (const ,name)
2820
- ; (composite_type ,name (call (core svec))
2821
- ; (call (core svec) ,@(map (lambda (v) `',v) fields))
2822
- ; ,super
2823
- ; (call (core svec) ,@(map (lambda (v) 'Any) fields))
2824
- ; false ,(length fields))))
2828
+ ; (struct_type ,name (call (core svec))
2829
+ ; (call (core svec) ,@(map (lambda (v) `',v) fields))
2830
+ ; ,super
2831
+ ; (call (core svec) ,@(map (lambda (v) 'Any) fields))
2832
+ ; false ,(length fields))))
2825
2833
2826
2834
2827
2835
(define (vinfo:not-capt vi )
@@ -3634,25 +3642,25 @@ f(x) = yt(x)
3634
3642
((isdefined) (if tail (emit-return e) e))
3635
3643
3636
3644
; ; top level expressions returning values
3637
- ((abstract_type bits_type composite_type thunk toplevel module)
3645
+ ((abstract_type primitive_type struct_type thunk toplevel module)
3638
3646
(case (car e)
3639
3647
((abstract_type)
3640
3648
(let* ((para (compile (caddr e) break-labels #t #f ))
3641
3649
(supe (compile (cadddr e) break-labels #t #f )))
3642
3650
(emit `(abstract_type ,(cadr e) ,para ,supe))))
3643
- ((bits_type )
3651
+ ((primitive_type )
3644
3652
(let* ((para (compile (caddr e) break-labels #t #f ))
3645
3653
(supe (compile (list-ref e 4 ) break-labels #t #f )))
3646
- (emit `(bits_type ,(cadr e) ,para ,(cadddr e) ,supe))))
3647
- ((composite_type )
3654
+ (emit `(primitive_type ,(cadr e) ,para ,(cadddr e) ,supe))))
3655
+ ((struct_type )
3648
3656
(let* ((para (compile (caddr e) break-labels #t #f ))
3649
3657
(supe (compile (list-ref e 4 ) break-labels #t #f ))
3650
- ; ; composite_type has an unconventional evaluation rule that
3658
+ ; ; struct_type has an unconventional evaluation rule that
3651
3659
; ; needs to do work around the evaluation of the field types,
3652
3660
; ; so the field type expressions need to be kept in place as
3653
3661
; ; much as possible. (part of issue #21923)
3654
3662
(ftys (compile (list-ref e 5 ) break-labels #t #f #f )))
3655
- (emit `(composite_type ,(cadr e) ,para ,(cadddr e) ,supe ,ftys ,@(list-tail e 6 )))))
3663
+ (emit `(struct_type ,(cadr e) ,para ,(cadddr e) ,supe ,ftys ,@(list-tail e 6 )))))
3656
3664
(else
3657
3665
(emit e)))
3658
3666
(if tail (emit-return ' (null)))
0 commit comments