Browse Source

Expose returned values of non-void setters

Now we generate them as methods too.

Fixes https://github.com/mono/CppSharp/issues/960.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
const-wchar_t
Dimitar Dobrev 5 years ago
parent
commit
a1ddbd82d7
  1. 3
      src/Generator/Passes/GetterSetterToPropertyPass.cs
  2. 4
      tests/Common/Common.Tests.cs
  3. 2
      tests/Common/Common.cpp
  4. 2
      tests/Common/Common.h

3
src/Generator/Passes/GetterSetterToPropertyPass.cs

@ -214,7 +214,8 @@ namespace CppSharp.Passes
conflict.GetMethod = null; conflict.GetMethod = null;
property.GetMethod.GenerationKind = GenerationKind.Internal; property.GetMethod.GenerationKind = GenerationKind.Internal;
if (property.SetMethod != null) if (property.SetMethod != null &&
property.SetMethod.OriginalReturnType.Type.Desugar().IsPrimitiveType(PrimitiveType.Void))
property.SetMethod.GenerationKind = GenerationKind.Internal; property.SetMethod.GenerationKind = GenerationKind.Internal;
property.Namespace = @class; property.Namespace = @class;
@class.Properties.Add(property); @class.Properties.Add(property);

4
tests/Common/Common.Tests.cs

@ -551,9 +551,13 @@ public class CommonTests : GeneratorTestFixture
prop.SetterReturnsBoolean = 35; prop.SetterReturnsBoolean = 35;
Assert.That(prop.SetterReturnsBoolean, Is.EqualTo(35)); Assert.That(prop.SetterReturnsBoolean, Is.EqualTo(35));
Assert.That(prop.SetSetterReturnsBoolean(35), Is.False);
Assert.That(prop.SetSetterReturnsBoolean(40), Is.True);
prop.VirtualSetterReturnsBoolean = 45; prop.VirtualSetterReturnsBoolean = 45;
Assert.That(prop.VirtualSetterReturnsBoolean, Is.EqualTo(45)); Assert.That(prop.VirtualSetterReturnsBoolean, Is.EqualTo(45));
Assert.That(prop.SetVirtualSetterReturnsBoolean(45), Is.False);
Assert.That(prop.SetVirtualSetterReturnsBoolean(50), Is.True);
Assert.That(prop.nestedEnum(), Is.EqualTo(5)); Assert.That(prop.nestedEnum(), Is.EqualTo(5));
Assert.That(prop.nestedEnum(55), Is.EqualTo(55)); Assert.That(prop.nestedEnum(55), Is.EqualTo(55));

2
tests/Common/Common.cpp

@ -631,7 +631,7 @@ int TestProperties::setterReturnsBoolean()
return _setterReturnsBoolean; return _setterReturnsBoolean;
} }
bool TestProperties::setterReturnsBoolean(int value) bool TestProperties::setSetterReturnsBoolean(int value)
{ {
bool changed = _setterReturnsBoolean != value; bool changed = _setterReturnsBoolean != value;
_setterReturnsBoolean = value; _setterReturnsBoolean = value;

2
tests/Common/Common.h

@ -623,7 +623,7 @@ public:
void set(int value); void set(int value);
int setterReturnsBoolean(); int setterReturnsBoolean();
bool setterReturnsBoolean(int value); bool setSetterReturnsBoolean(int value);
virtual int virtualSetterReturnsBoolean(); virtual int virtualSetterReturnsBoolean();
virtual bool setVirtualSetterReturnsBoolean(int value); virtual bool setVirtualSetterReturnsBoolean(int value);

Loading…
Cancel
Save