From 4335c6e7d5b390998d30446ad524134bf618749a Mon Sep 17 00:00:00 2001 From: Atsushi Eno Date: Tue, 30 May 2017 14:39:22 +0900 Subject: [PATCH] [api-xml-adjuster] constructors could reference generic type parameters. Constructors had been considered to NOT reference generic type parameters because Java syntax does not allow them. However, its argument types could be java.lang.Class in class-parse output XML (which I guess is because class-parse tries to be as simple-and-stupid as it can be?) and every difficulty is thrown toward api-xml-adjuster. Hence it is corrected here. Note that it was not the first time that generic constructor arguments have been taken care as a valid input (0ec431e). --- .../JavaApiTypeResolverExtensions.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Xamarin.Android.Tools.ApiXmlAdjuster/JavaApiTypeResolverExtensions.cs b/src/Xamarin.Android.Tools.ApiXmlAdjuster/JavaApiTypeResolverExtensions.cs index 65f1ea7c7..060b2b775 100644 --- a/src/Xamarin.Android.Tools.ApiXmlAdjuster/JavaApiTypeResolverExtensions.cs +++ b/src/Xamarin.Android.Tools.ApiXmlAdjuster/JavaApiTypeResolverExtensions.cs @@ -104,23 +104,23 @@ public static void Resolve (this JavaField f) f.ResolvedType = f.GetApi ().Parse (f.TypeGeneric, f.Parent.TypeParameters); } - static void ResolveMethodBase (this JavaMethodBase m, JavaTypeParameters methodTypeParameters) + static void ResolveMethodBase (this JavaMethodBase m) { + if (m.TypeParameters != null) + m.TypeParameters.Resolve (m.GetApi (), m.TypeParameters); foreach (var p in m.Parameters) - p.ResolvedType = m.GetApi ().Parse (p.Type, m.Parent.TypeParameters, methodTypeParameters); + p.ResolvedType = m.GetApi ().Parse (p.Type, m.Parent.TypeParameters, m.TypeParameters); } public static void Resolve (this JavaMethod m) { - if (m.TypeParameters != null) - m.TypeParameters.Resolve (m.GetApi (), m.TypeParameters); - m.ResolveMethodBase (m.TypeParameters); + m.ResolveMethodBase (); m.ResolvedReturnType = m.GetApi ().Parse (m.Return, m.Parent.TypeParameters, m.TypeParameters); } public static void Resolve (this JavaConstructor c) { - c.ResolveMethodBase (null); + c.ResolveMethodBase (); } static void Resolve (this JavaTypeParameters tp, JavaApi api, params JavaTypeParameters [] additionalTypeParameters)