From df549b811db358432d0d18b498b74f8b21c90723 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 20 Feb 2021 10:46:04 +0100 Subject: [PATCH] fix custom bit size not being applied to variables --- .../Parsing/Header/Sequence/SequenceVariable.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ZoneCodeGeneratorLib/Parsing/Header/Sequence/SequenceVariable.cpp b/src/ZoneCodeGeneratorLib/Parsing/Header/Sequence/SequenceVariable.cpp index 712b5c94..5d348044 100644 --- a/src/ZoneCodeGeneratorLib/Parsing/Header/Sequence/SequenceVariable.cpp +++ b/src/ZoneCodeGeneratorLib/Parsing/Header/Sequence/SequenceVariable.cpp @@ -105,6 +105,17 @@ void SequenceVariable::ProcessMatch(HeaderParserState* state, SequenceResultm_has_alignment_override = true; } + if(result.HasNextCapture(CAPTURE_BIT_SIZE)) + { + const auto& bitSizeToken = result.NextCapture(CAPTURE_BIT_SIZE); + variable->m_type_declaration->m_custom_bit_size = bitSizeToken.IntegerValue(); + + if (variable->m_type_declaration->m_custom_bit_size <= 0) + throw ParsingException(bitSizeToken.GetPos(), "Custom bit size must be greater than 0"); + + variable->m_type_declaration->m_has_custom_bit_size = true; + } + if (modeTag == TAG_ARRAY_OF_POINTERS) { AddArrayDeclarationModifiers(state, result, variable->m_type_declaration.get());