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);