Fix #143585: wrong structure type inferencing for lists

Mixing dynamic data with other data always results in dynamic now. While this
wasn't true without lists, it is true now and also makes sense generally. Also
mixing lists and single values or fields results in a list now.

Pull Request: https://projects.blender.org/blender/blender/pulls/144183
This commit is contained in:
Jacques Lucke
2025-08-08 09:07:20 +02:00
parent 18ec47361f
commit 4a1020df6c
2 changed files with 13 additions and 15 deletions

View File

@@ -452,21 +452,9 @@ static StructureType left_to_right_merge(const StructureType a, const StructureT
if (a == b) {
return a;
}
if ((a == StructureType::Dynamic && b == StructureType::Single) ||
(a == StructureType::Single && b == StructureType::Dynamic))
{
if (a == StructureType::Dynamic || b == StructureType::Dynamic) {
return StructureType::Dynamic;
}
if ((a == StructureType::Dynamic && b == StructureType::Field) ||
(a == StructureType::Field && b == StructureType::Dynamic))
{
return StructureType::Dynamic;
}
if ((a == StructureType::Dynamic && b == StructureType::Grid) ||
(a == StructureType::Grid && b == StructureType::Dynamic))
{
return StructureType::Grid;
}
if ((a == StructureType::Field && b == StructureType::Grid) ||
(a == StructureType::Grid && b == StructureType::Field))
{
@@ -482,6 +470,16 @@ static StructureType left_to_right_merge(const StructureType a, const StructureT
{
return StructureType::Grid;
}
if ((a == StructureType::Single && b == StructureType::List) ||
(a == StructureType::List && b == StructureType::Single))
{
return StructureType::List;
}
if ((a == StructureType::Field && b == StructureType::List) ||
(a == StructureType::List && b == StructureType::Field))
{
return StructureType::List;
}
/* Invalid combination. */
return a;
}

View File

@@ -123,7 +123,7 @@ class StructureTypeInferenceTest(unittest.TestCase):
self.assertDynamic(node.inputs["auto+single"])
self.assertDynamic(node.inputs["auto+dynamic"])
self.assertDynamic(node.inputs["auto+field"])
self.assertGrid(node.inputs["auto+grid"])
self.assertDynamic(node.inputs["auto+grid"])
self.assertSingle(node.inputs["single+single"])
self.assertDynamic(node.inputs["single+dynamic"])
@@ -132,7 +132,7 @@ class StructureTypeInferenceTest(unittest.TestCase):
self.assertDynamic(node.inputs["dynamic+dynamic"])
self.assertDynamic(node.inputs["dynamic+field"])
self.assertGrid(node.inputs["dynamic+grid"])
self.assertDynamic(node.inputs["dynamic+grid"])
self.assertField(node.inputs["field+field"])
self.assertGrid(node.inputs["field+grid"])