From acc6fa05dd65371c539886a8bb4901566190053b Mon Sep 17 00:00:00 2001 From: Tobias Reiher Date: Mon, 10 Aug 2020 12:11:18 +0200 Subject: [PATCH] Fix prefixing of built-in literals Ref. #388 --- rflx/model.py | 4 +++- tests/test_model.py | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/rflx/model.py b/rflx/model.py index 66f079ce4..d6c910aa0 100644 --- a/rflx/model.py +++ b/rflx/model.py @@ -814,7 +814,7 @@ def prefixed_expression(expression: Expr) -> Expr: **{ v: v.__class__(f"{self.package}.{v.name}") for v in expression.variables() - if v.identifier in literals + if v.identifier in literals and v.identifier not in BUILTIN_LITERALS }, } ).simplified() @@ -2162,6 +2162,8 @@ def qualified_type_name(name: ID, package: ID) -> ID: BOOLEAN.identifier: BOOLEAN, } +BUILTIN_LITERALS = {l for t in BUILTIN_TYPES.values() for l in t.literals} + def is_internal_type(name: StrID) -> bool: return ID(name) in INTERNAL_TYPES or any( diff --git a/tests/test_model.py b/tests/test_model.py index c5c0c54f6..0cb5e13f8 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1086,13 +1086,13 @@ def test_prefixed_message() -> None: GreaterEqual(Variable("F1"), Number(200)), first=First("F1"), ), - Link(Field("F2"), FINAL), + Link(Field("F2"), FINAL, Equal(Variable("F2"), Variable("True"))), Link(Field("F3"), Field("F4"), length=Variable("F3")), Link(Field("F4"), FINAL), ], { Field("F1"): deepcopy(MODULAR_INTEGER), - Field("F2"): deepcopy(MODULAR_INTEGER), + Field("F2"): deepcopy(BOOLEAN), Field("F3"): deepcopy(RANGE_INTEGER), Field("F4"): Opaque(), }, @@ -1113,13 +1113,13 @@ def test_prefixed_message() -> None: GreaterEqual(Variable("X_F1"), Number(200)), first=First("X_F1"), ), - Link(Field("X_F2"), FINAL), + Link(Field("X_F2"), FINAL, Equal(Variable("X_F2"), Variable("True"))), Link(Field("X_F3"), Field("X_F4"), length=Variable("X_F3")), Link(Field("X_F4"), FINAL), ], { Field("X_F1"): deepcopy(MODULAR_INTEGER), - Field("X_F2"): deepcopy(MODULAR_INTEGER), + Field("X_F2"): deepcopy(BOOLEAN), Field("X_F3"): deepcopy(RANGE_INTEGER), Field("X_F4"): Opaque(), },