diff --git a/rflx/generator/message.py b/rflx/generator/message.py index 7941b69f6d..45ebcbf4c9 100644 --- a/rflx/generator/message.py +++ b/rflx/generator/message.py @@ -1368,7 +1368,7 @@ def create_valid_value_function( Call( f"Valid_{t.name}" if is_builtin_type(t.identifier) - else ID(prefix * t.package * f"Valid_{t.name}"), + else prefix * t.package * f"Valid_{t.name}", [Variable("Val")], ) if isinstance(t, Scalar) @@ -1740,9 +1740,9 @@ def condition(field: Field, message: Message) -> Expr: c: expr.Expr = expr.Or(*[l.condition for l in message.outgoing(field)]) c = c.substituted( mapping={ - expr.Size(field.name): expr.Call(ID(const.TYPES_BASE_INT), [expr.Variable("Size")]), + expr.Size(field.name): expr.Call(const.TYPES_BASE_INT, [expr.Variable("Size")]), expr.Last(field.name): expr.Call( - ID(const.TYPES_BASE_INT), + const.TYPES_BASE_INT, [ expr.Call( "Field_Last", @@ -3140,7 +3140,7 @@ def _create_valid_structure_function(prefix: str, message: Message) -> UnitPart: valid_values = [ Call( - ID(prefix * t.package * f"Valid_{t.name}"), + prefix * t.package * f"Valid_{t.name}", [ Variable("Struct" * f.identifier), ], @@ -3367,7 +3367,7 @@ def func(expression: expr.Expr) -> expr.Expr: if isinstance(field_type, Scalar): return expr.Call( - ID(const.TYPES_BASE_INT), + const.TYPES_BASE_INT, [expr.Variable("Struct" * expression.identifier)], ) @@ -3403,7 +3403,7 @@ def _create_to_context_procedure(prefix: str, message: Message) -> UnitPart: ) .substituted( lambda x: expr.Call( - ID(const.TYPES_BIT_LENGTH), + const.TYPES_BIT_LENGTH, [expr.Variable("Struct" * x.identifier)], ) if isinstance(x, expr.Variable) diff --git a/rflx/generator/parser.py b/rflx/generator/parser.py index 3a9b6ad08f..6d403832dd 100644 --- a/rflx/generator/parser.py +++ b/rflx/generator/parser.py @@ -205,22 +205,16 @@ def create_get_function( [Variable("Ctx"), Variable("Fld")], ), Call( - ID( - self.prefix - * message.identifier - * "Sufficient_Buffer_Length" - ), + self.prefix * message.identifier * "Sufficient_Buffer_Length", [Variable("Ctx"), Variable("Fld")], ), *( [ Not( Call( - ID( - self.prefix - * message.identifier - * "Composite_Field" - ), + self.prefix + * message.identifier + * "Composite_Field", [Variable("Fld")], ) ) @@ -998,11 +992,9 @@ def specification(field: Field) -> ProcedureSpecification: [ Variable("Ctx"), Variable( - ID( - self.prefix - * message.identifier - * f.affixed_name - ) + self.prefix + * message.identifier + * f.affixed_name ), ], ) diff --git a/rflx/generator/session.py b/rflx/generator/session.py index 484f58387a..53dc1bd528 100644 --- a/rflx/generator/session.py +++ b/rflx/generator/session.py @@ -287,7 +287,7 @@ def _create_context(self) -> Tuple[List[ContextItem], List[ContextItem]]: context.extend( [ *( - [WithClause(self._prefix * ID(type_.package))] + [WithClause(self._prefix * type_.package)] if type_.package != self._session.identifier.parent else [] ), @@ -302,10 +302,7 @@ def _create_context(self) -> Tuple[List[ContextItem], List[ContextItem]]: ) body_context.extend( - [ - WithClause(self._prefix * ID(p)) - for p in self._session_context.referenced_packages_body - ], + [WithClause(self._prefix * p) for p in self._session_context.referenced_packages_body], ) for type_identifier in self._session_context.used_types_body: @@ -445,7 +442,7 @@ def _channel_io( def _create_use_clauses(self, used_types: Sequence[ID]) -> UnitPart: return UnitPart( [ - UseTypeClause(self._prefix * ID(t)) + UseTypeClause(self._prefix * t) for t in used_types if not model.is_builtin_type(t) and not model.is_internal_type(t) ], @@ -599,7 +596,7 @@ def _create_abstract_function( procedure_parameters.append( Parameter( [a.identifier], - ID(const.TYPES_BYTES) + const.TYPES_BYTES if a.type_ == rty.OPAQUE else ID("Boolean") if a.type_ == rty.BOOLEAN @@ -616,11 +613,11 @@ def _create_abstract_function( procedure_parameters.append( OutParameter( [ID("RFLX_Result")], - ID(self._prefix * function.return_type * "Structure") + self._prefix * function.return_type * "Structure" if isinstance(function.type_, rty.Message) else ID("Boolean") if function.type_ == rty.BOOLEAN - else ID(self._prefix * function.return_type), + else self._prefix * function.return_type, ) ) @@ -688,7 +685,7 @@ def _create_global_initialized_function( if not composite_globals: return UnitPart() - self._session_context.used_types.append(ID(ID(const.TYPES_INDEX))) + self._session_context.used_types.append(const.TYPES_INDEX) specification = FunctionSpecification( "Global_Initialized", @@ -711,12 +708,12 @@ def _create_global_initialized_function( ), Equal( Variable(context_id(d.identifier, is_global) * "Buffer_First"), - First(ID(const.TYPES_INDEX)), + First(const.TYPES_INDEX), ), Equal( Variable(context_id(d.identifier, is_global) * "Buffer_Last"), Add( - First(ID(const.TYPES_INDEX)), + First(const.TYPES_INDEX), Number(self._allocator.get_size(d.identifier) - 1), ), ), @@ -782,7 +779,7 @@ def _create_states( is_global: Callable[[ID], bool], ) -> UnitPart: if self._allocator.get_global_slot_ptrs() or self._allocator.get_local_slot_ptrs(): - self._session_context.used_types_body.append(ID(const.TYPES_BYTES_PTR)) + self._session_context.used_types_body.append(const.TYPES_BYTES_PTR) unit_body: List[Declaration] = [] @@ -1067,7 +1064,7 @@ def _create_reset_messages_before_write_procedure( session: model.Session, is_global: Callable[[ID], bool], ) -> UnitPart: - self._session_context.used_types_body.append(ID(ID(const.TYPES_BIT_LENGTH))) + self._session_context.used_types_body.append(const.TYPES_BIT_LENGTH) specification = ProcedureSpecification( "Reset_Messages_Before_Write", [InOutParameter(["Ctx"], "Context'Class")] @@ -1496,8 +1493,8 @@ def _create_read_procedure( channel_writes: dict[ID, list[ChannelAccess]], is_global: Callable[[ID], bool], ) -> UnitPart: - self._session_context.used_types.append(ID(const.TYPES_INDEX)) - self._session_context.used_types.append(ID(const.TYPES_LENGTH)) + self._session_context.used_types.append(const.TYPES_INDEX) + self._session_context.used_types.append(const.TYPES_LENGTH) specification = ProcedureSpecification( "Read", @@ -1521,7 +1518,7 @@ def _create_read_procedure( Greater(Length("Buffer"), Number(0)), LessEqual( Variable("Offset"), - Sub(Last(ID(const.TYPES_LENGTH)), Length("Buffer")), + Sub(Last(const.TYPES_LENGTH), Length("Buffer")), ), LessEqual( Add(Length("Buffer"), Variable("Offset")), @@ -1685,8 +1682,8 @@ def _create_write_procedure( channel_reads: dict[ID, list[ChannelAccess]], is_global: Callable[[ID], bool], ) -> UnitPart: - self._session_context.used_types.append(ID(const.TYPES_INDEX)) - self._session_context.used_types.append(ID(const.TYPES_LENGTH)) + self._session_context.used_types.append(const.TYPES_INDEX) + self._session_context.used_types.append(const.TYPES_LENGTH) specification = ProcedureSpecification( "Write", @@ -1710,7 +1707,7 @@ def _create_write_procedure( Greater(Length("Buffer"), Number(0)), LessEqual( Variable("Offset"), - Sub(Last(ID(const.TYPES_LENGTH)), Length("Buffer")), + Sub(Last(const.TYPES_LENGTH), Length("Buffer")), ), LessEqual( Add(Length("Buffer"), Variable("Offset")), @@ -1751,7 +1748,7 @@ def _create_write_procedure( ), LessEqual( Variable("Offset"), - Sub(Last(ID(const.TYPES_LENGTH)), Length("Buffer")), + Sub(Last(const.TYPES_LENGTH), Length("Buffer")), ), LessEqual( Add(Length("Buffer"), Variable("Offset")), @@ -1810,7 +1807,7 @@ def _create_write_procedure( LessEqual( Variable("Offset"), Sub( - Last(ID(const.TYPES_LENGTH)), + Last(const.TYPES_LENGTH), Length("Message_Buffer"), ), ), @@ -2036,8 +2033,8 @@ def _declare( # pylint: disable = too-many-arguments, too-many-branches if len(expression.elements) == 0: object_type = Slice( Variable(const.TYPES_BYTES), - Last(ID(const.TYPES_INDEX)), - First(ID(const.TYPES_INDEX)), + Last(const.TYPES_INDEX), + First(const.TYPES_INDEX), ) initialization = None if len(expression.elements) > 0: @@ -2101,7 +2098,7 @@ def _declare( # pylint: disable = too-many-arguments, too-many-branches is_global, parameters=( { - ID(n): First(self._ada_type(t.identifier)) + n: First(self._ada_type(t.identifier)) for n, t in type_.parameter_types.items() if isinstance(t, (rty.Integer, rty.Enumeration)) } @@ -2436,7 +2433,7 @@ def _assign_to_message_aggregate( ) -> Sequence[Statement]: assert isinstance(message_aggregate.type_, rty.Message) - self._session_context.used_types_body.append(ID(const.TYPES_BIT_LENGTH)) + self._session_context.used_types_body.append(const.TYPES_BIT_LENGTH) target_type = message_aggregate.type_.identifier target_context = context_id(target, is_global) @@ -2455,7 +2452,7 @@ def _assign_to_message_aggregate( Variable(target_context), ], { - ID(p): self._convert_type(v, t) + p: self._convert_type(v, t) .substituted(self._substitution(is_global)) .ada_expr() for p, v, t in parameter_values @@ -2496,7 +2493,7 @@ def _assign_to_head( # pylint: disable = too-many-locals sequence_type = head.prefix.type_.identifier sequence_id = head.prefix.identifier sequence_context = context_id(sequence_id, is_global) - sequence_identifier = ID(ID(f"{head.prefix}")) + sequence_identifier = ID(f"{head.prefix}") if isinstance(head.prefix.type_.element, (rty.Integer, rty.Enumeration)): return [ @@ -2532,8 +2529,8 @@ def _assign_to_head( # pylint: disable = too-many-locals assert isinstance(head.prefix.type_.element, rty.Message) - self._session_context.used_types_body.append(ID(const.TYPES_LENGTH)) - self._session_context.referenced_types_body.append(ID(target_type)) + self._session_context.used_types_body.append(const.TYPES_LENGTH) + self._session_context.referenced_types_body.append(target_type) target_context = context_id(target, is_global) target_buffer = buffer_id("RFLX_Target_" + target) @@ -2581,7 +2578,7 @@ def _assign_to_head( # pylint: disable = too-many-locals element_context, [ *self._take_buffer( - ID(target), + target, target_type, is_global, target_buffer, @@ -2646,12 +2643,12 @@ def _assign_to_comprehension( # pylint: disable = too-many-arguments assert isinstance(comprehension.type_, (rty.Sequence, rty.Aggregate)) assert isinstance(comprehension.sequence.type_, rty.Sequence) - self._session_context.used_types_body.append(ID(const.TYPES_BIT_LENGTH)) + self._session_context.used_types_body.append(const.TYPES_BIT_LENGTH) - target_id = ID(target) + target_id = target target_context = context_id(target_id, is_global) sequence_type_id = comprehension.sequence.type_.identifier - iterator_id = ID(comprehension.iterator) + iterator_id = comprehension.iterator sequence_element_type = comprehension.sequence.type_.element @@ -2661,7 +2658,7 @@ def _assign_to_comprehension( # pylint: disable = too-many-arguments iterator_type_id = sequence_element_type.identifier if isinstance(comprehension.sequence, expr.Variable): - sequence_id = ID(ID(f"{comprehension.sequence}")) + sequence_id = ID(f"{comprehension.sequence}") with exception_handler.local() as local_exception_handler: return [ reset_target, @@ -2702,12 +2699,10 @@ def _assign_to_comprehension( # pylint: disable = too-many-arguments message_id = ID(selected.prefix.name) message_type = selected.prefix.type_.identifier sequence_id = ID( - ID( - f"RFLX_{selected.prefix}_{selected.selector}", - location=selected.location, - ) + f"RFLX_{selected.prefix}_{selected.selector}", + location=selected.location, ) - message_field = ID(selected.selector) + message_field = selected.selector with exception_handler.local() as local_exception_handler: return [ @@ -2853,11 +2848,11 @@ def _assign_to_call( # pylint: disable = too-many-locals argument_length = f"{argument_name}_Length" argument = expr.Slice( expr.Variable(argument_name), - expr.First(ID(const.TYPES_INDEX)), + expr.First(const.TYPES_INDEX), expr.Add( - expr.First(ID(const.TYPES_INDEX)), + expr.First(const.TYPES_INDEX), expr.Call( - ID(const.TYPES_INDEX), + const.TYPES_INDEX, [ expr.Variable(argument_length), ], @@ -2874,9 +2869,9 @@ def _assign_to_call( # pylint: disable = too-many-locals [argument_name], Slice( Variable(const.TYPES_BYTES), - First(ID(const.TYPES_INDEX)), + First(const.TYPES_INDEX), Add( - First(ID(const.TYPES_INDEX)), + First(const.TYPES_INDEX), Number( self._allocator.get_size(a.prefix.identifier, state) - 1 ), @@ -2923,16 +2918,16 @@ def _assign_to_call( # pylint: disable = too-many-locals and isinstance(a.prefix, expr.Variable) and isinstance(a.prefix.type_, (rty.Message, rty.Sequence)) ): - self._session_context.used_types_body.append(ID(const.TYPES_LENGTH)) + self._session_context.used_types_body.append(const.TYPES_LENGTH) argument_name = f"RFLX_{call_expr.identifier}_Arg_{i}_{a.prefix}" argument_length = f"{argument_name}_Length" argument = expr.Slice( expr.Variable(argument_name), - expr.First(ID(const.TYPES_INDEX)), + expr.First(const.TYPES_INDEX), expr.Add( - expr.First(ID(const.TYPES_INDEX)), + expr.First(const.TYPES_INDEX), expr.Call( - ID(const.TYPES_INDEX), + const.TYPES_INDEX, [expr.Add(expr.Variable(argument_length), expr.Number(1))], ), -expr.Number(2), @@ -2948,9 +2943,9 @@ def _assign_to_call( # pylint: disable = too-many-locals [argument_name], Slice( Variable(const.TYPES_BYTES), - First(ID(const.TYPES_INDEX)), + First(const.TYPES_INDEX), Add( - First(ID(const.TYPES_INDEX)), + First(const.TYPES_INDEX), Number( self._allocator.get_size(a.prefix.identifier, state) - 1 ), @@ -3077,7 +3072,7 @@ def _assign_to_conversion( return [ self._if( Call( - ID(contains_package) + contains_package * common.contains_function_name( refinement.package, pdu.identifier, sdu.identifier, field ), @@ -3085,7 +3080,7 @@ def _assign_to_conversion( ), [ CallStatement( - ID(contains_package) * f"Copy_{field}", + contains_package * f"Copy_{field}", [ Variable(context_id(conversion.argument.prefix.identifier, is_global)), Variable(context_id(target, is_global)), @@ -3115,7 +3110,7 @@ def _assign_message_field( # pylint: disable = too-many-arguments assert isinstance(message_type, rty.Message) return self._set_message_field( context_id(target, is_global), - ID(target_field), + target_field, message_type, value, exception_handler, @@ -3131,7 +3126,7 @@ def _append( ) -> Sequence[Statement]: assert isinstance(append.type_, rty.Sequence) - self._session_context.used_types_body.append(ID(const.TYPES_BIT_LENGTH)) + self._session_context.used_types_body.append(const.TYPES_BIT_LENGTH) def check( sequence_type: ID, required_space: Expr, precondition: Expr = None @@ -3285,7 +3280,7 @@ def _reset( target_type * "Reset", [Variable(target_context)], { - ID(n): e.substituted(self._substitution(is_global)).ada_expr() + n: e.substituted(self._substitution(is_global)).ada_expr() for n, e in reset.associations.items() }, ), @@ -3301,7 +3296,7 @@ def _required_space( ) -> tuple[Expr, Optional[Expr]]: required_space = ( size.substituted( - lambda x: expr.Call(ID(const.TYPES_BIT_LENGTH), [x]) + lambda x: expr.Call(const.TYPES_BIT_LENGTH, [x]) if (isinstance(x, expr.Variable) and isinstance(x.type_, rty.AnyInteger)) or (isinstance(x, expr.Selected) and x.type_ != rty.OPAQUE) else x @@ -3358,7 +3353,7 @@ def func(expression: expr.Expr) -> expr.Expr: expression.selector, ) return expr.Call( - expression.prefix.type_.identifier * ID(f"Get_{expression.selector}"), + expression.prefix.type_.identifier * f"Get_{expression.selector}", [expr.Variable(context_id(expression.prefix.identifier, is_global))], ) @@ -3368,7 +3363,7 @@ def func(expression: expr.Expr) -> expr.Expr: if isinstance(expression.prefix, expr.Variable): if isinstance(expression.prefix.type_, rty.Message): return expr.Call( - expression.prefix.type_.identifier * ID("Structural_Valid_Message"), + expression.prefix.type_.identifier * "Structural_Valid_Message", [expr.Variable(context_id(expression.prefix.identifier, is_global))], ) @@ -3423,13 +3418,11 @@ def func(expression: expr.Expr) -> expr.Expr: if len(expression.elements) == 1: return expr.NamedAggregate( ( - str(expr.First(ID(const.TYPES_INDEX))), - expr.Val(ID(const.TYPES_BYTE), expression.elements[0]), + str(expr.First(const.TYPES_INDEX)), + expr.Val(const.TYPES_BYTE, expression.elements[0]), ) ) - return expr.Aggregate( - *[expr.Val(ID(const.TYPES_BYTE), e) for e in expression.elements] - ) + return expr.Aggregate(*[expr.Val(const.TYPES_BYTE, e) for e in expression.elements]) if isinstance(expression, expr.Equal): if expression.left == expr.TRUE and isinstance(expression.right, expr.Variable): @@ -3630,7 +3623,7 @@ def _if_structural_valid_message_field( message_type * "Structural_Valid", [ Variable(message_context), - Variable(message_type * model.Field(ID(message_field)).affixed_name), + Variable(message_type * model.Field(message_field).affixed_name), ], ), statements, @@ -3755,7 +3748,7 @@ def _set_message_fields( statements.extend( self._set_message_field( - target_context, ID(f), message_type, v, exception_handler, is_global + target_context, f, message_type, v, exception_handler, is_global ) ) @@ -3773,7 +3766,7 @@ def _set_message_field( # pylint: disable = too-many-arguments, too-many-statements, too-many-branches, too-many-locals message_type_id = message_type.identifier - field_type = message_type.field_types[ID(field)] + field_type = message_type.field_types[field] statements: list[Statement] = [] result = statements @@ -3963,16 +3956,16 @@ def _set_message_field( ) else: assert field_type == rty.OPAQUE - self._session_context.used_types_body.append(ID(const.TYPES_LENGTH)) + self._session_context.used_types_body.append(const.TYPES_LENGTH) statements.extend( [ self._set_opaque_field_to_message_field( message_type_id, message_context, - ID(field), - ID(value_message_type_id), - ID(value_message_context), - ID(value.selector), + field, + value_message_type_id, + value_message_context, + value.selector, ), ] ) @@ -3986,9 +3979,9 @@ def _set_message_field( self._set_opaque_field_to_message( message_type_id, message_context, - ID(field), - ID(value_message_type_id), - ID(value_message_context), + field, + value_message_type_id, + value_message_context, ), ] ) @@ -4086,11 +4079,11 @@ def _set_opaque_field_to_message_field( # pylint: disable = too-many-arguments ], get_preconditions=AndThen( Call( - ID(message_type * "Has_Buffer"), + message_type * "Has_Buffer", [Variable(temporary_message_context)], ), Call( - ID(message_type * "Structural_Valid"), + message_type * "Structural_Valid", [ Variable(temporary_message_context), Variable(message_type * f"F_{message_field}"), @@ -4150,11 +4143,11 @@ def _set_opaque_field_to_message( field, get_preconditions=AndThen( Call( - ID(message_type * "Has_Buffer"), + message_type * "Has_Buffer", [Variable(message_context)], ), Call( - ID(message_type * "Structural_Valid_Message"), + message_type * "Structural_Valid_Message", [ Variable(message_context), ], @@ -4203,7 +4196,7 @@ def _declare_context( type_: ID, is_global: Callable[[ID], bool], ) -> Declaration: - self._session_context.referenced_types_body.append(ID(type_)) + self._session_context.referenced_types_body.append(type_) return ObjectDeclaration([context_id(identifier, is_global)], type_ * "Context") @staticmethod @@ -4235,7 +4228,7 @@ def _declare_sequence_copy( # pylint: disable = too-many-arguments self._copy_to_buffer( sequence_type, sequence_context, - ID(f"{copy_id(buffer_id(sequence_identifier))}"), + copy_id(buffer_id(sequence_identifier)), local_exception_handler, ), self._initialize_context( @@ -4278,7 +4271,7 @@ def _declare_message_field_sequence_copy( # pylint: disable = too-many-argument self._copy_to_buffer( message_type, context_id(message_identifier, is_global), - ID(f"{buffer_id(sequence_identifier)}"), + buffer_id(sequence_identifier), local_exception_handler, ), self._if_structural_valid_message_field( @@ -4295,8 +4288,7 @@ def _declare_message_field_sequence_copy( # pylint: disable = too-many-argument [ Variable(context_id(message_identifier, is_global)), Variable( - message_type - * model.Field(ID(message_field)).affixed_name + message_type * model.Field(message_field).affixed_name ), ], ), @@ -4305,8 +4297,7 @@ def _declare_message_field_sequence_copy( # pylint: disable = too-many-argument [ Variable(context_id(message_identifier, is_global)), Variable( - message_type - * model.Field(ID(message_field)).affixed_name + message_type * model.Field(message_field).affixed_name ), ], ), @@ -4507,15 +4498,13 @@ def _comprehension_append_element( elif isinstance(target_type.element, (rty.Integer, rty.Enumeration)): required_space = Size( - ID( - target_type.element.identifier + "_Enum" - if isinstance( - target_type.element, - rty.Enumeration, - ) - and target_type.element.always_valid - else target_type.element.identifier + target_type.element.identifier + "_Enum" + if isinstance( + target_type.element, + rty.Enumeration, ) + and target_type.element.always_valid + else target_type.element.identifier ) append_element = CallStatement( target_type_id * "Append_Element", @@ -4630,7 +4619,7 @@ def _update_context( ] def _allocate_buffer(self, identifier: ID, alloc_id: Optional[Location]) -> Sequence[Statement]: - self._session_context.used_types_body.append(ID(const.TYPES_INDEX)) + self._session_context.used_types_body.append(const.TYPES_INDEX) slot_id = Variable("Ctx.P.Slots" * self._allocator.get_slot_ptr(alloc_id)) return [ Assignment(buffer_id(identifier), slot_id), @@ -4675,7 +4664,7 @@ def _copy_to_buffer( target_buffer: ID, exception_handler: ExceptionHandler, ) -> IfStatement: - self._session_context.used_types_body.append(ID(const.TYPES_LENGTH)) + self._session_context.used_types_body.append(const.TYPES_LENGTH) return IfStatement( [ (