{"record":{"id":"9fb36de77319afac","repo":"gleam-lang/gleam","slug":"invalid-size-in-pattern-size-segment","errorCode":null,"errorMessage":"invalid size in pattern size segment","messagePattern":"invalid size in pattern size segment","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"compiler-core/src/erlang/pattern.rs","lineNumber":437,"sourceCode":"        };\n\n        let _ = self\n            .variables_to_add_later\n            .insert(name.clone(), aliased_value);\n        self.pattern(builder, pattern);\n    }\n\n    fn bit_array_pattern_segment_size<Output>(\n        &mut self,\n        builder: &mut impl ErlangBuilder<Output>,\n        segment: &'a TypedPatternBitArraySegment,\n    ) {\n        let Some(size) = segment.size() else {\n            builder.bit_array_segment_default_size();\n            return;\n        };\n        let TypedPattern::BitArraySize(size) = size else {\n            panic!(\"invalid size in pattern size segment\")\n        };\n        self.bit_array_size(builder, size);\n    }\n\n    fn bit_array_size_divide<Output>(\n        &mut self,\n        location: &'a SrcSpan,\n        builder: &mut impl ErlangBuilder<Output>,\n        left: &'a TypedBitArraySize,\n        right: &'a TypedBitArraySize,\n        operator: &'static str,\n    ) {\n        if right.non_zero_compile_time_number() {\n            builder.binary_operator(*location, operator);\n            self.bit_array_size(builder, left);\n            self.bit_array_size(builder, right);\n        } else {\n            let case = builder.start_case(*location);","sourceCodeStart":419,"sourceCodeEnd":455,"githubUrl":"https://github.com/gleam-lang/gleam/blob/15b07c783065c92bb016b1b74ed0995a5259850f/compiler-core/src/erlang/pattern.rs#L419-L455","documentation":"An internal compiler assertion in bit-array pattern size-segment codegen: a segment's size node is not a TypedPattern::BitArraySize. Sizes of bit-array pattern segments must be represented as bit-array-size patterns after type checking; any other pattern shape here breaks the invariant.","triggerScenarios":"Generating code for a `<<..:size(n)>>` pattern segment whose size expression was not normalized to a BitArraySize node by earlier compiler phases.","commonSituations":"Compiling bit-array patterns after an earlier phase (parsing/type checking) produced a malformed or error-recovery AST, usually alongside other diagnostics; otherwise a compiler bug.","solutions":["Fix any errors the compiler reported earlier for the pattern.","Update gleam to the latest version.","File a minimal reproducing module at github.com/gleam-lang/gleam if no prior error appeared."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Confirm segment sizes are plain integer expressions before building\ngleam check || exit 1","typeGuard":"match size { TypedPattern::BitArraySize(s) => Ok(s), _ => Err(\"size must be a bit-array size expression\") }","tryCatchPattern":"let status = Command::new(\"gleam\").args([\"build\"]).status()?;\nif !status.success() { /* handle failure */ }","preventionTips":["Write segment sizes as integer literals or Int-typed size variables.","Clear earlier pattern errors before rebuilding.","Report panics without prior diagnostics to the gleam repo."],"tags":["compiler","internal","bit-array","codegen"],"backgroundTag":"internal-invariant-violation","analyzedSha":"15b07c783065c92bb016b1b74ed0995a5259850f","analyzedAt":"2026-09-14T11:14:59.388Z","contentChangedAt":"2026-09-14T11:14:59.388Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}