@@ -380,7 +380,7 @@ static jl_value_t *eval(jl_value_t *e, interpreter_state *s)
380
380
}
381
381
else if (ex -> head == primtype_sym ) {
382
382
if (inside_typedef )
383
- jl_error ("cannot eval a new bits type definition while defining another type" );
383
+ jl_error ("cannot eval a new primitive type definition while defining another type" );
384
384
jl_value_t * name = args [0 ];
385
385
jl_value_t * super = NULL , * para = NULL , * vnb = NULL , * temp = NULL ;
386
386
jl_datatype_t * dt = NULL ;
@@ -395,11 +395,11 @@ static jl_value_t *eval(jl_value_t *e, interpreter_state *s)
395
395
assert (jl_is_svec (para ));
396
396
vnb = eval (args [2 ], s );
397
397
if (!jl_is_long (vnb ))
398
- jl_errorf ("invalid declaration of bits type %s" ,
398
+ jl_errorf ("invalid declaration of primitive type %s" ,
399
399
jl_symbol_name ((jl_sym_t * )name ));
400
400
ssize_t nb = jl_unbox_long (vnb );
401
- if (nb < 1 || nb >=( 1 << 23 ) || (nb & 7 ) != 0 )
402
- jl_errorf ("invalid number of bits in type %s" ,
401
+ if (nb < 1 || nb >= ( 1 << 23 ) || (nb & 7 ) != 0 )
402
+ jl_errorf ("invalid number of bits in primitive type %s" ,
403
403
jl_symbol_name ((jl_sym_t * )name ));
404
404
dt = jl_new_primitivetype (name , modu , NULL , (jl_svec_t * )para , nb );
405
405
w = dt -> name -> wrapper ;
@@ -428,7 +428,7 @@ static jl_value_t *eval(jl_value_t *e, interpreter_state *s)
428
428
}
429
429
else if (ex -> head == structtype_sym ) {
430
430
if (inside_typedef )
431
- jl_error ("cannot eval a new data type definition while defining another type" );
431
+ jl_error ("cannot eval a new struct type definition while defining another type" );
432
432
jl_value_t * name = args [0 ];
433
433
jl_value_t * para = eval (args [1 ], s );
434
434
jl_value_t * temp = NULL ;
@@ -462,12 +462,13 @@ static jl_value_t *eval(jl_value_t *e, interpreter_state *s)
462
462
jl_set_datatype_super (dt , super );
463
463
dt -> types = (jl_svec_t * )eval (args [4 ], s );
464
464
jl_gc_wb (dt , dt -> types );
465
- for (size_t i = 0 ; i < jl_svec_len (dt -> types ); i ++ ) {
465
+ for (size_t i = 0 ; i < jl_svec_len (dt -> types ); i ++ ) {
466
466
jl_value_t * elt = jl_svecref (dt -> types , i );
467
- if (!jl_is_type (elt ) && !jl_is_typevar (elt ))
467
+ if (( !jl_is_type (elt ) && !jl_is_typevar (elt )) || jl_is_vararg_type ( elt )) {
468
468
jl_type_error_rt (jl_symbol_name (dt -> name -> name ),
469
469
"type definition" ,
470
470
(jl_value_t * )jl_type_type , elt );
471
+ }
471
472
}
472
473
jl_reinstantiate_inner_types (dt );
473
474
}
0 commit comments