File tree Expand file tree Collapse file tree 6 files changed +13
-6
lines changed
typed-racket-lib/typed-racket Expand file tree Collapse file tree 6 files changed +13
-6
lines changed Original file line number Diff line number Diff line change 1601
1601
;; Section 11.1 (Threads)
1602
1602
1603
1603
;; Section 11.1.1
1604
- [thread (->key (-> Univ ) #:keep (Un (-val #f ) (-val 'results )) #f #:pool Univ #f -Thread)]
1604
+ [thread (->key (-> ManyUniv ) #:keep (Un (-val #f ) (-val 'results )) #f #:pool Univ #f -Thread)]
1605
1605
[thread? (unsafe-shallow:make-pred-ty -Thread)]
1606
1606
[current-thread (-> -Thread)]
1607
1607
[thread/suspend-to-kill (-> (-> Univ) -Thread)]
Original file line number Diff line number Diff line change 33
33
#:literal-sets (kernel-literals)
34
34
;; let loop
35
35
(pattern ((letrec-values ([(lp) (~and lam (#%plain-lambda (args ... ) . body))]) lp*:id) . actuals)
36
- #:when expected
37
36
#:when (not (andmap type-annotation (syntax->list #'(lp args ... ))))
38
37
#:when (free-identifier=? #'lp #'lp* )
39
38
(let-loop-check #'lam #'lp #'actuals #'(args ... ) #'body expected))
75
74
[((val acc ... )
76
75
((~and inner-body (if (#%plain-app (~or pair? null?) val*:id) thn els)))
77
76
(actual actuals ... ))
77
+ #:when expected
78
78
#:when
79
79
(and (free-identifier=? #'val #'val* )
80
80
(ormap (lambda (a) (find-annotation #'inner-body a))
101
101
((~or (~and inner-body (if e1 e2 e3:id))
102
102
(~and inner-body (let-values () (if e1 e2 e3:id)))))
103
103
(null-exp actuals ... ))
104
+ #:when expected
104
105
#:when (free-identifier=? #'val #'e3 )
105
106
#:when (subtype (tc-expr/t #'null-exp ) -Null)
106
107
(let ([ts (for/list ([ac (in-syntax #'(actuals ... ))]
Original file line number Diff line number Diff line change 797
797
;; Returns both the tc-results of the function and of the body
798
798
(define (tc/rec-lambda/check formals* body name args return)
799
799
(define formals (syntax->list formals*))
800
- (define ft (t:->* args (tc-results->values return)))
800
+ (define ft (if return
801
+ (t:->* args (tc-results->values return))
802
+ (t:->* args ManyUniv)))
801
803
(define names (cons name formals))
802
804
(with-extended-lexical-env
803
805
[#:identifiers (cons name formals)
Original file line number Diff line number Diff line change 22
22
(when l ; still something to read
23
23
(intercept l) ; interceptor gets the whole vector
24
24
(clear-events))))
25
- (let: loop : Void ()
25
+ (let loop ()
26
26
(let ([l : (U Log-Receiver-Sync-Result 'stop )
27
27
(sync receiver stop-chan)])
28
28
(cond [(eq? l 'stop )
Original file line number Diff line number Diff line change 21
21
(when l ; still something to read
22
22
(intercept l) ; interceptor gets the whole vector
23
23
(clear-events))))
24
- (let: loop : Void ()
24
+ (let loop ()
25
25
(let: ([l : (U Log-Receiver-Sync-Result 'stop )
26
26
(sync receiver stop-chan)])
27
27
(cond [(eq? l 'stop )
Original file line number Diff line number Diff line change 5283
5283
d0)
5284
5284
(-lst* (-val 2 ) (-val "abc " ) (-ivec* (-val 1 ) (-val "b " ) (-val 'x )))]
5285
5285
5286
+
5287
+
5288
+ [tc-e (let loop () (loop)) #:ret (-tc-any-results -tt)]
5289
+
5286
5290
;; comparisons must correctly account for if the
5287
5291
;; #false result was caused by a NaN (see TR Github issue #747)
5288
5292
;; less-than
5718
5722
([call-with-values (t:-> (t:-> (-values (list -String -String) (list -true-propset -true-propset) (list -empty-obj -empty-obj)))
5719
5723
(t:-> -String -String (-values -String -true-propset -empty-obj))
5720
5724
(-values -String -true-propset -empty-obj))]))
5721
- )
5725
+ )
5722
5726
))
You can’t perform that action at this time.
0 commit comments