Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/linker.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2019-09-20 17:51:44 +0300
committerMarek Safar <marek.safar@gmail.com>2019-09-23 20:23:03 +0300
commitc0b569a81e7e98113c5e52722ecd417e1b916f78 (patch)
tree6fb9fe4b5b05a6f0f4ee5a1efa90baf4272e7143 /test/Mono.Linker.Tests.Cases/TypeForwarding/AttributeArgumentForwardedWithCopyAction.cs
parentb1f6390fb9d83d2d6caa151ef9ffa26503770cf2 (diff)
Update CustomAttributes scope also for assemblies which are copied
only in case any of their dependencies was removed Follow up fix for #737
Diffstat (limited to 'test/Mono.Linker.Tests.Cases/TypeForwarding/AttributeArgumentForwardedWithCopyAction.cs')
-rw-r--r--test/Mono.Linker.Tests.Cases/TypeForwarding/AttributeArgumentForwardedWithCopyAction.cs98
1 files changed, 98 insertions, 0 deletions
diff --git a/test/Mono.Linker.Tests.Cases/TypeForwarding/AttributeArgumentForwardedWithCopyAction.cs b/test/Mono.Linker.Tests.Cases/TypeForwarding/AttributeArgumentForwardedWithCopyAction.cs
new file mode 100644
index 000000000..6ee82d650
--- /dev/null
+++ b/test/Mono.Linker.Tests.Cases/TypeForwarding/AttributeArgumentForwardedWithCopyAction.cs
@@ -0,0 +1,98 @@
+using System;
+using Mono.Linker.Tests.Cases.Expectations.Assertions;
+using Mono.Linker.Tests.Cases.Expectations.Metadata;
+using Mono.Linker.Tests.Cases.TypeForwarding.Dependencies;
+
+namespace Mono.Linker.Tests.Cases.TypeForwarding
+{
+ // Actions:
+ // link - Forwarder.dll and Implementation.dll
+ // copy - this (test.dll) assembly
+
+ [SetupLinkerUserAction ("link")]
+ [SetupLinkerAction ("copy", "test")]
+ [KeepTypeForwarderOnlyAssemblies ("false")]
+
+ [SetupCompileBefore ("Forwarder.dll", new[] { "Dependencies/ReferenceImplementationLibrary.cs" }, defines: new[] { "INCLUDE_REFERENCE_IMPL" })]
+
+ // After compiling the test case we then replace the reference impl with implementation + type forwarder
+ [SetupCompileAfter ("Implementation.dll", new[] { "Dependencies/ImplementationLibrary.cs" })]
+ [SetupCompileAfter ("Forwarder.dll", new[] { "Dependencies/ForwarderLibrary.cs" }, references: new[] { "Implementation.dll" })]
+
+ [RemovedAssembly ("Forwarder.dll")]
+ [KeptMemberInAssembly ("Implementation.dll", typeof (ImplementationLibrary))]
+ static class AttributeArgumentForwardedWithCopyAction
+ {
+ static void Main()
+ {
+ Test_1 ();
+ }
+
+ [Kept]
+ [KeptAttributeAttribute (typeof (TestType2Attribute))]
+ [TestType2 (typeof (ImplementationLibrary))]
+ public static void Test_1 ()
+ {
+ }
+
+ [Kept]
+ [KeptAttributeAttribute (typeof (TestType2Attribute))]
+ [TestType2 (typeof (ImplementationLibrary[,][]))]
+ public static void Test_1b ()
+ {
+ }
+
+ [Kept]
+ [KeptAttributeAttribute (typeof (TestType2Attribute))]
+ [TestType2 (typeof (ImplementationLibrary [,] []))]
+ public static void Test_1c ()
+ {
+ }
+
+ [Kept]
+ [KeptAttributeAttribute (typeof (TestType2Attribute))]
+ [TestType2 (TestProperty = new object [] { typeof (ImplementationLibrary) })]
+ public static void Test_2 ()
+ {
+ }
+
+ [Kept]
+ [KeptAttributeAttribute (typeof (TestType2Attribute))]
+ [TestType2 (TestField = typeof (SomeGenericType2<ImplementationLibrary[]>))]
+ public static void Test_3 ()
+ {
+ }
+
+
+ [Kept]
+ [KeptAttributeAttribute (typeof (TestType2Attribute))]
+ [TestType2 (TestField = typeof (SomeGenericType2<>))]
+ public static void Test_3a ()
+ {
+ }
+ }
+
+ [KeptBaseType (typeof (Attribute))]
+ public class TestType2Attribute : Attribute {
+ [Kept]
+ public TestType2Attribute ()
+ {
+ }
+
+ [Kept]
+ public TestType2Attribute (Type arg)
+ {
+ }
+
+ [KeptBackingField]
+ [Kept]
+ public object TestProperty { [Kept] get; [Kept] set; }
+
+ [Kept]
+ public object TestField;
+ }
+
+ [Kept]
+ static class SomeGenericType2<T> {
+ }
+}