databricks-cli/libs/dyn/convert
shreyas-goenka dac5f09556
Retain location metadata for values in `convert.FromTyped` (#1523)
## Changes

There are four different treatments location metadata can receive in the
`convert.FromTyped` method.

1. Location metadata is **retained** for maps, structs and slices if the
value is **not nil**
2. Location metadata is **lost** for maps, structs and slices if the
value is **is nil**
3. Location metadata is **retained** if a scalar type (eg. bool, string
etc) does not change.
4. Location metadata is **lost** if the value for a scalar type changes.

This PR ensures that location metadata is not lost in any case; that is,
it's always preserved.

For (2), this serves as a bug fix so that location information is not
lost on conversion to and from typed for nil values of complex types
(struct, slices, and maps).

For (4) this is a change in semantics. For primitive values modified in
a `typed` mutator, any references to `.Location()` for computed
primitive fields will now return associated YAML location metadata (if
any) instead of an empty location.

While arguable, these semantics are OK since:
1. Situations like these will be rare.
2. Knowing the YAML location (if any) is better than not knowing the
location at all. These locations are typically visible to the user in
errors and warnings.

## Tests

Unit tests
2024-06-25 13:40:21 +00:00
..
end_to_end_test.go Fix conversion of zero valued scalar pointers to a dynamic value (#1433) 2024-05-21 11:53:00 +00:00
error.go Rename libs/config -> libs/dyn (#1086) 2023-12-22 13:20:45 +00:00
from_typed.go Retain location metadata for values in `convert.FromTyped` (#1523) 2024-06-25 13:40:21 +00:00
from_typed_test.go Retain location metadata for values in `convert.FromTyped` (#1523) 2024-06-25 13:40:21 +00:00
normalize.go Convert between integer and float in normalization (#1371) 2024-04-17 08:58:07 +00:00
normalize_test.go Convert between integer and float in normalization (#1371) 2024-04-17 08:58:07 +00:00
struct_info.go Add support for Lakehouse monitoring in bundles (#1307) 2024-05-31 09:42:25 +00:00
struct_info_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
to_typed.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00
to_typed_test.go Define `dyn.Mapping` to represent maps (#1301) 2024-03-25 11:01:09 +00:00