Fixed deeply nested template property resolution

commit_hash:ab20e59f17b49d067159784ad367550aeee77e45
This commit is contained in:
feldspar
2026-02-27 11:39:25 +03:00
parent 74f9650d3e
commit fde9cce7d9
3 changed files with 56 additions and 0 deletions
+1
View File
@@ -24691,6 +24691,7 @@
"test_data/parsing_test_data/required_property_value_is_missing.json":"divkit/public/test_data/parsing_test_data/required_property_value_is_missing.json",
"test_data/parsing_test_data/simple_values.json":"divkit/public/test_data/parsing_test_data/simple_values.json",
"test_data/parsing_test_data/templates/cross_level_link_resolution_in_items.json":"divkit/public/test_data/parsing_test_data/templates/cross_level_link_resolution_in_items.json",
"test_data/parsing_test_data/templates/deeply_nested_card.json":"divkit/public/test_data/parsing_test_data/templates/deeply_nested_card.json",
"test_data/parsing_test_data/templates/direct_value_overrides_link.json":"divkit/public/test_data/parsing_test_data/templates/direct_value_overrides_link.json",
"test_data/parsing_test_data/templates/invalid_value_replaced_with_default_value_in_div_text.json":"divkit/public/test_data/parsing_test_data/templates/invalid_value_replaced_with_default_value_in_div_text.json",
"test_data/parsing_test_data/templates/link_is_overridden_in_derived_template.json":"divkit/public/test_data/parsing_test_data/templates/link_is_overridden_in_derived_template.json",
@@ -136,6 +136,13 @@ final class UntypedDivTemplateResolver {
guard !key.hasPrefix("$") else { continue }
result[key] = value
}
for paramName in parameterNames {
if result[paramName] == nil, let value = linkSource[paramName] {
result[paramName] = value
}
}
return result
}
@@ -0,0 +1,48 @@
{
"description": "Parameter values are forwarded through a 2-level template chain (container → image) via $-link indirection",
"templates": {
"inner_template": {
"type": "image",
"$image_url": "image"
},
"outer_template": {
"type": "container",
"items": [
{
"type": "inner_template"
}
]
}
},
"card": {
"log_id": "test",
"states": [
{
"state_id": 0,
"div": {
"type": "outer_template",
"image": "https://image.url"
}
}
]
},
"expected": {
"card": {
"log_id": "test",
"states": [
{
"state_id": 0,
"div": {
"type": "container",
"items": [
{
"type": "image",
"image_url": "https://image.url"
}
]
}
}
]
}
}
}