fix bug field counts for struct-type-info result

svn: r5894
This commit is contained in:
Matthew Flatt 2007-04-09 02:23:51 +00:00
parent bdcb50603b
commit b45664c279
5 changed files with 1903 additions and 1889 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4131,7 +4131,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
fm = scheme_append(fst, scheme_make_pair(e, fm));
SCHEME_EXPAND_OBSERVE_MODULE_LIFT_LOOP(observer, fst);
} else {
/* No lifts added... */
/* No definition lifts added... */
if (SCHEME_STX_PAIRP(e))
fst = SCHEME_STX_CAR(e);
else
@ -4155,7 +4155,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
}
}
} else
break;
break;
}
}
if (!e) break; /* (begin) expansion at end */

View File

@ -2523,9 +2523,15 @@
" letrec-syntaxes+values"
" fluid-let-syntax"
" with-continuation-mark"
" #%expression"
" #%variable-reference"
" #%app"
" #%top"
" #%datum)))))"
" #%datum"
" provide "
" require"
" require-for-syntax"
" require-for-template)))))"
"(syntax-case* e(begin define-values define-syntaxes require require-for-template) "
" module-transformer-identifier=?"
"((begin v ...)"

View File

@ -2904,9 +2904,15 @@
letrec-syntaxes+values
fluid-let-syntax
with-continuation-mark
#%expression
#%variable-reference
#%app
#%top
#%datum)))])
#%datum
provide
require
require-for-syntax
require-for-template)))])
(syntax-case* e (begin define-values define-syntaxes require require-for-template)
module-transformer-identifier=?
[(begin v ...)

View File

@ -1395,7 +1395,7 @@ static void get_struct_type_info(int argc, Scheme_Object *argv[], Scheme_Object
{
Scheme_Struct_Type *stype, *parent;
Scheme_Object *insp, *ims;
int p;
int p, cnt;
insp = check_type_and_inspector("struct-type-info", always, argc, argv);
stype = (Scheme_Struct_Type *)argv[0];
@ -1419,8 +1419,9 @@ static void get_struct_type_info(int argc, Scheme_Object *argv[], Scheme_Object
parent = NULL;
a[0] = stype->name;
a[1] = scheme_make_integer(stype->num_islots);
a[2] = scheme_make_integer(stype->num_slots - (parent ? parent->num_slots : 0) - stype->num_islots);
cnt = stype->num_islots - (parent ? parent->num_islots : 0);
a[1] = scheme_make_integer(cnt);
a[2] = scheme_make_integer(stype->num_slots - (parent ? parent->num_slots : 0) - cnt);
a[3] = stype->accessor;
a[4] = stype->mutator;