Skip to content

Commit daa1906

Browse files
Automated Resyntax fixes
This is an automated change generated by Resyntax. #### Pass 1 Applied 1 fix to [`typed-racket-lib/typed-racket/types/tc-error.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/tc-error.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. Applied 10 fixes to [`typed-racket-lib/typed-racket/types/printer.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/printer.rkt) * Line 135, `quasiquote-to-list`: This quasiquotation is equialent to a simple `list` call. * Line 152, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. * Line 163, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. * Line 320, `define-values-values-to-define`: This use of `define-values` is unnecessary. * Line 327, `for/fold-result-keyword`: Only one of the `for/fold` expression's result values is used. Use the `#:result` keyword to return just that result. * Line 367, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. * Line 464, `apply-append-for-loop-to-for-loop`: Instead of using `(apply append ...)` to flatten a list of lists, consider using `for*/list` to flatten the list. * Line 480, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. * Line 515, `quasiquote-to-list`: This quasiquotation is equialent to a simple `list` call. * Line 519, `quasiquote-to-list`: This quasiquotation is equialent to a simple `list` call. Applied 2 fixes to [`typed-racket-lib/typed-racket/types/tc-result.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/tc-result.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 158, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. Applied 1 fix to [`typed-racket-lib/typed/private/no-check-helper.rkt`](../blob/HEAD/typed-racket-lib/typed/private/no-check-helper.rkt) * Line 5, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. Applied 6 fixes to [`typed-racket-lib/typed-racket/types/base-abbrev.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/base-abbrev.rkt) * Line 105, `define-syntax-syntax-rules-to-define-syntax-rule`: This `define-syntax` macro can be replaced with a simpler, equivalent `define-syntax-rule` macro. * Line 109, `define-syntax-syntax-rules-to-define-syntax-rule`: This `define-syntax` macro can be replaced with a simpler, equivalent `define-syntax-rule` macro. * Line 496, `define-syntax-syntax-rules-to-define-syntax-rule`: This `define-syntax` macro can be replaced with a simpler, equivalent `define-syntax-rule` macro. * Line 502, `define-syntax-syntax-rules-to-define-syntax-rule`: This `define-syntax` macro can be replaced with a simpler, equivalent `define-syntax-rule` macro. * Line 509, `define-syntax-syntax-rules-to-define-syntax-rule`: This `define-syntax` macro can be replaced with a simpler, equivalent `define-syntax-rule` macro. * Line 516, `define-syntax-syntax-rules-to-define-syntax-rule`: This `define-syntax` macro can be replaced with a simpler, equivalent `define-syntax-rule` macro. Applied 3 fixes to [`typed-racket-test/external/tr-random-testing.rkt`](../blob/HEAD/typed-racket-test/external/tr-random-testing.rkt) * Line 5, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 10, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 337, `if-begin-to-cond`: Using `cond` instead of `if` here makes `begin` unnecessary Applied 3 fixes to [`typed-racket-lib/typed-racket/types/signatures.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/signatures.rkt) * Line 6, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 52, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. * Line 59, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. Applied 1 fix to [`typed-racket-lib/typed-racket/types/struct-table.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/struct-table.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. Applied 3 fixes to [`typed-racket-lib/typed-racket/types/utils.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/utils.rkt) * Line 19, `define-lambda-to-define`: The `define` form supports a shorthand for defining functions. * Line 60, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. * Line 79, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. Applied 4 fixes to [`typed-racket-lib/typed-racket/types/prop-ops.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/prop-ops.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 56, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. * Line 111, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. * Line 382, `sort-with-keyed-comparator-to-sort-by-key`: This `sort` expression can be replaced with a simpler, equivalent expression. Applied 1 fix to [`typed-racket-lib/typed-racket/types/union.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/union.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. Applied 2 fixes to [`typed-racket-lib/typed-racket/types/generalize.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/generalize.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 48, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. Applied 1 fix to [`typed-racket-test/external/historical-counterexamples.rkt`](../blob/HEAD/typed-racket-test/external/historical-counterexamples.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. Applied 1 fix to [`typed-racket-lib/typed-racket/types/substitute.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/substitute.rkt) * Line 78, `if-let-to-cond`: `cond` with internal definitions is preferred over `if` with `let`, to reduce nesting Applied 1 fix to [`typed-racket-lib/typed-racket/types/overlap.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/overlap.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. Applied 3 fixes to [`typed-racket-lib/typed-racket/types/subtype.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/subtype.rkt) * Line 536, `apply-flattening`: The `apply` function accepts single arguments in addition to a trailing list argument. * Line 661, `if-else-false-to-and`: This `if` expression can be refactored to an equivalent expression using `and`. * Line 793, `single-clause-match-to-match-define`: This `match` expression can be simplified using `match-define`. Applied 2 fixes to [`typed-racket-lib/typed/private/rewriter.rkt`](../blob/HEAD/typed-racket-lib/typed/private/rewriter.rkt) * Line 2, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 10, `syntax-disarm-migration`: The `syntax-disarm` function is a legacy function that does nothing. Applied 2 fixes to [`typed-racket-lib/typed-racket/types/match-expanders.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/match-expanders.rkt) * Line 3, `tidy-require`: Keep imports in `require` sorted and grouped by phase, with collections before files. * Line 78, `define-simple-macro-to-define-syntax-parse-rule`: The `define-simple-macro` form has been renamed to `define-syntax-parse-rule`. Applied 3 fixes to [`typed-racket-lib/typed-racket/types/resolve.rkt`](../blob/HEAD/typed-racket-lib/typed-racket/types/resolve.rkt) * Line 52, `if-else-false-to-and`: This `if` expression can be refactored to an equivalent expression using `and`. * Line 65, `inverted-when`: This negated `when` expression can be replaced by an `unless` expression. * Line 101, `let-to-define`: Internal definitions are recommended instead of `let` expressions, to reduce nesting. ## Summary Fixed 50 issues in 19 files. * Fixed 14 occurrences of `tidy-require` * Fixed 7 occurrences of `single-clause-match-to-match-define` * Fixed 7 occurrences of `let-to-define` * Fixed 6 occurrences of `define-syntax-syntax-rules-to-define-syntax-rule` * Fixed 3 occurrences of `quasiquote-to-list` * Fixed 2 occurrences of `if-else-false-to-and` * Fixed 1 occurrence of `define-values-values-to-define` * Fixed 1 occurrence of `for/fold-result-keyword` * Fixed 1 occurrence of `apply-append-for-loop-to-for-loop` * Fixed 1 occurrence of `if-let-to-cond` * Fixed 1 occurrence of `apply-flattening` * Fixed 1 occurrence of `syntax-disarm-migration` * Fixed 1 occurrence of `define-simple-macro-to-define-syntax-parse-rule` * Fixed 1 occurrence of `inverted-when` * Fixed 1 occurrence of `if-begin-to-cond` * Fixed 1 occurrence of `define-lambda-to-define` * Fixed 1 occurrence of `sort-with-keyed-comparator-to-sort-by-key`
1 parent 81cd9a8 commit daa1906

File tree

19 files changed

+270
-271
lines changed

19 files changed

+270
-271
lines changed

typed-racket-lib/typed-racket/types/base-abbrev.rkt

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,11 @@
102102
(foldr -pair b l))
103103

104104
;; Recursive types
105-
(define-syntax -v
106-
(syntax-rules ()
107-
[(_ x) (make-F 'x)]))
105+
(define-syntax-rule (-v x)
106+
(make-F 'x))
108107

109-
(define-syntax -mu
110-
(syntax-rules ()
111-
[(_ var ty)
112-
(let ([var (-v var)])
113-
(make-Mu 'var ty))]))
108+
(define-syntax-rule (-mu var ty)
109+
(let ([var (-v var)]) (make-Mu 'var ty)))
114110

115111
;; Results
116112
(define/cond-contract (-result t [pset -tt-propset] [o -empty-obj])
@@ -493,31 +489,20 @@
493489

494490

495491
;; Convenient syntax for polymorphic types
496-
(define-syntax -poly
497-
(syntax-rules ()
498-
[(_ (vars ...) ty)
499-
(let ([vars (-v vars)] ...)
500-
(make-Poly (list 'vars ...) ty))]))
501-
502-
(define-syntax -polydots
503-
(syntax-rules ()
504-
[(_ (vars ... dotted) ty)
505-
(let ([dotted (-v dotted)]
506-
[vars (-v vars)] ...)
507-
(make-PolyDots (list 'vars ... 'dotted) ty))]))
508-
509-
(define-syntax -polyrow
510-
(syntax-rules ()
511-
[(_ (var) consts ty)
512-
(let ([var (-v var)])
513-
(make-PolyRow (list 'var) ty consts))]))
492+
(define-syntax-rule (-poly (vars ...) ty)
493+
(let ([vars (-v vars)] ...) (make-Poly (list 'vars ...) ty)))
494+
495+
(define-syntax-rule (-polydots (vars ... dotted) ty)
496+
(let ([dotted (-v dotted)]
497+
[vars (-v vars)] ...)
498+
(make-PolyDots (list 'vars ... 'dotted) ty)))
499+
500+
(define-syntax-rule (-polyrow (var) consts ty)
501+
(let ([var (-v var)]) (make-PolyRow (list 'var) ty consts)))
514502

515503
;; abbreviation for existential types
516-
(define-syntax -some
517-
(syntax-rules ()
518-
[(_ (vars ...) ty)
519-
(let ([vars (-v vars)] ...)
520-
(make-Some (list 'vars ...) ty))]))
504+
(define-syntax-rule (-some (vars ...) ty)
505+
(let ([vars (-v vars)] ...) (make-Some (list 'vars ...) ty)))
521506

522507
;; abbreviation for existential type results
523508
(define-syntax -some-res

typed-racket-lib/typed-racket/types/generalize.rkt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#lang racket/base
22

3-
(require "../utils/utils.rkt"
3+
(require racket/match
44
"../rep/type-rep.rkt"
5-
"abbrev.rkt" "subtype.rkt" "substitute.rkt"
5+
"../utils/utils.rkt"
6+
"abbrev.rkt"
67
"numeric-tower.rkt"
7-
racket/match)
8+
"substitute.rkt"
9+
"subtype.rkt")
810

911
(provide generalize)
1012

@@ -45,15 +47,15 @@
4547
[(Pair: t1 (== -Null)) (-lst t1)]
4648
[(MPair: t1 (== -Null)) (-mlst t1)]
4749
[(or (Pair: t1 t2) (MPair: t1 t2))
48-
(let ([t-new (loop t2)])
49-
(define -lst-type
50-
((match t*
51-
[(Pair: _ _) -lst]
52-
[(MPair: _ _) -mlst])
53-
t1))
54-
(if (type-equiv? -lst-type t-new)
55-
-lst-type
56-
(exit t)))]
50+
(define t-new (loop t2))
51+
(define -lst-type
52+
((match t*
53+
[(Pair: _ _) -lst]
54+
[(MPair: _ _) -mlst])
55+
t1))
56+
(if (type-equiv? -lst-type t-new)
57+
-lst-type
58+
(exit t))]
5759
[(ListDots: t bound) (-lst (substitute Univ bound t))]
5860
[(? (lambda (t) (subtype t -Symbol))) -Symbol]
5961
[(== -True) -Boolean]

typed-racket-lib/typed-racket/types/match-expanders.rkt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
#lang racket/base
22

3-
(require "../utils/utils.rkt"
4-
"../rep/type-rep.rkt"
5-
"../rep/values-rep.rkt"
6-
"../rep/rep-utils.rkt"
3+
(require (for-syntax racket/base
4+
syntax/parse)
75
racket/match
8-
syntax/parse/define
96
racket/set
107
racket/unsafe/undefined
11-
"resolve.rkt"
8+
syntax/parse/define
9+
"../rep/rep-utils.rkt"
10+
"../rep/type-rep.rkt"
11+
"../rep/values-rep.rkt"
12+
"../utils/utils.rkt"
1213
"base-abbrev.rkt"
13-
(for-syntax racket/base syntax/parse))
14+
"resolve.rkt")
1415

1516
(provide Listof: List: MListof: AnyPoly: AnyPoly-names:
1617
HashTableTop:
@@ -75,7 +76,7 @@
7576
(app (λ (t) (Listof? t #t)) (? Type? elem-pat)))])))
7677

7778

78-
(define-simple-macro (make-Listof-pred listof-pred?:id pair-matcher:id)
79+
(define-syntax-parse-rule (make-Listof-pred listof-pred?:id pair-matcher:id)
7980
(define (listof-pred? t [simple? #f])
8081
(match t
8182
[(Mu-unsafe:

typed-racket-lib/typed-racket/types/overlap.rkt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#lang racket/base
22

3-
(require "../utils/utils.rkt"
4-
"../utils/prefab.rkt"
5-
"../rep/type-rep.rkt"
3+
(require racket/match
4+
(prefix-in c: (contract-req))
65
"../rep/rep-utils.rkt"
76
"../rep/type-mask.rkt"
8-
(prefix-in c: (contract-req))
7+
"../rep/type-rep.rkt"
8+
"../utils/prefab.rkt"
9+
"../utils/utils.rkt"
910
"abbrev.rkt"
11+
"resolve.rkt"
1012
"subtype.rkt"
11-
"resolve.rkt"
12-
"utils.rkt"
13-
racket/match)
13+
"utils.rkt")
1414

1515

1616
(provide overlap?)

typed-racket-lib/typed-racket/types/printer.rkt

Lines changed: 55 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
(define name-ref->sexp
133133
(match-lambda
134134
[(? syntax? name-ref) (syntax-e name-ref)]
135-
[(cons lvl arg) `(,lvl ,arg)]))
135+
[(cons lvl arg) (list lvl arg)]))
136136

137137
;; prop->sexp : Prop -> S-expression
138138
;; Print a Prop (see prop-rep.rkt) to the given port
@@ -149,20 +149,19 @@
149149
;; instead of (<= x y) (<= y x) when we have both inequalities
150150
(define-values (leqs others) (partition LeqProp? ps))
151151
(define-values (eqs simple-leqs)
152-
(for/fold ([eqs '()] [simple-leqs '()])
152+
(for/fold ([eqs '()]
153+
[simple-leqs '()])
153154
([leq (in-list leqs)])
154-
(match leq
155-
[(LeqProp: lhs rhs)
156-
(define flip (-leq rhs lhs))
157-
(cond
158-
[(not (member flip leqs))
159-
(values eqs (cons leq simple-leqs))]
160-
[(member flip eqs) (values eqs simple-leqs)]
161-
[else (values (cons leq eqs) simple-leqs)])])))
155+
(match-define (LeqProp: lhs rhs) leq)
156+
(define flip (-leq rhs lhs))
157+
(cond
158+
[(not (member flip leqs)) (values eqs (cons leq simple-leqs))]
159+
[(member flip eqs) (values eqs simple-leqs)]
160+
[else (values (cons leq eqs) simple-leqs)])))
162161
(let ([simple-leqs (map prop->sexp simple-leqs)]
163162
[eqs (for/list ([leq (in-list eqs)])
164-
(match leq
165-
[(LeqProp: lhs rhs) `(= ,(object->sexp lhs) ,(object->sexp rhs))]))]
163+
(match-define (LeqProp: lhs rhs) leq)
164+
`(= ,(object->sexp lhs) ,(object->sexp rhs)))]
166165
[others (map prop->sexp others)])
167166
(match (append eqs simple-leqs others)
168167
[(list sexp) sexp]
@@ -317,37 +316,36 @@
317316
valid-names))
318317
;; some types in the union may not be coverable by the candidates
319318
;; (e.g. type variables, etc.)
320-
(define-values (uncoverable coverable)
321-
(values (apply set-subtract elems (map cdr candidates))
322-
(set-intersect elems (apply set-union null (map cdr candidates)))))
319+
(define uncoverable (apply set-subtract elems (map cdr candidates)))
320+
(define coverable (set-intersect elems (apply set-union null (map cdr candidates))))
323321
;; set cover, greedy algorithm, ~lg n approximation
324322
(let loop ([to-cover coverable]
325323
[candidates candidates]
326324
[coverage '()])
327-
(cond [(null? to-cover) ; done
328-
(define coverage-names (map car coverage))
329-
;; to allow :type to cue the user on unexpanded aliases
330-
;; only union types can flow here, and any of those could be expanded
331-
(set-box! (current-print-unexpanded)
332-
(append coverage-names (unbox (current-print-unexpanded))))
333-
;; reverse here to retain the old ordering from when srfi/1 was
334-
;; used to process the list sets
335-
(values coverage-names (reverse uncoverable))] ; we want the names
336-
[else
337-
;; pick the candidate that covers the most uncovered types
338-
(define (covers-how-many? c)
339-
(length (set-intersect (cdr c) to-cover)))
340-
(define-values (next _)
341-
(for/fold ([next (car candidates)]
342-
[max-cover (covers-how-many? (car candidates))])
343-
([c (in-list candidates)])
344-
(let ([how-many? (covers-how-many? c)])
345-
(if (> how-many? max-cover)
346-
(values c how-many?)
347-
(values next max-cover)))))
348-
(loop (set-subtract to-cover (cdr next))
349-
(remove next candidates)
350-
(cons next coverage))])))
325+
(cond
326+
[(null? to-cover) ; done
327+
(define coverage-names (map car coverage))
328+
;; to allow :type to cue the user on unexpanded aliases
329+
;; only union types can flow here, and any of those could be expanded
330+
(set-box! (current-print-unexpanded)
331+
(append coverage-names (unbox (current-print-unexpanded))))
332+
;; reverse here to retain the old ordering from when srfi/1 was
333+
;; used to process the list sets
334+
(values coverage-names (reverse uncoverable))] ; we want the names
335+
[else
336+
;; pick the candidate that covers the most uncovered types
337+
(define (covers-how-many? c)
338+
(length (set-intersect (cdr c) to-cover)))
339+
(define next
340+
(for/fold ([next (car candidates)]
341+
[max-cover (covers-how-many? (car candidates))]
342+
#:result next)
343+
([c (in-list candidates)])
344+
(let ([how-many? (covers-how-many? c)])
345+
(if (> how-many? max-cover)
346+
(values c how-many?)
347+
(values next max-cover)))))
348+
(loop (set-subtract to-cover (cdr next)) (remove next candidates) (cons next coverage))])))
351349

352350
;; arr->sexp : arr -> s-expression
353351
;; Convert an arr (see type-rep.rkt) to its printable form
@@ -365,11 +363,10 @@
365363
;; as long as the resulting s-expressions are `display`ed
366364
;; this is fine, though it may not pretty-print well.
367365
(for/list ([kw (in-list kws)])
368-
(match kw
369-
[(Keyword: k t req?)
370-
(if req?
371-
(format "~a ~a" k (type->sexp t))
372-
(format "[~a ~a]" k (type->sexp t)))]))
366+
(match-define (Keyword: k t req?) kw)
367+
(if req?
368+
(format "~a ~a" k (type->sexp t))
369+
(format "[~a ~a]" k (type->sexp t))))
373370
(match rst
374371
[(Rest: (list rst-t)) `(,(type->sexp rst-t) *)]
375372
[(Rest: rst-ts) `(#:rest-star ,(map type->sexp rst-ts))]
@@ -461,8 +458,9 @@
461458
(define-values (pre mid) (split-at lst to-drop))
462459
(define-values (sub post) (split-at mid n))
463460
(list pre sub post)))
464-
(apply append (for/list ([i (range (length lst) 0 -1)])
465-
(sublist-n i lst))))
461+
(for*/list ([i (range (length lst) 0 -1)]
462+
[v (in-list (sublist-n i lst))])
463+
v))
466464
(let loop ([left-to-cover arrs])
467465
;; try to match the largest sublists possible that correspond to
468466
;; ->* types and then the remainder are formatted normally
@@ -478,16 +476,15 @@
478476
;; case-lambda->sexp : Type -> S-expression
479477
;; Convert a case-> type to an s-expression
480478
(define (case-lambda->sexp type)
481-
(match type
482-
[(Fun: arrows)
483-
(match arrows
484-
[(list) '(case->)]
485-
[(list a) (arr->sexp a)]
486-
[(and arrs (list a b ...))
487-
(define cover (cover-case-lambda arrs))
488-
(if (> (length cover) 1)
489-
`(case-> ,@cover)
490-
(car cover))])]))
479+
(match-define (Fun: arrows) type)
480+
(match arrows
481+
[(list) '(case->)]
482+
[(list a) (arr->sexp a)]
483+
[(and arrs (list a b ...))
484+
(define cover (cover-case-lambda arrs))
485+
(if (> (length cover) 1)
486+
`(case-> ,@cover)
487+
(car cover))]))
491488

492489
;; class->sexp : Class [#:object? Boolean] -> S-expression
493490
;; Convert a class or object type to an s-expression
@@ -512,11 +509,11 @@
512509
(cons 'field
513510
(for/list ([name+type (in-list fields)])
514511
(match-define (list name type) name+type)
515-
`(,name ,(type->sexp type)))))))
512+
(list name (type->sexp type)))))))
516513
(define methods*
517514
(for/list ([name+type (in-list methods)])
518515
(match-define (list name type) name+type)
519-
`(,name ,(type->sexp type))))
516+
(list name (type->sexp type))))
520517
(define augments*
521518
(cond [(or object? (null? augments)) '()]
522519
[else (list (cons 'augment augments))]))

0 commit comments

Comments
 (0)