diff --git a/collects/tests/racket/module.rktl b/collects/tests/racket/module.rktl index 5be611c03b..5005ae9e02 100644 --- a/collects/tests/racket/module.rktl +++ b/collects/tests/racket/module.rktl @@ -896,6 +896,20 @@ (parameterize ([current-namespace (module->namespace ''n)]) (eval '(procedure? ptr-set!))))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; check link checking and a constructor with auto fields: + +(module a-with-auto-field racket/base + (provide make-region) + (define-values (struct:region make-region region? region-get region-set!) + (make-struct-type 'region #f 6 6 #f))) + +(module use-a-with-auto-field racket/base + (require 'a-with-auto-field) + (void (make-region 1 2 3 4 5 6))) + +(require 'use-a-with-auto-field) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/optimize.c b/src/racket/src/optimize.c index aa5f3b1de6..133c99ea1d 100644 --- a/src/racket/src/optimize.c +++ b/src/racket/src/optimize.c @@ -755,10 +755,10 @@ Scheme_Object *scheme_is_simple_make_struct_type(Scheme_Object *e, int vals, int int super_count = (super_count_plus_one ? (super_count_plus_one - 1) : 0); - _stinfo->field_count = SCHEME_INT_VAL(app->args[3]) + super_count; - _stinfo->init_field_count = (SCHEME_INT_VAL(app->args[3]) - + SCHEME_INT_VAL(app->args[4]) - + super_count); + _stinfo->init_field_count = SCHEME_INT_VAL(app->args[3]) + super_count; + _stinfo->field_count = (SCHEME_INT_VAL(app->args[3]) + + SCHEME_INT_VAL(app->args[4]) + + super_count); _stinfo->uses_super = (super_count_plus_one ? 1 : 0); _stinfo->normal_ops = 1; _stinfo->indexed_ops = 0;