@@ -2509,7 +2509,7 @@ impl Compiler {
25092509 self . compile_expression ( value) ?;
25102510 emit ! ( self , Instruction :: ReturnValue ) ;
25112511 let value_code = self . exit_scope ( ) ;
2512- self . make_closure ( value_code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
2512+ self . make_closure ( value_code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
25132513 // Stack: [type_params_tuple, value_closure]
25142514
25152515 // Swap so unpack_sequence reverse gives correct order
@@ -2522,7 +2522,7 @@ impl Compiler {
25222522
25232523 let code = self . exit_scope ( ) ;
25242524 self . ctx = prev_ctx;
2525- self . make_closure ( code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
2525+ self . make_closure ( code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
25262526 emit ! ( self , Instruction :: PushNull ) ;
25272527 emit ! ( self , Instruction :: Call { argc: 0 } ) ;
25282528
@@ -2561,7 +2561,7 @@ impl Compiler {
25612561
25622562 let code = self . exit_scope ( ) ;
25632563 self . ctx = prev_ctx;
2564- self . make_closure ( code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
2564+ self . make_closure ( code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
25652565 // Stack: [name, None, closure]
25662566 }
25672567
@@ -2725,7 +2725,7 @@ impl Compiler {
27252725 self . ctx = prev_ctx;
27262726
27272727 // Create closure for lazy evaluation
2728- self . make_closure ( code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
2728+ self . make_closure ( code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
27292729
27302730 Ok ( ( ) )
27312731 }
@@ -3649,7 +3649,7 @@ impl Compiler {
36493649 & mut self ,
36503650 parameters : & ast:: Parameters ,
36513651 ) -> CompileResult < bytecode:: MakeFunctionFlags > {
3652- let mut funcflags = bytecode:: MakeFunctionFlags :: empty ( ) ;
3652+ let mut funcflags = bytecode:: MakeFunctionFlags :: new ( ) ;
36533653
36543654 // Handle positional defaults
36553655 let defaults: Vec < _ > = core:: iter:: empty ( )
@@ -3669,7 +3669,7 @@ impl Compiler {
36693669 count: defaults. len( ) . to_u32( )
36703670 }
36713671 ) ;
3672- funcflags |= bytecode:: MakeFunctionFlags :: DEFAULTS ;
3672+ funcflags. insert ( bytecode:: MakeFunctionFlag :: Defaults ) ;
36733673 }
36743674
36753675 // Handle keyword-only defaults
@@ -3694,7 +3694,7 @@ impl Compiler {
36943694 count: kw_with_defaults. len( ) . to_u32( ) ,
36953695 }
36963696 ) ;
3697- funcflags |= bytecode:: MakeFunctionFlags :: KW_ONLY_DEFAULTS ;
3697+ funcflags. insert ( bytecode:: MakeFunctionFlag :: KwOnlyDefaults ) ;
36983698 }
36993699
37003700 Ok ( funcflags)
@@ -3844,7 +3844,7 @@ impl Compiler {
38443844 let annotate_code = self . exit_annotation_scope ( saved_ctx) ;
38453845
38463846 // Make a closure from the code object
3847- self . make_closure ( annotate_code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
3847+ self . make_closure ( annotate_code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
38483848
38493849 Ok ( true )
38503850 }
@@ -4054,7 +4054,7 @@ impl Compiler {
40544054 ) ;
40554055
40564056 // Make a closure from the code object
4057- self . make_closure ( annotate_code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
4057+ self . make_closure ( annotate_code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
40584058
40594059 // Store as __annotate_func__ for classes, __annotate__ for modules
40604060 let name = if parent_scope_type == CompilerScope :: Class {
@@ -4092,10 +4092,10 @@ impl Compiler {
40924092
40934093 if is_generic {
40944094 // Count args to pass to type params scope
4095- if funcflags. contains ( bytecode:: MakeFunctionFlags :: DEFAULTS ) {
4095+ if funcflags. contains ( & bytecode:: MakeFunctionFlag :: Defaults ) {
40964096 num_typeparam_args += 1 ;
40974097 }
4098- if funcflags. contains ( bytecode:: MakeFunctionFlags :: KW_ONLY_DEFAULTS ) {
4098+ if funcflags. contains ( & bytecode:: MakeFunctionFlag :: KwOnlyDefaults ) {
40994099 num_typeparam_args += 1 ;
41004100 }
41014101
@@ -4120,13 +4120,13 @@ impl Compiler {
41204120 // Add parameter names to varnames for the type params scope
41214121 // These will be passed as arguments when the closure is called
41224122 let current_info = self . current_code_info ( ) ;
4123- if funcflags. contains ( bytecode:: MakeFunctionFlags :: DEFAULTS ) {
4123+ if funcflags. contains ( & bytecode:: MakeFunctionFlag :: Defaults ) {
41244124 current_info
41254125 . metadata
41264126 . varnames
41274127 . insert ( ".defaults" . to_owned ( ) ) ;
41284128 }
4129- if funcflags. contains ( bytecode:: MakeFunctionFlags :: KW_ONLY_DEFAULTS ) {
4129+ if funcflags. contains ( & bytecode:: MakeFunctionFlag :: KwOnlyDefaults ) {
41304130 current_info
41314131 . metadata
41324132 . varnames
@@ -4144,11 +4144,10 @@ impl Compiler {
41444144 }
41454145
41464146 // Compile annotations as closure (PEP 649)
4147- let annotations_flag = if self . compile_annotations_closure ( name, parameters, returns) ? {
4148- bytecode:: MakeFunctionFlags :: ANNOTATE
4149- } else {
4150- bytecode:: MakeFunctionFlags :: empty ( )
4151- } ;
4147+ let mut annotations_flag = bytecode:: MakeFunctionFlags :: new ( ) ;
4148+ if self . compile_annotations_closure ( name, parameters, returns) ? {
4149+ annotations_flag. insert ( bytecode:: MakeFunctionFlag :: Annotate ) ;
4150+ }
41524151
41534152 // Compile function body
41544153 let final_funcflags = funcflags | annotations_flag;
@@ -4179,7 +4178,7 @@ impl Compiler {
41794178 self . ctx = saved_ctx;
41804179
41814180 // Make closure for type params code
4182- self . make_closure ( type_params_code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
4181+ self . make_closure ( type_params_code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
41834182
41844183 // Call the type params closure with defaults/kwdefaults as arguments.
41854184 // Call protocol: [callable, self_or_null, arg1, ..., argN]
@@ -4347,57 +4346,57 @@ impl Compiler {
43474346 emit ! (
43484347 self ,
43494348 Instruction :: SetFunctionAttribute {
4350- flag: bytecode:: MakeFunctionFlags :: CLOSURE
4349+ flag: bytecode:: MakeFunctionFlag :: Closure
43514350 }
43524351 ) ;
43534352 }
43544353
43554354 // Set annotations if present
4356- if flags. contains ( bytecode:: MakeFunctionFlags :: ANNOTATIONS ) {
4355+ if flags. contains ( & bytecode:: MakeFunctionFlag :: Annotations ) {
43574356 emit ! (
43584357 self ,
43594358 Instruction :: SetFunctionAttribute {
4360- flag: bytecode:: MakeFunctionFlags :: ANNOTATIONS
4359+ flag: bytecode:: MakeFunctionFlag :: Annotations
43614360 }
43624361 ) ;
43634362 }
43644363
43654364 // Set __annotate__ closure if present (PEP 649)
4366- if flags. contains ( bytecode:: MakeFunctionFlags :: ANNOTATE ) {
4365+ if flags. contains ( & bytecode:: MakeFunctionFlag :: Annotate ) {
43674366 emit ! (
43684367 self ,
43694368 Instruction :: SetFunctionAttribute {
4370- flag: bytecode:: MakeFunctionFlags :: ANNOTATE
4369+ flag: bytecode:: MakeFunctionFlag :: Annotate
43714370 }
43724371 ) ;
43734372 }
43744373
43754374 // Set kwdefaults if present
4376- if flags. contains ( bytecode:: MakeFunctionFlags :: KW_ONLY_DEFAULTS ) {
4375+ if flags. contains ( & bytecode:: MakeFunctionFlag :: KwOnlyDefaults ) {
43774376 emit ! (
43784377 self ,
43794378 Instruction :: SetFunctionAttribute {
4380- flag: bytecode:: MakeFunctionFlags :: KW_ONLY_DEFAULTS
4379+ flag: bytecode:: MakeFunctionFlag :: KwOnlyDefaults
43814380 }
43824381 ) ;
43834382 }
43844383
43854384 // Set defaults if present
4386- if flags. contains ( bytecode:: MakeFunctionFlags :: DEFAULTS ) {
4385+ if flags. contains ( & bytecode:: MakeFunctionFlag :: Defaults ) {
43874386 emit ! (
43884387 self ,
43894388 Instruction :: SetFunctionAttribute {
4390- flag: bytecode:: MakeFunctionFlags :: DEFAULTS
4389+ flag: bytecode:: MakeFunctionFlag :: Defaults
43914390 }
43924391 ) ;
43934392 }
43944393
43954394 // Set type_params if present
4396- if flags. contains ( bytecode:: MakeFunctionFlags :: TYPE_PARAMS ) {
4395+ if flags. contains ( & bytecode:: MakeFunctionFlag :: TypeParams ) {
43974396 emit ! (
43984397 self ,
43994398 Instruction :: SetFunctionAttribute {
4400- flag: bytecode:: MakeFunctionFlags :: TYPE_PARAMS
4399+ flag: bytecode:: MakeFunctionFlag :: TypeParams
44014400 }
44024401 ) ;
44034402 }
@@ -4689,14 +4688,14 @@ impl Compiler {
46894688 emit ! ( self , Instruction :: PushNull ) ;
46904689
46914690 // Set up the class function with type params
4692- let mut func_flags = bytecode:: MakeFunctionFlags :: empty ( ) ;
4691+ let mut func_flags = bytecode:: MakeFunctionFlags :: new ( ) ;
46934692 emit ! (
46944693 self ,
46954694 Instruction :: LoadName {
46964695 namei: dot_type_params
46974696 }
46984697 ) ;
4699- func_flags |= bytecode:: MakeFunctionFlags :: TYPE_PARAMS ;
4698+ func_flags. insert ( bytecode:: MakeFunctionFlag :: TypeParams ) ;
47004699
47014700 // Create class function with closure
47024701 self . make_closure ( class_code, func_flags) ?;
@@ -4819,7 +4818,7 @@ impl Compiler {
48194818 self . ctx = saved_ctx;
48204819
48214820 // Execute the type params function
4822- self . make_closure ( type_params_code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
4821+ self . make_closure ( type_params_code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
48234822 emit ! ( self , Instruction :: PushNull ) ;
48244823 emit ! ( self , Instruction :: Call { argc: 0 } ) ;
48254824 } else {
@@ -4828,7 +4827,7 @@ impl Compiler {
48284827 emit ! ( self , Instruction :: PushNull ) ;
48294828
48304829 // Create class function with closure
4831- self . make_closure ( class_code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
4830+ self . make_closure ( class_code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
48324831 self . emit_load_const ( ConstantData :: Str { value : name. into ( ) } ) ;
48334832
48344833 if let Some ( arguments) = arguments {
@@ -7096,12 +7095,12 @@ impl Compiler {
70967095 }
70977096
70987097 self . enter_function ( & name, params) ?;
7099- let mut func_flags = bytecode:: MakeFunctionFlags :: empty ( ) ;
7098+ let mut func_flags = bytecode:: MakeFunctionFlags :: new ( ) ;
71007099 if have_defaults {
7101- func_flags |= bytecode:: MakeFunctionFlags :: DEFAULTS ;
7100+ func_flags. insert ( bytecode:: MakeFunctionFlag :: Defaults ) ;
71027101 }
71037102 if have_kwdefaults {
7104- func_flags |= bytecode:: MakeFunctionFlags :: KW_ONLY_DEFAULTS ;
7103+ func_flags. insert ( bytecode:: MakeFunctionFlag :: KwOnlyDefaults ) ;
71057104 }
71067105
71077106 // Set qualname for lambda
@@ -7785,7 +7784,7 @@ impl Compiler {
77857784 self . ctx = prev_ctx;
77867785
77877786 // Create comprehension function with closure
7788- self . make_closure ( code, bytecode:: MakeFunctionFlags :: empty ( ) ) ?;
7787+ self . make_closure ( code, bytecode:: MakeFunctionFlags :: new ( ) ) ?;
77897788 emit ! ( self , Instruction :: PushNull ) ;
77907789
77917790 // Evaluate iterated item:
0 commit comments