From 8cb16e665dbb5f87aa58856049c1ad6067dc6293 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 17 Jan 2024 13:16:29 +0100 Subject: prog: handle multiple matching union fields If conditions of several union fields are satisfied, select one randomly. This would be a more logical semantics. When conditional struct fields are translated to unions, negate the condition for the union alternative. --- pkg/compiler/gen.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'pkg') diff --git a/pkg/compiler/gen.go b/pkg/compiler/gen.go index d274877a2..f91e2502c 100644 --- a/pkg/compiler/gen.go +++ b/pkg/compiler/gen.go @@ -556,6 +556,11 @@ func (comp *compiler) wrapConditionalField(name string, field prog.Field) prog.F { Name: "void", Type: voidType, + Condition: &prog.BinaryExpression{ + Operator: prog.OperatorCompareEq, + Left: newCondition, + Right: &prog.Value{Value: 0x0, Path: nil}, + }, }, }, }, -- cgit mrf-deployment