diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs b/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs index 79f8e17ac..f8a550893 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs @@ -576,7 +576,7 @@ public void ObsoletedOSPlatformAttributeUnneededSupport () - + @@ -599,7 +599,6 @@ public void ObsoletedOSPlatformAttributeUnneededSupport () generator.Context.ContextTypes.Pop (); // These should use [Obsolete] because they have always been obsolete in all currently supported versions (21+) - Assert.True (writer.ToString ().Contains ("[global::System.Obsolete (@\"This is a class deprecated since 19!\")]"), writer.ToString ()); Assert.True (writer.ToString ().Contains ("[global::System.Obsolete (@\"This is a field deprecated since 0!\")]"), writer.ToString ()); Assert.True (writer.ToString ().Contains ("[global::System.Obsolete (@\"This is a constructor deprecated since empty string!\")]"), writer.ToString ()); diff --git a/tests/generator-Tests/Unit-Tests/XmlApiImporterTests.cs b/tests/generator-Tests/Unit-Tests/XmlApiImporterTests.cs index 184f37c64..9999d17b4 100644 --- a/tests/generator-Tests/Unit-Tests/XmlApiImporterTests.cs +++ b/tests/generator-Tests/Unit-Tests/XmlApiImporterTests.cs @@ -78,6 +78,15 @@ public void CreateCtor_CorrectApiSinceFromClass () Assert.AreEqual (7, klass.Ctors [0].ApiAvailableSince); } + [Test] + public void CreateCtor_CorrectDeprecatedSinceFromClass () + { + var xml = XDocument.Parse (""); + var klass = XmlApiImporter.CreateClass (xml.Root, xml.Root.Element ("class"), opt); + + Assert.AreEqual (7, klass.Ctors [0].DeprecatedSince); + } + [Test] public void CreateField_StudlyCaseName () { @@ -138,6 +147,15 @@ public void CreateField_CorrectApiVersionFromClass () Assert.AreEqual (7, field.ApiAvailableSince); } + [Test] + public void CreateField_CorrectDeprecatedSinceFromClass () + { + var xml = XDocument.Parse (""); + var klass = XmlApiImporter.CreateClass (xml.Root, xml.Root.Element ("class"), opt); + + Assert.AreEqual (7, klass.Fields [0].DeprecatedSince); + } + [Test] public void CreateInterface_EnsureValidName () { @@ -212,6 +230,15 @@ public void CreateMethod_CorrectApiSinceFromClass () Assert.AreEqual (7, klass.Methods [0].ApiAvailableSince); } + [Test] + public void CreateMethod_CorrectDeprecatedSinceFromClass () + { + var xml = XDocument.Parse (""); + var klass = XmlApiImporter.CreateClass (xml.Root, xml.Root.Element ("class"), opt); + + Assert.AreEqual (7, klass.Methods [0].DeprecatedSince); + } + [Test] public void CreateParameter_EnsureValidName () { diff --git a/tools/generator/Java.Interop.Tools.Generator.Importers/XmlApiImporter.cs b/tools/generator/Java.Interop.Tools.Generator.Importers/XmlApiImporter.cs index 2e773df60..e3f2e3850 100644 --- a/tools/generator/Java.Interop.Tools.Generator.Importers/XmlApiImporter.cs +++ b/tools/generator/Java.Interop.Tools.Generator.Importers/XmlApiImporter.cs @@ -191,6 +191,10 @@ public static Ctor CreateCtor (GenBase declaringType, XElement elem, CodeGenerat ctor.Name = EnsureValidIdentifer (ctor.Name); + // If declaring type was deprecated earlier than member, use the type's deprecated-since + if (declaringType.DeprecatedSince.HasValue && declaringType.DeprecatedSince.Value < ctor.DeprecatedSince.GetValueOrDefault (0)) + ctor.DeprecatedSince = declaringType.DeprecatedSince; + FillApiSince (ctor, elem); return ctor; @@ -230,6 +234,10 @@ public static Field CreateField (GenBase declaringType, XElement elem, CodeGener field.Name = EnsureValidIdentifer (field.Name); } + // If declaring type was deprecated earlier than member, use the type's deprecated-since + if (declaringType.DeprecatedSince.HasValue && declaringType.DeprecatedSince.Value < field.DeprecatedSince.GetValueOrDefault (0)) + field.DeprecatedSince = declaringType.DeprecatedSince; + FillApiSince (field, elem); SetLineInfo (field, elem, options); @@ -398,6 +406,10 @@ public static Method CreateMethod (GenBase declaringType, XElement elem, CodeGen method.FillReturnType (); + // If declaring type was deprecated earlier than member, use the type's deprecated-since + if (declaringType.DeprecatedSince.HasValue && declaringType.DeprecatedSince.Value < method.DeprecatedSince.GetValueOrDefault (0)) + method.DeprecatedSince = declaringType.DeprecatedSince; + FillApiSince (method, elem); SetLineInfo (method, elem, options);