diff options
Diffstat (limited to 'src/linker/Linker.Steps/LinkAttributesParser.cs')
-rw-r--r-- | src/linker/Linker.Steps/LinkAttributesParser.cs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/linker/Linker.Steps/LinkAttributesParser.cs b/src/linker/Linker.Steps/LinkAttributesParser.cs index 81b89e292..6de2fde31 100644 --- a/src/linker/Linker.Steps/LinkAttributesParser.cs +++ b/src/linker/Linker.Steps/LinkAttributesParser.cs @@ -145,7 +145,9 @@ namespace Mono.Linker.Steps var ctorN = new MethodDefinition (".ctor", ctorAttributes, voidType); var paramN = new ParameterDefinition (objectArrayType); +#pragma warning disable RS0030 // MethodReference.Parameters is banned. It's necessary to build the method definition here, though. ctorN.Parameters.Add (paramN); +#pragma warning restore RS0030 td.Methods.Add (ctorN); return _context.MarkedKnownMembers.RemoveAttributeInstancesAttributeDefinition = td; @@ -178,17 +180,16 @@ namespace Mono.Linker.Steps if (!method.IsInstanceConstructor ()) continue; - var parameters = method.Parameters; - if (args.Length != parameters.Count) + if (args.Length != method.GetMetadataParametersCount ()) continue; bool match = true; - for (int ii = 0; match && ii < args.Length; ++ii) { + foreach (var p in method.GetMetadataParameters ()) { // // No candidates betterness, only exact matches are supported // - var parameterType = _context.TryResolve (parameters[ii].ParameterType); - if (parameterType == null || parameterType != _context.TryResolve (args[ii].Type)) + var parameterType = _context.TryResolve (p.ParameterType); + if (parameterType == null || parameterType != _context.TryResolve (args[p.MetadataIndex].Type)) match = false; } @@ -496,6 +497,7 @@ namespace Mono.Linker.Steps var (attributes, origins) = ProcessAttributes (parameterNav, method); if (attributes != null && origins != null) { string paramName = GetAttribute (parameterNav, "name"); +#pragma warning disable RS0030 // MethodReference.Parameters is banned. It's easiest to leave existing code as is foreach (ParameterDefinition parameter in method.Parameters) { if (paramName == parameter.Name) { if (parameter.HasCustomAttributes || _attributeInfo.CustomAttributes.ContainsKey (parameter)) @@ -504,6 +506,7 @@ namespace Mono.Linker.Steps break; } } +#pragma warning restore RS0030 } } } @@ -531,6 +534,7 @@ namespace Mono.Linker.Steps return null; } +#pragma warning disable RS0030 // MethdReference.Parameters is banned. It's easiest to leave existing code as is. static string GetMethodSignature (MethodDefinition method, bool includeReturnType = false) { StringBuilder sb = new StringBuilder (); @@ -549,7 +553,7 @@ namespace Mono.Linker.Steps sb.Append (">"); } sb.Append ("("); - if (method.HasParameters) { + if (method.HasMetadataParameters ()) { for (int i = 0; i < method.Parameters.Count; i++) { if (i > 0) sb.Append (","); @@ -560,6 +564,7 @@ namespace Mono.Linker.Steps sb.Append (")"); return sb.ToString (); } +#pragma warning restore RS0030 protected override void ProcessProperty (TypeDefinition type, PropertyDefinition property, XPathNavigator nav, object? customData, bool fromSignature) { |