Invert typechecking boolean logic
diff --git a/compiler/front_end/constraints_test.py b/compiler/front_end/constraints_test.py index 2f2f626..eac1232 100644 --- a/compiler/front_end/constraints_test.py +++ b/compiler/front_end/constraints_test.py
@@ -24,7 +24,6 @@ from compiler.util import test_util - def _make_ir_from_emb(emb_text, name="m.emb"): ir, unused_debug_info, errors = glue.parse_emboss_file( name,
diff --git a/compiler/util/ir_data.py b/compiler/util/ir_data.py index fa284c4..624b09a 100644 --- a/compiler/util/ir_data.py +++ b/compiler/util/ir_data.py
@@ -65,21 +65,21 @@ def __setattr__(self, name: str, value) -> None: """Debug-only hook that adds basic type checking for ir_data fields.""" if spec := self.field_specs.all_field_specs.get(name): - if ( + if not ( # Check if it's the expected type - not isinstance(value, spec.data_type) and + isinstance(value, spec.data_type) or # Oneof fields are a special case - not spec.is_oneof and + spec.is_oneof or # Optional fields can be set to None - not (spec.container is ir_data_fields.FieldContainer.OPTIONAL and - value is None) and + (spec.container is ir_data_fields.FieldContainer.OPTIONAL and + value is None) or # Sequences can be a few variants of lists - not (spec.is_sequence and + (spec.is_sequence and isinstance(value, ( list, ir_data_fields.TemporaryCopyValuesList, - ir_data_fields.CopyValuesList))) and + ir_data_fields.CopyValuesList))) or # An enum value can be an int - not (spec.is_enum and isinstance(value, int))): + (spec.is_enum and isinstance(value, int))): raise AttributeError( f"Cannot set {value} (type {value.__class__}) for type" "{spec.data_type}")