diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs index c76aa57a02..3d155c6d0c 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs @@ -3,17 +3,16 @@ using System.IO; using System.Linq; using Avalonia.Utilities; using Mono.Cecil; +using XamlIl.TypeSystem; namespace Avalonia.Build.Tasks { public static partial class XamlCompilerTaskExecutor { - interface IResource + interface IResource : IFileSource { string Uri { get; } string Name { get; } - byte[] GetData(); - string FilePath { get; } void Remove(); } @@ -49,8 +48,8 @@ namespace Avalonia.Build.Tasks public string Uri => $"resm:{Name}?assembly={_asm.Name.Name}"; public string Name => _res.Name; - public byte[] GetData() => _res.GetResourceData(); public string FilePath => Name; + public byte[] FileContents => _res.GetResourceData(); public void Remove() => _asm.MainModule.Resources.Remove(_res); } @@ -94,7 +93,7 @@ namespace Avalonia.Build.Tasks _embedded = new EmbeddedResource("!AvaloniaResources", ManifestResourceAttributes.Public, AvaloniaResourcesIndexReaderWriter.Create(_resources.ToDictionary(x => x.Key, - x => x.Value.GetData()))); + x => x.Value.FileContents))); _asm.MainModule.Resources.Add(_embedded); } @@ -118,8 +117,8 @@ namespace Avalonia.Build.Tasks } public string Uri { get; } public string Name { get; } - public byte[] GetData() => _data; public string FilePath { get; } + public byte[] FileContents => _data; public void Remove() => _grp._resources.Remove(Name); } diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs index f3967e9bb3..c498db263d 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs @@ -120,7 +120,7 @@ namespace Avalonia.Build.Tasks try { // StreamReader is needed here to handle BOM - var xaml = new StreamReader(new MemoryStream(res.GetData())).ReadToEnd(); + var xaml = new StreamReader(new MemoryStream(res.FileContents)).ReadToEnd(); var parsed = XDocumentXamlIlParser.Parse(xaml); var initialRoot = (XamlIlAstObjectNode)parsed.Root; @@ -143,7 +143,7 @@ namespace Avalonia.Build.Tasks var buildName = classType == null ? "Build:" + res.Name : null; compiler.Compile(parsed, builder, contextClass, populateName, buildName, - "NamespaceInfo:" + res.Name, res.Uri); + "NamespaceInfo:" + res.Name, res.Uri, res); var classTypeDefinition = classType == null ? null : typeSystem.GetTypeReference(classType).Resolve(); diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs index 62d87ac285..621facea25 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs @@ -121,7 +121,7 @@ namespace Avalonia.Markup.Xaml.XamlIl overrideType = _sreTypeSystem.GetType(rootInstance.GetType()); } - compiler.ParseAndCompile(xaml, uri?.ToString(), _sreTypeSystem.CreateTypeBuilder(tb), overrideType); + compiler.ParseAndCompile(xaml, uri?.ToString(), null, _sreTypeSystem.CreateTypeBuilder(tb), overrideType); var created = tb.CreateTypeInfo(); return LoadOrPopulate(created, rootInstance); diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs index 22d66e3b9d..f9139a1beb 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs @@ -56,7 +56,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions public const string PopulateName = "__AvaloniaXamlIlPopulate"; public const string BuildName = "__AvaloniaXamlIlBuild"; - public void ParseAndCompile(string xaml, string baseUri, IXamlIlTypeBuilder tb, IXamlIlType overrideRootType) + public void ParseAndCompile(string xaml, string baseUri, IFileSource fileSource, IXamlIlTypeBuilder tb, IXamlIlType overrideRootType) { var parsed = XDocumentXamlIlParser.Parse(xaml); @@ -74,7 +74,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions } Transform(parsed); - Compile(parsed, tb, _contextType, PopulateName, BuildName, "__AvaloniaXamlIlNsInfo", baseUri); + Compile(parsed, tb, _contextType, PopulateName, BuildName, "__AvaloniaXamlIlNsInfo", baseUri, fileSource); } diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github index 22a7267a22..9d8bf26d0e 160000 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github @@ -1 +1 @@ -Subproject commit 22a7267a22124cd2413f83082298b5c0e10a8c02 +Subproject commit 9d8bf26d0e43af6d53e4e505da4e1275be9224ee