Skip to content

Commit f2eee25

Browse files
author
Vincent Bordenave
committed
Fix OrderableString resolving
Updating a value on an OrderableString using the index accessor, like if it was a simple IList, can lead to duplicated value into the underlying _list member. And if the resolved string doesn't have the same order value than the already existing one, it will lead to annoying error at generation time. We fix it by using the SetOrRemoveAtIndex, which is specifically done for this kind of case
1 parent a4af945 commit f2eee25

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

Sharpmake/Resolver.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,24 @@ private void ResolveMember(string objectPath, object obj, MemberInfo memberInfo,
812812
SetResolved(memberPath);
813813
}
814814
}
815+
else if (fieldValue is OrderableStrings)
816+
{
817+
if (CanWriteFieldValue(fieldInfo))
818+
{
819+
SetResolving(memberPath);
820+
OrderableStrings values = fieldValue as OrderableStrings;
821+
822+
for (int i = 0; i < values.Count; ++i)
823+
{
824+
bool wasChanged;
825+
string value = Resolve(values[i], fallbackValue, out wasChanged);
826+
if (wasChanged)
827+
i = values.SetOrRemoveAtIndex(i, value);
828+
}
829+
830+
SetResolved(memberPath);
831+
}
832+
}
815833
else if (fieldValue is IList<string>)
816834
{
817835
if (CanWriteFieldValue(fieldInfo))

0 commit comments

Comments
 (0)