diff options
author | Stephane Delcroix <stephane@delcroix.org> | 2016-06-01 22:48:03 +0200 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-06-01 13:48:03 -0700 |
commit | 071883ea17bd2e9a368f8cb8cab82b639d5385f4 (patch) | |
tree | 1a3a7478d7523182a327a757c60c6efa46968561 | |
parent | 3aa5d68e2e9a70766aefc746a2566d0766a03b58 (diff) | |
download | xamarin-forms-071883ea17bd2e9a368f8cb8cab82b639d5385f4.tar.gz xamarin-forms-071883ea17bd2e9a368f8cb8cab82b639d5385f4.tar.bz2 xamarin-forms-071883ea17bd2e9a368f8cb8cab82b639d5385f4.zip |
Xaml werr (#191)
* [XamlC] get rid of 0219
* [XamlC] get rid of 0168
* [XamC] it's 436 time
* [XamlC] bye 108
* [XamlC] remove one though obsolete invocation
* [XamlC] no longer depend on any obsolete
* align the stars
9 files changed, 33 insertions, 50 deletions
diff --git a/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs b/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs index f4b2f52c..bec6386d 100644 --- a/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs +++ b/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs @@ -48,7 +48,7 @@ namespace Xamarin.Forms.Build.Tasks LogLine(2, " Module: {0}", module.Name); foreach (var resource in module.Resources.OfType<EmbeddedResource>()) { - Log(2, " Resource: {0}... ", resource.Name); + LogString(2, " Resource: {0}... ", resource.Name); string classname; if (!resource.IsXaml(out classname)) { @@ -74,7 +74,7 @@ namespace Xamarin.Forms.Build.Tasks } LogLine(2, ""); - Log(2, " Duplicating {0}.InitializeComponent () into {0}.InitCompRuntime ... ", typeDef.Name); + LogString(2, " Duplicating {0}.InitializeComponent () into {0}.InitCompRuntime ... ", typeDef.Name); var initCompRuntime = new MethodDefinition("InitCompRuntime", initComp.Attributes, initComp.ReturnType); initCompRuntime.Body = initComp.Body; typeDef.Methods.Add(initCompRuntime); @@ -100,10 +100,10 @@ namespace Xamarin.Forms.Build.Tasks md => md.IsConstructor && md.Parameters.Count == 1 && md.Parameters[0].ParameterType == module.TypeSystem.Boolean) .FirstOrDefault(); if (altCtor != null) - Log(2, " Replacing body of {0}.{0} (bool {1}) ... ", typeDef.Name, altCtor.Parameters[0].Name); + LogString(2, " Replacing body of {0}.{0} (bool {1}) ... ", typeDef.Name, altCtor.Parameters[0].Name); else { - Log(2, " Adding {0}.{0} (bool useCompiledXaml) ... ", typeDef.Name); + LogString(2, " Adding {0}.{0} (bool useCompiledXaml) ... ", typeDef.Name); altCtor = new MethodDefinition(".ctor", MethodAttributes.Public | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, module.TypeSystem.Void); @@ -139,7 +139,7 @@ namespace Xamarin.Forms.Build.Tasks LogLine(2, ""); } - Log(1, "Writing the assembly... "); + LogString(1, "Writing the assembly... "); assemblyDefinition.Write(Assembly, new WriterParameters { WriteSymbols = DebugSymbols diff --git a/Xamarin.Forms.Build.Tasks/ExpandMarkupsVisitor.cs b/Xamarin.Forms.Build.Tasks/ExpandMarkupsVisitor.cs index e63ae426..bbdaa6c8 100644 --- a/Xamarin.Forms.Build.Tasks/ExpandMarkupsVisitor.cs +++ b/Xamarin.Forms.Build.Tasks/ExpandMarkupsVisitor.cs @@ -164,7 +164,7 @@ namespace Xamarin.Forms.Build.Tasks try { type = new XmlType(namespaceuri, name + "Extension", null); - var typeref = type.GetTypeReference(contextProvider.Context.Body.Method.Module, null); + type.GetTypeReference(contextProvider.Context.Body.Method.Module, null); } catch (XamlParseException) { diff --git a/Xamarin.Forms.Build.Tasks/FixedCreateCSharpManifestResourceName.cs b/Xamarin.Forms.Build.Tasks/FixedCreateCSharpManifestResourceName.cs index a508a558..34ee1f55 100644 --- a/Xamarin.Forms.Build.Tasks/FixedCreateCSharpManifestResourceName.cs +++ b/Xamarin.Forms.Build.Tasks/FixedCreateCSharpManifestResourceName.cs @@ -7,7 +7,9 @@ namespace Xamarin.Forms.Build.Tasks public class FixedCreateCSharpManifestResourceName : CreateCSharpManifestResourceName { [Output] +#pragma warning disable 0108 public ITaskItem[] ResourceFilesWithManifestResourceNames { get; set; } +#pragma warning restore 0108 public override bool Execute() { diff --git a/Xamarin.Forms.Build.Tasks/MethodReferenceExtensions.cs b/Xamarin.Forms.Build.Tasks/MethodReferenceExtensions.cs index e377a0c6..6240a201 100644 --- a/Xamarin.Forms.Build.Tasks/MethodReferenceExtensions.cs +++ b/Xamarin.Forms.Build.Tasks/MethodReferenceExtensions.cs @@ -6,33 +6,13 @@ namespace Xamarin.Forms.Build.Tasks { static class MethodReferenceExtensions { - [Obsolete] - public static MethodReference MakeGeneric(this MethodReference self, params TypeReference[] arguments) - { - var reference = new MethodReference(self.Name, self.ReturnType) - { - DeclaringType = self.DeclaringType.MakeGenericInstanceType(arguments), - HasThis = self.HasThis, - ExplicitThis = self.ExplicitThis, - CallingConvention = self.CallingConvention - }; - - foreach (var parameter in self.Parameters) - reference.Parameters.Add(new ParameterDefinition(parameter.ParameterType)); - - foreach (var generic_parameter in self.GenericParameters) - reference.GenericParameters.Add(new GenericParameter(generic_parameter.Name, reference)); - - return reference; - } - public static MethodReference ResolveGenericParameters(this MethodReference self, TypeReference declaringTypeRef, ModuleDefinition module) { if (self == null) - throw new ArgumentNullException("self"); + throw new ArgumentNullException(nameof(self)); if (declaringTypeRef == null) - throw new ArgumentNullException("declaringTypeRef"); + throw new ArgumentNullException(nameof(declaringTypeRef)); var reference = new MethodReference(self.Name, self.ReturnType) { @@ -42,8 +22,10 @@ namespace Xamarin.Forms.Build.Tasks CallingConvention = self.CallingConvention }; - foreach (var parameter in self.Parameters) - reference.Parameters.Add(new ParameterDefinition(module.Import(parameter.ParameterType))); + foreach (var parameter in self.Parameters) { + var p = parameter.ParameterType.IsGenericParameter ? parameter.ParameterType : module.Import(parameter.ParameterType); + reference.Parameters.Add(new ParameterDefinition(p)); + } foreach (var generic_parameter in self.GenericParameters) reference.GenericParameters.Add(new GenericParameter(generic_parameter.Name, reference)); diff --git a/Xamarin.Forms.Build.Tasks/NodeILExtensions.cs b/Xamarin.Forms.Build.Tasks/NodeILExtensions.cs index 30b01061..97b48a40 100644 --- a/Xamarin.Forms.Build.Tasks/NodeILExtensions.cs +++ b/Xamarin.Forms.Build.Tasks/NodeILExtensions.cs @@ -90,10 +90,11 @@ namespace Xamarin.Forms.Build.Tasks MethodReference nullableCtor = null; if (targetTypeRef.Resolve().FullName == "System.Nullable`1") { + var nullableTypeRef = targetTypeRef; targetTypeRef = ((GenericInstanceType)targetTypeRef).GenericArguments[0]; isNullable = true; nullableCtor = originalTypeRef.GetMethods(md => md.IsConstructor && md.Parameters.Count == 1, module).Single().Item1; - nullableCtor = nullableCtor.MakeGeneric(targetTypeRef); + nullableCtor = nullableCtor.ResolveGenericParameters(nullableTypeRef, module); } //Obvious Built-in conversions if (targetTypeRef.Resolve().BaseType != null && targetTypeRef.Resolve().BaseType.FullName == "System.Enum") diff --git a/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs b/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs index 692ef8b5..71f19f56 100644 --- a/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs +++ b/Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs @@ -239,7 +239,7 @@ namespace Xamarin.Forms.Build.Tasks var provideValueInfo = markExt.Methods.First(md => md.Name == "ProvideValue"); var provideValue = module.Import(provideValueInfo); provideValue = - module.Import(provideValue.MakeGeneric(markupExtension.GenericArguments.Select(tr => module.Import(tr)).ToArray())); + module.Import(provideValue.ResolveGenericParameters(markupExtension, module)); var typeNode = node.Properties[new XmlName("", "Type")]; TypeReference arrayTypeRef; @@ -263,7 +263,7 @@ namespace Xamarin.Forms.Build.Tasks var provideValueInfo = markExt.Methods.First(md => md.Name == "ProvideValue"); var provideValue = module.Import(provideValueInfo); provideValue = - module.Import(provideValue.MakeGeneric(markupExtension.GenericArguments.Select(tr => module.Import(tr)).ToArray())); + module.Import(provideValue.ResolveGenericParameters(markupExtension, module)); vardefref.VariableDefinition = new VariableDefinition(module.Import(genericArguments.First())); yield return Instruction.Create(OpCodes.Ldloc, context.Variables[node]); @@ -311,7 +311,7 @@ namespace Xamarin.Forms.Build.Tasks var handled = false; //If it's an attached BP, update elementType and propertyName - var attached = GetNameAndTypeRef(ref elementType, propertyName.NamespaceURI, ref localName, context, iXmlLineInfo); + GetNameAndTypeRef(ref elementType, propertyName.NamespaceURI, ref localName, context, iXmlLineInfo); //If the target is an event, connect // IL_0007: ldloc.0 @@ -650,16 +650,18 @@ namespace Xamarin.Forms.Build.Tasks //SetDataTemplate parentIl.Emit(OpCodes.Ldftn, loadTemplate); + var funcObjRef = module.Import(typeof(Func<object>)); var funcCtor = - module.Import(typeof (Func<>)) - .MakeGenericInstanceType(module.TypeSystem.Object) + funcObjRef .Resolve() .Methods.First(md => md.IsConstructor && md.Parameters.Count == 2) - .MakeGeneric(module.TypeSystem.Object); + .ResolveGenericParameters(funcObjRef, module); parentIl.Emit(OpCodes.Newobj, module.Import(funcCtor)); +#pragma warning disable 0612 var propertySetter = module.Import(typeof (IDataTemplate)).Resolve().Properties.First(p => p.Name == "LoadTemplate").SetMethod; +#pragma warning restore 0612 parentContext.IL.Emit(OpCodes.Callvirt, module.Import(propertySetter)); } } diff --git a/Xamarin.Forms.Build.Tasks/SetResourcesVisitor.cs b/Xamarin.Forms.Build.Tasks/SetResourcesVisitor.cs index d09c4b00..2bf19c26 100644 --- a/Xamarin.Forms.Build.Tasks/SetResourcesVisitor.cs +++ b/Xamarin.Forms.Build.Tasks/SetResourcesVisitor.cs @@ -76,7 +76,6 @@ namespace Xamarin.Forms.Build.Tasks if (IsCollectionItem(node, parentNode) && parentNode is IElementNode) { // Collection element, implicit content, or implicit collection element. - CustomAttribute cpAttr; var parentVar = Context.Variables[(IElementNode)parentNode]; if (parentVar.VariableType.ImplementsInterface(Module.Import(typeof (IEnumerable)))) { diff --git a/Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj b/Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj index 24ca4680..1bdd8bf1 100644 --- a/Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj +++ b/Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj @@ -21,7 +21,7 @@ <WarningLevel>4</WarningLevel> <ConsolePause>false</ConsolePause> <TreatWarningsAsErrors>true</TreatWarningsAsErrors> - <NoWarn>0108;0612;0436;0168;0219</NoWarn> + <NoWarn></NoWarn> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>full</DebugType> @@ -66,9 +66,6 @@ </ItemGroup> <ItemGroup> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="..\Xamarin.Forms.Xaml\XmlnsHelper.cs"> - <Link>XmlnsHelper.cs</Link> - </Compile> <Compile Include="XamlGTask.cs" /> <Compile Include="ILContext.cs" /> <Compile Include="CreateObjectVisitor.cs" /> diff --git a/Xamarin.Forms.Build.Tasks/XamlCTask.cs b/Xamarin.Forms.Build.Tasks/XamlCTask.cs index 7c429d31..19548b80 100644 --- a/Xamarin.Forms.Build.Tasks/XamlCTask.cs +++ b/Xamarin.Forms.Build.Tasks/XamlCTask.cs @@ -84,7 +84,7 @@ namespace Xamarin.Forms.Build.Tasks } } - protected void Log(int level, string format, params object[] arg) + protected void LogString(int level, string format, params object[] arg) { if (level <= 0) Console.Error.Write(format, arg); @@ -193,7 +193,7 @@ namespace Xamarin.Forms.Build.Tasks var resourcesToPrune = new List<EmbeddedResource>(); foreach (var resource in module.Resources.OfType<EmbeddedResource>()) { - Log(2, " Resource: {0}... ", resource.Name); + LogString(2, " Resource: {0}... ", resource.Name); string classname; if (!resource.IsXaml(out classname)) { @@ -232,7 +232,7 @@ namespace Xamarin.Forms.Build.Tasks } LogLine(2, ""); - Log(2, " Parsing Xaml... "); + LogString(2, " Parsing Xaml... "); var rootnode = ParseXaml(resource.GetResourceStream(), typeDef); if (rootnode == null) { @@ -245,7 +245,7 @@ namespace Xamarin.Forms.Build.Tasks try { - Log(2, " Replacing {0}.InitializeComponent ()... ", typeDef.Name); + LogString(2, " Replacing {0}.InitializeComponent ()... ", typeDef.Name); var body = new MethodBody(initComp); var il = body.GetILProcessor(); il.Emit(OpCodes.Nop); @@ -291,7 +291,7 @@ namespace Xamarin.Forms.Build.Tasks if (OptimizeIL) { - Log(2, " Optimizing IL... "); + LogString(2, " Optimizing IL... "); initComp.Body.OptimizeMacros(); LogLine(2, "done"); } @@ -299,7 +299,7 @@ namespace Xamarin.Forms.Build.Tasks if (OutputGeneratedILAsCode) { var filepath = Path.Combine(Path.GetDirectoryName(Assembly), typeDef.FullName + ".decompiled.cs"); - Log(2, " Decompiling {0} into {1}...", typeDef.FullName, filepath); + LogString(2, " Decompiling {0} into {1}...", typeDef.FullName, filepath); var decompilerContext = new DecompilerContext(module); using (var writer = new StreamWriter(filepath)) { @@ -320,7 +320,7 @@ namespace Xamarin.Forms.Build.Tasks LogLine(2, " Removing compiled xaml resources"); foreach (var resource in resourcesToPrune) { - Log(2, " Removing {0}... ", resource.Name); + LogString(2, " Removing {0}... ", resource.Name); module.Resources.Remove(resource); LogLine(2, "done"); } @@ -335,7 +335,7 @@ namespace Xamarin.Forms.Build.Tasks return success; } - Log(1, "Writing the assembly... "); + LogString(1, "Writing the assembly... "); try { assemblyDefinition.Write(Assembly, new WriterParameters |