Ryan's patch to improve check-syntax arrows for syntax-pattern bindings

svn: r5744
This commit is contained in:
Matthew Flatt 2007-03-07 02:21:40 +00:00
parent 40f613d0d2
commit 109785e98a
3 changed files with 1660 additions and 1644 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1973,12 +1973,15 @@
"(r(let loop((vars unique-vars)(bindings var-bindings))"
"(cond"
"((null? bindings) null)"
"((car bindings)(cons "
"((car bindings)"
"(cons"
"(syntax-property "
"(datum->syntax-object"
"(car vars)"
"(syntax-e "
"(syntax-mapping-valvar(car bindings)))"
"(syntax-e(syntax-mapping-valvar(car bindings)))"
" x)"
" 'disappeared-use"
"(car vars))"
"(loop(cdr vars)(cdr bindings))))"
"(else(loop(cdr vars)(cdr bindings)))))))"
"(if(identifier? pattern)"

View File

@ -2286,13 +2286,16 @@
[r (let loop ([vars unique-vars][bindings var-bindings])
(cond
[(null? bindings) null]
[(car bindings) (cons
(datum->syntax-object
(car vars)
(syntax-e
(syntax-mapping-valvar (car bindings)))
x)
(loop (cdr vars) (cdr bindings)))]
[(car bindings)
(cons
(syntax-property
(datum->syntax-object
(car vars)
(syntax-e (syntax-mapping-valvar (car bindings)))
x)
'disappeared-use
(car vars))
(loop (cdr vars) (cdr bindings)))]
[else (loop (cdr vars) (cdr bindings))]))])
(if (identifier? pattern)
;; Simple syntax-id lookup: