Browse Source

Fix regressed overloaded potential setters

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1261/head
Dimitar Dobrev 6 years ago
parent
commit
0e0513feaa
  1. 11
      src/Generator/Passes/GetterSetterToPropertyPass.cs
  2. 2
      tests/Common/Common.Tests.cs
  3. 10
      tests/Common/Common.cpp
  4. 3
      tests/Common/Common.h

11
src/Generator/Passes/GetterSetterToPropertyPass.cs

@ -138,7 +138,7 @@ namespace CppSharp.Passes @@ -138,7 +138,7 @@ namespace CppSharp.Passes
Class @class = (Class) method.Namespace;
Property property = @class.Properties.Find(
p => p.Field == null &&
(p.Name == name ||
((!isSetter && p.HasSetter && p.Name == name) ||
(isSetter && p.HasGetter &&
GetReadWritePropertyName(p.GetMethod, name) == name)) &&
((p.HasGetter &&
@ -189,6 +189,15 @@ namespace CppSharp.Passes @@ -189,6 +189,15 @@ namespace CppSharp.Passes
continue;
}
Property conflict = newProperties.LastOrDefault(
p => p.Name == property.Name && p != property &&
p.ExplicitInterfaceImpl == property.ExplicitInterfaceImpl);
if (conflict != null && conflict.GetMethod != null)
{
conflict.GetMethod.GenerationKind = GenerationKind.Generate;
conflict.GetMethod = null;
}
RenameConflictingMethods(@class, property);
CombineComments(property);
}

2
tests/Common/Common.Tests.cs

@ -527,6 +527,8 @@ public class CommonTests : GeneratorTestFixture @@ -527,6 +527,8 @@ public class CommonTests : GeneratorTestFixture
Assert.That(prop.StartWithVerb, Is.EqualTo(25));
prop.StartWithVerb = 5;
Assert.That(prop.Contains('a'), Is.EqualTo(prop.Contains1("a")));
}
using (var prop = new HasOverridenSetter())
{

10
tests/Common/Common.cpp

@ -642,6 +642,16 @@ void TestProperties::setStartWithVerb(int value) @@ -642,6 +642,16 @@ void TestProperties::setStartWithVerb(int value)
{
}
bool TestProperties::contains(char c)
{
return true;
}
bool TestProperties::contains(const char* str)
{
return true;
}
HasOverridenSetter::HasOverridenSetter()
{
}

3
tests/Common/Common.h

@ -619,6 +619,9 @@ public: @@ -619,6 +619,9 @@ public:
int startWithVerb();
void setStartWithVerb(int value);
bool contains(char c);
bool contains(const char* str);
private:
int FieldValue;
double _refToPrimitiveInSetter;

Loading…
Cancel
Save