test-graph-type.rkt (1163B)
1 #lang typed/racket 2 ;; 1.36s 3 (require phc-adt) 4 ;; 3.26s 5 (require (lib "phc-graph/graph-type.hl.rkt")) 6 ;; 3.46s 7 (adt-init) 8 ;; 3.36 9 (define-graph-type g1 10 [City [name : String] 11 [streets : (Listof Street)] 12 [citizens : (Listof Person)]] 13 [Street [name : String] 14 [houses : (Listof House)]] 15 [House [owner : Person]] 16 [Person [name : String]] 17 #:invariant City.citizens._ ∈ City.streets._.houses._.owner 18 #:invariant City.citizens._ ∋ City.streets._.houses._.owner) 19 ;; 5.46 20 (provide g1) 21 ;; 5.51s 22 (require (for-syntax racket/pretty 23 racket/base)) 24 (eval #'(begin 25 (define-syntax (dbg _stx) 26 (parameterize ([pretty-print-columns 188]) 27 (pretty-print (syntax-local-value #'g1))) 28 #'(void)) 29 (dbg))) 30 ;; 5.40 31 32 (require (for-syntax syntax/parse 33 "../graph-info.hl.rkt")) 34 35 (define-syntax dbg 36 (syntax-parser 37 [(_ t) 38 #`(define-type t 39 #,(node-info-promise-type 40 (hash-ref (graph-info-nodes (syntax-local-value #'g1)) 'City)))])) 41 (dbg t-city) 42 ;(define-type expected (t-city Number String Symbol 'Database 'Index)) 43 ;; 6.76s