Browse Source

Attempt to generate debug info

xamlil-debug-info
Nikita Tsukanov 7 years ago
parent
commit
8ffde81adb
  1. 11
      src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs
  2. 4
      src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs
  3. 2
      src/Markup/Avalonia.Markup.Xaml/XamlIl/AvaloniaXamlIlRuntimeCompiler.cs
  4. 4
      src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/AvaloniaXamlIlCompiler.cs
  5. 2
      src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github

11
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);
}

4
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();

2
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);

4
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);
}

2
src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github

@ -1 +1 @@
Subproject commit 22a7267a22124cd2413f83082298b5c0e10a8c02
Subproject commit 9d8bf26d0e43af6d53e4e505da4e1275be9224ee
Loading…
Cancel
Save