Browse Source

Run xDataType after TypeReferenceResolver

pull/8220/head
Max Katz 4 years ago
parent
commit
496b978cdb
  1. 10
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cs
  2. 8
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/XDataTypeTransformer.cs

10
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cs

@ -31,10 +31,9 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
// Before everything else
Transformers.Insert(0, new XNameTransformer());
Transformers.Insert(1, new XDataTypeTransformer());
Transformers.Insert(2, new IgnoredDirectivesTransformer());
Transformers.Insert(3, _designTransformer = new AvaloniaXamlIlDesignPropertiesTransformer());
Transformers.Insert(4, _bindingTransformer = new AvaloniaBindingExtensionTransformer());
Transformers.Insert(1, new IgnoredDirectivesTransformer());
Transformers.Insert(2, _designTransformer = new AvaloniaXamlIlDesignPropertiesTransformer());
Transformers.Insert(3, _bindingTransformer = new AvaloniaBindingExtensionTransformer());
// Targeted
InsertBefore<PropertyReferenceResolver>(
@ -57,6 +56,9 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
new AvaloniaXamlIlResolveByNameMarkupExtensionReplacer()
);
InsertAfter<TypeReferenceResolver>(
new XDataTypeTransformer());
// After everything else
InsertBefore<NewObjectTransformer>(
new AddNameScopeRegistration(),

8
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/XDataTypeTransformer.cs

@ -34,13 +34,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
var templateDataTypeAttribute = context.GetAvaloniaTypes().DataTypeAttribute;
var clrType = on.Type switch
{
XamlAstClrTypeReference clrRef => clrRef.Type,
XamlAstXmlTypeReference xmlRef => TypeReferenceResolver.ResolveType(context, xmlRef.Name,
on.Type.IsMarkupExtension, on, strict: false).Type,
_ => null
};
var clrType = (on.Type as XamlAstClrTypeReference)?.Type;
if (clrType is null)
{
break;

Loading…
Cancel
Save