zo parse & marshal updates for preserved syntax properties
This commit is contained in:
parent
209a4ff631
commit
976c5e6e2b
|
@ -431,12 +431,26 @@
|
|||
[esrcloc (let ()
|
||||
(define (avail? n) (n . >= . 0))
|
||||
(define (xvector a b c d e)
|
||||
;; Add paren-shape info, if any:
|
||||
(case (hash-ref props 'paren-shape #f)
|
||||
[(#\[) (vector a b c d e #\[)]
|
||||
[(#\{) (vector a b c d e #\{)]
|
||||
[(#\[) (yvector a b c d e #\[)]
|
||||
[(#\{) (yvector a b c d e #\{)]
|
||||
[else (if (or a (avail? b) (avail? c) (avail? d))
|
||||
(vector a b c d e)
|
||||
(yvector a b c d e #f)
|
||||
#f)]))
|
||||
(define (yvector a b c d e f)
|
||||
;; Add properties, if any:
|
||||
(if (positive? (- (hash-count props) (if f 1 0)))
|
||||
(vector a b c d e f
|
||||
(sort (for/list ([(k v) (in-hash props)]
|
||||
#:unless (and f
|
||||
(eq? k 'paren-shape)))
|
||||
(cons k v))
|
||||
symbol<?
|
||||
#:key car))
|
||||
(if f
|
||||
(vector a b c d e f)
|
||||
(vector a b c d e))))
|
||||
(define (norm v) (or v -1))
|
||||
(share-everywhere
|
||||
(if srcloc
|
||||
|
|
|
@ -1256,12 +1256,17 @@
|
|||
(norm (vector-ref esrcloc 2))
|
||||
(norm (vector-ref esrcloc 3))
|
||||
(norm (vector-ref esrcloc 4))))
|
||||
(let ([props
|
||||
(if (and esrcloc ((vector-length esrcloc) . > . 5))
|
||||
(case (vector-ref esrcloc 5)
|
||||
[(#\[) #hasheq((paren-shape . #\[))]
|
||||
[(#\{) #hasheq((paren-shape . #\{))]
|
||||
[else #hasheq()])
|
||||
#hasheq())))))
|
||||
#hasheq())])
|
||||
(if (and esrcloc ((vector-length esrcloc) . > . 6))
|
||||
(for/fold ([props props]) ([p (in-list (vector-ref esrcloc 6))])
|
||||
(hash-set props (car p) (cdr p)))
|
||||
props))))))
|
||||
(values (car p) (cdr p)))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user