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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"])
|
||||
|
||||
Reference in New Issue
Block a user