summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Build.Tasks
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2016-06-01 22:48:03 +0200
committerJason Smith <jason.smith@xamarin.com>2016-06-01 13:48:03 -0700
commit071883ea17bd2e9a368f8cb8cab82b639d5385f4 (patch)
tree1a3a7478d7523182a327a757c60c6efa46968561 /Xamarin.Forms.Build.Tasks
parent3aa5d68e2e9a70766aefc746a2566d0766a03b58 (diff)
downloadxamarin-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
Diffstat (limited to 'Xamarin.Forms.Build.Tasks')
-rw-r--r--Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs10
-rw-r--r--Xamarin.Forms.Build.Tasks/ExpandMarkupsVisitor.cs2
-rw-r--r--Xamarin.Forms.Build.Tasks/FixedCreateCSharpManifestResourceName.cs2
-rw-r--r--Xamarin.Forms.Build.Tasks/MethodReferenceExtensions.cs30
-rw-r--r--Xamarin.Forms.Build.Tasks/NodeILExtensions.cs3
-rw-r--r--Xamarin.Forms.Build.Tasks/SetPropertiesVisitor.cs14
-rw-r--r--Xamarin.Forms.Build.Tasks/SetResourcesVisitor.cs1
-rw-r--r--Xamarin.Forms.Build.Tasks/Xamarin.Forms.Build.Tasks.csproj5
-rw-r--r--Xamarin.Forms.Build.Tasks/XamlCTask.cs16
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