Fix require/untyped-contract to generate better names in contracts.
Related to PR 13716.
(cherry picked from commit 9c71dafb63
)
This commit is contained in:
parent
a901650bab
commit
a9868eece1
|
@ -50,7 +50,7 @@
|
||||||
|
|
||||||
(require/untyped-contract
|
(require/untyped-contract
|
||||||
(begin (require "private/matrix/matrix-types.rkt"
|
(begin (require "private/matrix/matrix-types.rkt"
|
||||||
"private/matrix/matrix-gauss-elim.rkt"))
|
(only-in "private/matrix/matrix-gauss-elim.rkt" Pivoting)))
|
||||||
"private/matrix/matrix-gauss-elim.rkt"
|
"private/matrix/matrix-gauss-elim.rkt"
|
||||||
[matrix-gauss-elim
|
[matrix-gauss-elim
|
||||||
(case-> ((Matrix Number) -> (Values (Matrix Number) (Listof Index)))
|
(case-> ((Matrix Number) -> (Values (Matrix Number) (Listof Index)))
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
array-indexes-set!))
|
array-indexes-set!))
|
||||||
|
|
||||||
(require/untyped-contract
|
(require/untyped-contract
|
||||||
(begin (require "array-struct.rkt"
|
(begin (require (only-in "array-struct.rkt" Array Settable-Array)))
|
||||||
"utils.rkt"
|
|
||||||
"typed-array-indexing.rkt"))
|
|
||||||
"typed-array-indexing.rkt"
|
"typed-array-indexing.rkt"
|
||||||
[array-ref (All (A) ((Array A) (Vectorof Integer) -> A))]
|
[array-ref (All (A) ((Array A) (Vectorof Integer) -> A))]
|
||||||
[array-set! (All (A) ((Settable-Array A) (Vectorof Integer) A -> Void))]
|
[array-set! (All (A) ((Settable-Array A) (Vectorof Integer) A -> Void))]
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
list->array))
|
list->array))
|
||||||
|
|
||||||
(require/untyped-contract
|
(require/untyped-contract
|
||||||
(begin (require "typed-array-struct.rkt"))
|
(begin (require (only-in "typed-array-struct.rkt" Array)))
|
||||||
"typed-array-struct.rkt"
|
"typed-array-struct.rkt"
|
||||||
[build-array (All (A) ((Vectorof Integer) ((Vectorof Index) -> A) -> (Array A)))]
|
[build-array (All (A) ((Vectorof Integer) ((Vectorof Index) -> A) -> (Array A)))]
|
||||||
[build-simple-array (All (A) ((Vectorof Integer) ((Vectorof Index) -> A) -> (Array A)))]
|
[build-simple-array (All (A) ((Vectorof Integer) ((Vectorof Index) -> A) -> (Array A)))]
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
vector->array))
|
vector->array))
|
||||||
|
|
||||||
(require/untyped-contract
|
(require/untyped-contract
|
||||||
(begin (require "typed-mutable-array.rkt"))
|
(begin (require (only-in "typed-mutable-array.rkt" Mutable-Array)))
|
||||||
"typed-mutable-array.rkt"
|
"typed-mutable-array.rkt"
|
||||||
[vector->array (All (A) (case-> ((Vectorof A) -> (Mutable-Array A))
|
[vector->array (All (A) (case-> ((Vectorof A) -> (Mutable-Array A))
|
||||||
((Vectorof Integer) (Vectorof A) -> (Mutable-Array A))))])
|
((Vectorof Integer) (Vectorof A) -> (Mutable-Array A))))])
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
(require (for-syntax racket/base
|
(require (for-syntax racket/base
|
||||||
syntax/parse
|
syntax/parse
|
||||||
racket/syntax
|
racket/syntax
|
||||||
|
unstable/syntax
|
||||||
typed-racket/utils/tc-utils)
|
typed-racket/utils/tc-utils)
|
||||||
typed-racket/utils/tc-utils)
|
typed-racket/utils/tc-utils)
|
||||||
|
|
||||||
|
@ -30,12 +31,16 @@
|
||||||
(define-syntax name
|
(define-syntax name
|
||||||
(typed/untyped-renamer #'typed-name #'untyped-name)))]))
|
(typed/untyped-renamer #'typed-name #'untyped-name)))]))
|
||||||
|
|
||||||
|
(define-for-syntax (freshen ids)
|
||||||
|
(syntax-map (lambda (id) ((make-syntax-introducer) id)) ids))
|
||||||
|
|
||||||
(define-syntax (require/untyped-contract stx)
|
(define-syntax (require/untyped-contract stx)
|
||||||
(syntax-parse stx #:literals (begin)
|
(syntax-parse stx #:literals (begin)
|
||||||
[(_ (begin form ...) from-module-spec:expr [name:id T:expr] ...)
|
[(_ (begin form ...) from-module-spec:expr [name:id T:expr] ...)
|
||||||
(with-syntax* ([(typed-name ...) (generate-temporaries #'(name ...))]
|
(with-syntax* ([(typed-name ...) (generate-temporaries #'(name ...))]
|
||||||
[(untyped-name ...) (generate-temporaries #'(name ...))]
|
[(untyped-name ...) (freshen #'(name ...))]
|
||||||
[(untyped2-name ...) (generate-temporaries #'(name ...))]
|
[(untyped2-name ...) (generate-temporaries #'(name ...))]
|
||||||
|
[(untyped3-name ...) (generate-temporaries #'(name ...))]
|
||||||
[(macro-name ...) (generate-temporaries #'(name ...))]
|
[(macro-name ...) (generate-temporaries #'(name ...))]
|
||||||
[typed-module (generate-temporary #'typed-module)]
|
[typed-module (generate-temporary #'typed-module)]
|
||||||
[untyped-module (generate-temporary #'untyped-module)])
|
[untyped-module (generate-temporary #'untyped-module)])
|
||||||
|
@ -43,19 +48,20 @@
|
||||||
(begin
|
(begin
|
||||||
(module typed-module typed/racket/base
|
(module typed-module typed/racket/base
|
||||||
(begin form ...)
|
(begin form ...)
|
||||||
(require (only-in from-module-spec name ...))
|
(require (rename-in (only-in from-module-spec name ...)
|
||||||
|
[name untyped2-name] ...))
|
||||||
(provide untyped-name ...)
|
(provide untyped-name ...)
|
||||||
(: untyped-name T) ...
|
(: untyped-name T) ...
|
||||||
(define untyped-name name) ...)
|
(define untyped-name untyped2-name) ...)
|
||||||
|
|
||||||
(module untyped-module racket/base
|
(module untyped-module racket/base
|
||||||
(require typed/untyped-utils
|
(require typed/untyped-utils
|
||||||
(rename-in (only-in from-module-spec name ...)
|
(rename-in (only-in from-module-spec name ...)
|
||||||
[name typed-name] ...)
|
[name typed-name] ...)
|
||||||
(rename-in (only-in (submod ".." typed-module) untyped-name ...)
|
(rename-in (only-in (submod ".." typed-module) untyped-name ...)
|
||||||
[untyped-name untyped2-name] ...))
|
[untyped-name untyped3-name] ...))
|
||||||
(provide macro-name ...)
|
(provide macro-name ...)
|
||||||
(define-typed/untyped-identifier macro-name typed-name untyped2-name) ...)
|
(define-typed/untyped-identifier macro-name typed-name untyped3-name) ...)
|
||||||
|
|
||||||
(require (rename-in (submod "." untyped-module) [macro-name name] ...)))))]
|
(require (rename-in (submod "." untyped-module) [macro-name name] ...)))))]
|
||||||
[(_ from-module-spec:expr [name:id T:expr] ...)
|
[(_ from-module-spec:expr [name:id T:expr] ...)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user