{"record":{"id":"1429c4baa032244a","repo":"BoundaryML/baml","slug":"undefined-enum-enum-name","errorCode":null,"errorMessage":"undefined enum: {enum_name}","messagePattern":"undefined enum: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"baml_language/crates/baml_compiler2_emit/src/emit.rs","lineNumber":3560,"sourceCode":"        ntypeargs: u16,\n        field_count: usize,\n    ) -> Result<(), Self::Error> {\n        self.emit_init_instance(class_name, ntypeargs, field_count);\n        Ok(())\n    }\n\n    fn init_field(&mut self, field_idx: usize, name: &str) -> Result<(), Self::Error> {\n        let idx = self.emit(Instruction::InitField(field_idx));\n        self.set_operand(idx, OperandMeta::Field(name.to_string()));\n        Ok(())\n    }\n\n    fn alloc_enum_variant(&mut self, enum_name: &str, variant: &str) -> Result<(), Self::Error> {\n        let enum_obj_idx = self\n            .enum_object_indices\n            .get(enum_name)\n            .copied()\n            .unwrap_or_else(|| panic!(\"undefined enum: {enum_name}\"));\n\n        let variant_idx = self\n            .enum_variants\n            .get(enum_name)\n            .and_then(|variants| variants.get(variant))\n            .copied()\n            .unwrap_or_else(|| panic!(\"undefined variant: {enum_name}.{variant}\"));\n\n        #[allow(clippy::cast_possible_wrap)]\n        let idx = self.add_constant(ConstValue::Int(variant_idx as i64));\n        let lc_inst = self.emit(Instruction::LoadConst(idx));\n        self.set_operand(\n            lc_inst,\n            OperandMeta::Const(format!(\"{enum_name}.{variant}\")),\n        );\n        let inst = self.emit(Instruction::AllocVariant(ObjectIndex::from_raw(\n            enum_obj_idx,\n        )));","sourceCodeStart":3542,"sourceCodeEnd":3578,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/baml_language/crates/baml_compiler2_emit/src/emit.rs#L3542-L3578","documentation":"Panic in alloc_enum_variant: the requested enum name has no entry in the emitter's enum_object_indices map, so no enum object was allocated for it. The compiler can only emit enum variant loads for enums it allocated during the pre-pass; referencing an unknown enum name is an internal lookup failure.","triggerScenarios":"Emitting an enum variant access for enum_name that was never registered — e.g. the enum is defined in another module/file that was not compiled into the same unit, or the enum was deleted/renamed while references remain.","commonSituations":"Stale references after renaming an enum, generated code referencing an enum from an uncompiled dependency, or compiler pre-pass skipping the enum's defining file.","solutions":["Ensure the file/module defining the enum is included in the compilation unit.","Fix or regenerate references that use the old enum name after a rename.","Verify the enum-allocation pre-pass visits the enum's definition.","Check imports/includes so the referenced enum actually resolves."],"exampleFix":"// before: referencing a renamed enum\nlet v = OldEnum.VariantA;\n// after\nlet v = NewEnum.VariantA;","handlingStrategy":"validation","validationCode":"// before referencing an enum, ensure its definition compiles in-unit\nassert!(project.enums().contains_key(\"MyEnum\"), \"enum MyEnum not found in compilation unit\");","typeGuard":"fn enum_exists(project: &Project, name: &str) -> bool {\n    project.enums().contains_key(name)\n}","tryCatchPattern":"// compiler panic — verify references ahead of compilation\nmatch resolve_enum(name) {\n    Some(_) => compile_referring_code(),\n    None => fix_or_remove_reference(name),\n}","preventionTips":["Compile all modules that define referenced enums together","Use IDE/rename tooling so enum renames update every reference","Regenerate code after schema changes","Run a pre-compile name-resolution lint"],"tags":["compiler","enum","panic","lookup"],"backgroundTag":"entity-not-found","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}