diff --git a/integration_tests/tuple_test.ucg b/integration_tests/tuple_test.ucg index 847fd96..48f2c23 100644 --- a/integration_tests/tuple_test.ucg +++ b/integration_tests/tuple_test.ucg @@ -12,6 +12,7 @@ let nestedtpl = { }, scalar = 1, list = [1, 2, 3, 4], + maybe_val = NULL, }; assert | @@ -23,6 +24,9 @@ assert | assert | nestedtpl.scalar == 1; |; +assert | + nestedtpl.maybe_val == NULL; +|; assert | nestedtpl.inner.field == "value"; |; @@ -46,6 +50,7 @@ let nestedcopy = nestedtpl{ }, field2 = 2, }, + maybe_val = "some val", }; let deepnestedcopy = nestedcopy{ @@ -65,4 +70,19 @@ assert | |; assert | deepnestedcopy.inner.inner.field4 == 4; +|; +assert | + deepnestedcopy.maybe_val == "some val"; +|; + +let base_maybe = { + real = "A real value", +}; + +let copy_maybe = base_maybe{ + real = NULL, +}; + +assert | + copy_maybe.real == NULL; |; \ No newline at end of file diff --git a/src/build/mod.rs b/src/build/mod.rs index 2c60a60..83aeac8 100644 --- a/src/build/mod.rs +++ b/src/build/mod.rs @@ -877,7 +877,10 @@ impl<'a> Builder<'a> { // overriding field here. // Ensure that the new type matches the old type. let src_val = v.get().clone(); - if src_val.1.type_equal(&expr_result) { + if src_val.1.type_equal(&expr_result) + || src_val.1.is_empty() + || expr_result.is_empty() + { v.insert((src_val.0, expr_result)); } else { self.pop_val();