fix bug in namespace-require/constant that caused a Check Syntax bug; fix DrScheme's source location for module forms; tweak help output to use right font for class names

svn: r10113
This commit is contained in:
Matthew Flatt 2008-06-03 22:01:10 +00:00
parent 4654408229
commit 2a728cdf3c
5 changed files with 37 additions and 26 deletions

View File

@ -416,15 +416,29 @@
;; if the file has been saved
(define (transform-module filename stx)
(syntax-case* stx (module) (λ (x y) (eq? (syntax-e x) (syntax-e y)))
[(module name lang bodies ...)
(let ([v-name (syntax name)])
(when filename
(check-filename-matches filename
(syntax->datum (syntax name))
stx))
;; rewrite the module to use the scheme/base version of `module'
(values v-name
#`(#,(datum->syntax #'here 'module) name lang bodies ...)))]
[(module . rest)
(syntax-case stx ()
[(form name . _)
(let ([v-name (syntax name)])
(when filename
(check-filename-matches filename
(syntax->datum (syntax name))
stx))
(values v-name
;; rewrite the module to use the scheme/base version of `module'
(datum->syntax stx
(cons (datum->syntax #'here
'module
#'form)
#'rest)
stx)))]
[_
(raise-syntax-error 'module-language
"module form is missing a name"
stx)])]
[module (raise-syntax-error 'module-language
"bad syntax"
stx)]
[else
(raise-syntax-error 'module-language
"only module expressions are allowed"

View File

@ -5,9 +5,10 @@
This is a simple variant of Rummy.
Put all cards in your hand into straights (3 or more cards) and 3- or
4-of-a-kind sets to win. Each card counts for only one set. Aces can
be used in both A-2-3 sequences and Q-K-A sequences.
Put all cards in your hand into straights (3 or more cards in the same
suit) and 3- or 4-of-a-kind sets to win. Each card counts for only
one set. Aces can be used in both A-2-3 sequences and Q-K-A
sequences.
When all of your cards fit into sets (the game detects this
automatically), you win.

View File

@ -80,9 +80,13 @@
[e (if (method-index-desc? desc)
`(,@e ,(make-element "smaller"
`(" (method of "
,(make-element "schemevaluelink"
(list (symbol->string
(exported-index-desc-name desc))))
,(make-element
"schemesymbol"
(list
(make-element
"schemevaluelink"
(list (symbol->string
(exported-index-desc-name desc))))))
")")))
e)]
[e (make-link-element "indexlink" e tag)]

View File

@ -56,14 +56,6 @@ get all cross-reference information for installed documentation.}
symbol?
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c))
(list/c (or/c module-path?
module-path-index?
path?
resolved-module-path?)
symbol?
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c)))]
[mode (or/c exact-integer? false/c)])
(or/c tag? false/c)]{

View File

@ -7952,10 +7952,10 @@ void add_single_require(Scheme_Module_Exports *me, /* from module */
if (do_copy_vars && (j < var_count)) {
Scheme_Env *menv;
Scheme_Object *val;
Scheme_Object *val, *modname;
Scheme_Bucket *b;
modidx = scheme_module_resolve(modidx, 1);
menv = scheme_module_access(modidx, orig_env, 0);
modname = scheme_module_resolve(modidx, 1);
menv = scheme_module_access(modname, orig_env, 0);
val = scheme_lookup_in_table(menv->toplevel, (char *)exsns[j]);
b = scheme_global_bucket(iname, orig_env);
scheme_set_global_bucket(((copy_vars == 2)