diff --git a/tests/generator-Tests/Unit-Tests/GenBaseTests.cs b/tests/generator-Tests/Unit-Tests/GenBaseTests.cs index 3229b2e2a..02e494b4f 100644 --- a/tests/generator-Tests/Unit-Tests/GenBaseTests.cs +++ b/tests/generator-Tests/Unit-Tests/GenBaseTests.cs @@ -91,6 +91,22 @@ public void TestEqualsMethodsWithOneParameter () Assert.False (c.RequiresNew (m.Name, m)); } + [Test] + public void TestMethodClone_GenericArguments () + { + var c = SupportTypeBuilder.CreateClass ("java.myClass", options); + var m = SupportTypeBuilder.CreateMethod (c, "DoStuff", options); + + m.GenericArguments = new GenericParameterDefinitionList { + new GenericParameterDefinition ("T", null) + }; + + var clone = m.Clone (c); + + Assert.AreEqual (1, clone.GenericArguments.Count); + Assert.AreEqual ("T", clone.GenericArguments [0].Name); + } + void TestParameterlessMethods (string name) { var c = SupportTypeBuilder.CreateClass ("java.myClass", options); diff --git a/tools/generator/Java.Interop.Tools.Generator.ObjectModel/Method.cs b/tools/generator/Java.Interop.Tools.Generator.ObjectModel/Method.cs index 2ec7509fe..cd5bced9d 100644 --- a/tools/generator/Java.Interop.Tools.Generator.ObjectModel/Method.cs +++ b/tools/generator/Java.Interop.Tools.Generator.ObjectModel/Method.cs @@ -126,9 +126,13 @@ public Method Clone (GenBase declaringType) clone.SourceFile = SourceFile; clone.JavadocInfo = JavadocInfo; - if (GenericArguments != null) + if (GenericArguments != null) { + if (clone.GenericArguments is null) + clone.GenericArguments = new GenericParameterDefinitionList (); + foreach (var ga in GenericArguments) clone.GenericArguments.Add (ga.Clone ()); + } foreach (var p in Parameters) clone.Parameters.Add (p.Clone ());