FEATURE: handle ENPTY specially. in copy expressions.

This commit is contained in:
Jeremy Wall 2018-11-25 13:26:47 -06:00
parent b797f099b4
commit 5e07f24d91
2 changed files with 24 additions and 1 deletions

View File

@ -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;
|;

View File

@ -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();