From 53e64dd97c7cb215f5a5f71159da2cac21938c83 Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Thu, 15 Sep 2022 15:28:45 -0500 Subject: [PATCH] [generator] Add [SupportedOSPlatform] attributes to bounds constant fields. --- .../Unit-Tests/CodeGeneratorTests.cs | 18 ++++++++++++++++++ tools/generator/SourceWriters/BoundField.cs | 1 + 2 files changed, 19 insertions(+) diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs b/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs index bbb9724c2..79f8e17ac 100644 --- a/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs +++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorTests.cs @@ -736,6 +736,24 @@ public void SupportedOSPlatform () StringAssert.Contains ("[global::System.Runtime.Versioning.SupportedOSPlatformAttribute (\"android30.0\")]", builder.ToString (), "Should contain SupportedOSPlatform!"); } + + [Test] + public void SupportedOSPlatformConstFields () + { + // Ensure we write [SupportedOSPlatform] for const fields + var klass = new TestClass ("java.lang.Object", "com.mypackage.foo"); + var field = new TestField ("java.lang.String", "bar").SetConstant ("MY_VALUE"); + + field.ApiAvailableSince = 30; + + klass.Fields.Add (field); + + generator.Context.ContextTypes.Push (klass); + generator.WriteType (klass, string.Empty, new GenerationInfo ("", "", "MyAssembly")); + generator.Context.ContextTypes.Pop (); + + StringAssert.Contains ("[global::System.Runtime.Versioning.SupportedOSPlatformAttribute (\"android30.0\")]", builder.ToString (), "Should contain SupportedOSPlatform!"); + } } [TestFixture] diff --git a/tools/generator/SourceWriters/BoundField.cs b/tools/generator/SourceWriters/BoundField.cs index 620c3134a..259bdbc94 100644 --- a/tools/generator/SourceWriters/BoundField.cs +++ b/tools/generator/SourceWriters/BoundField.cs @@ -31,6 +31,7 @@ public BoundField (GenBase type, Field field, CodeGenerationOptions opt) if (field.IsEnumified) Attributes.Add (new GeneratedEnumAttr ()); + SourceWriterExtensions.AddSupportedOSPlatform (Attributes, field, opt); SourceWriterExtensions.AddObsolete (Attributes, field.DeprecatedComment, opt, field.IsDeprecated, isError: field.IsDeprecatedError, deprecatedSince: field.DeprecatedSince); if (field.Annotation.HasValue ())