diff --git a/src/Generator/Passes/GetterSetterToPropertyPass.cs b/src/Generator/Passes/GetterSetterToPropertyPass.cs index 3ab238cf..8060b108 100644 --- a/src/Generator/Passes/GetterSetterToPropertyPass.cs +++ b/src/Generator/Passes/GetterSetterToPropertyPass.cs @@ -38,7 +38,10 @@ namespace CppSharp.Passes foreach (Method getter in from getter in getters where getter.IsGenerated && - getter.SynthKind != FunctionSynthKind.ComplementOperator + getter.SynthKind != FunctionSynthKind.ComplementOperator && + ((Class) getter.Namespace).Methods.All( + m => m == getter || !m.IsGenerated || m.Name != getter.Name || + m.Parameters.Count(p => p.Kind == ParameterKind.Regular) == 0) select getter) { // Make it a read-only property diff --git a/tests/CSharp/CSharp.Tests.cs b/tests/CSharp/CSharp.Tests.cs index 4e45c646..12cea524 100644 --- a/tests/CSharp/CSharp.Tests.cs +++ b/tests/CSharp/CSharp.Tests.cs @@ -1265,6 +1265,6 @@ public unsafe class CSharpTests : GeneratorTestFixture private class OverrideVirtualTemplate : VirtualTemplate { - public override int Function => 10; + public override int Function() => 10; } } diff --git a/tests/Common/Common.Tests.cs b/tests/Common/Common.Tests.cs index 24d6cbc5..75b6c372 100644 --- a/tests/Common/Common.Tests.cs +++ b/tests/Common/Common.Tests.cs @@ -480,25 +480,30 @@ public class CommonTests : GeneratorTestFixture public void TestProperties() { // Test field property - var prop = new TestProperties(); - Assert.That(prop.Field, Is.EqualTo(0)); - prop.Field = 10; - Assert.That(prop.Field, Is.EqualTo(10)); + using (var prop = new TestProperties()) + { + Assert.That(prop.Field, Is.EqualTo(0)); + prop.Field = 10; + Assert.That(prop.Field, Is.EqualTo(10)); + + // Test getter/setter property + prop.Field = 20; + Assert.That(prop.FieldValue, Is.EqualTo(20)); + prop.FieldValue = 10; + Assert.That(prop.FieldValue, Is.EqualTo(10)); - // Test getter/setter property - prop.Field = 20; - Assert.That(prop.FieldValue, Is.EqualTo(20)); - prop.FieldValue = 10; - Assert.That(prop.FieldValue, Is.EqualTo(10)); + prop.GetterAndSetterWithTheSameName = 25; + Assert.That(prop.GetterAndSetterWithTheSameName, Is.EqualTo(25)); - prop.GetterAndSetterWithTheSameName = 25; - Assert.That(prop.GetterAndSetterWithTheSameName, Is.EqualTo(25)); + prop.SetterReturnsBoolean = 35; + Assert.That(prop.SetterReturnsBoolean, Is.EqualTo(35)); - prop.SetterReturnsBoolean = 35; - Assert.That(prop.SetterReturnsBoolean, Is.EqualTo(35)); + prop.VirtualSetterReturnsBoolean = 45; + Assert.That(prop.VirtualSetterReturnsBoolean, Is.EqualTo(45)); - prop.VirtualSetterReturnsBoolean = 45; - Assert.That(prop.VirtualSetterReturnsBoolean, Is.EqualTo(45)); + Assert.That(prop.nestedEnum(), Is.EqualTo(5)); + Assert.That(prop.nestedEnum(55), Is.EqualTo(55)); + } } [Test] diff --git a/tests/Common/Common.cpp b/tests/Common/Common.cpp index e7684deb..862d8d6a 100644 --- a/tests/Common/Common.cpp +++ b/tests/Common/Common.cpp @@ -586,6 +586,16 @@ bool TestProperties::setVirtualSetterReturnsBoolean(int value) return changed; } +int TestProperties::nestedEnum() +{ + return 5; +} + +int TestProperties::nestedEnum(int i) +{ + return i; +} + HasOverridenSetter::HasOverridenSetter() { } diff --git a/tests/Common/Common.h b/tests/Common/Common.h index b36f37c6..9aa5236c 100644 --- a/tests/Common/Common.h +++ b/tests/Common/Common.h @@ -578,6 +578,12 @@ DLL_API int Function() struct DLL_API TestProperties { public: + enum class NestedEnum + { + Value1, + Value2 + }; + TestProperties(); int Field; @@ -600,6 +606,9 @@ public: virtual int virtualSetterReturnsBoolean(); virtual bool setVirtualSetterReturnsBoolean(int value); + + int nestedEnum(); + int nestedEnum(int i); private: int FieldValue; double _refToPrimitiveInSetter;