Browse Source

Update XamlX (#13158)

* Update XamlX, with Avalonia changes

* Made XamlX internal in Designer.HostApp
pull/13179/head
Julien Lebosquain 3 years ago
committed by GitHub
parent
commit
d968d7bf2d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1002
      api/Avalonia.nupkg.xml
  2. 18
      src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs
  3. 4
      src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs
  4. 4
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cs
  5. 2
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlLanguage.cs
  6. 8
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs
  7. 4
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs
  8. 4
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlTrampolineBuilder.cs
  9. 2
      src/Markup/Avalonia.Markup.Xaml.Loader/xamlil.github
  10. 2
      src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj

1002
api/Avalonia.nupkg.xml

File diff suppressed because it is too large

18
src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs

@ -363,10 +363,16 @@ namespace Avalonia.Build.Tasks
populateBuilder, populateBuilder,
parsed, parsed,
populateName, populateName,
classTypeDefinition == null && classModifierPublic.Value), classTypeDefinition == null && classModifierPublic.Value
? XamlVisibility.Public
: XamlVisibility.Private),
buildName == null ? buildName == null ?
null : null :
compiler.DefineBuildMethod(builder, parsed, buildName, classModifierPublic.Value)))); compiler.DefineBuildMethod(
builder,
parsed,
buildName,
classModifierPublic.Value ? XamlVisibility.Public : XamlVisibility.Assembly))));
} }
catch (Exception e) catch (Exception e)
{ {
@ -418,11 +424,11 @@ namespace Avalonia.Build.Tasks
contextClass, contextClass,
document.TypeBuilderProvider.PopulateMethod, document.TypeBuilderProvider.PopulateMethod,
document.TypeBuilderProvider.BuildMethod, document.TypeBuilderProvider.BuildMethod,
builder.DefineSubType(compilerConfig.WellKnownTypes.Object, "NamespaceInfo:" + res.Name, true), builder.DefineSubType(compilerConfig.WellKnownTypes.Object, "NamespaceInfo:" + res.Name, XamlVisibility.Public),
(closureName, closureBaseType) => (closureName, closureBaseType) =>
populateBuilder.DefineSubType(closureBaseType, closureName, false), populateBuilder.DefineSubType(closureBaseType, closureName, XamlVisibility.Private),
(closureName, returnType, parameterTypes) => (closureName, returnType, parameterTypes) =>
populateBuilder.DefineDelegateSubType(closureName, false, returnType, parameterTypes), populateBuilder.DefineDelegateSubType(closureName, XamlVisibility.Private, returnType, parameterTypes),
res.Uri, res res.Uri, res
); );
@ -677,7 +683,7 @@ namespace Avalonia.Build.Tasks
foreach (var ogMethod in wrappedOgType.Methods.Where(m => m.IsPublic && m.IsStatic)) foreach (var ogMethod in wrappedOgType.Methods.Where(m => m.IsPublic && m.IsStatic))
{ {
var method = typeBuilder.DefineMethod(ogMethod.ReturnType, ogMethod.Parameters, ogMethod.Name, var method = typeBuilder.DefineMethod(ogMethod.ReturnType, ogMethod.Parameters, ogMethod.Name,
ogMethod.IsPublic, ogMethod.IsStatic, false); XamlVisibility.Public, ogMethod.IsStatic, false);
method.Generator.Ldnull(); method.Generator.Ldnull();
method.Generator.Throw(); method.Generator.Throw();
} }

4
src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs

@ -254,9 +254,9 @@ namespace Avalonia.Markup.Xaml.XamlIl
true, true,
() => new XamlDocumentTypeBuilderProvider( () => new XamlDocumentTypeBuilderProvider(
builder, builder,
compiler.DefinePopulateMethod(builder, parsed, AvaloniaXamlIlCompiler.PopulateName, true), compiler.DefinePopulateMethod(builder, parsed, AvaloniaXamlIlCompiler.PopulateName, XamlVisibility.Public),
document.RootInstance is null ? document.RootInstance is null ?
compiler.DefineBuildMethod(builder, parsed, AvaloniaXamlIlCompiler.BuildName, true) : compiler.DefineBuildMethod(builder, parsed, AvaloniaXamlIlCompiler.BuildName, XamlVisibility.Public) :
null))); null)));
originalDocuments.Add(document); originalDocuments.Add(document);
} }

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

@ -191,8 +191,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
_configuration.TypeMappings.XmlNamespaceInfoProvider == null ? _configuration.TypeMappings.XmlNamespaceInfoProvider == null ?
null : null :
tb.DefineSubType(_configuration.WellKnownTypes.Object, tb.DefineSubType(_configuration.WellKnownTypes.Object,
"__AvaloniaXamlIlNsInfo", false), (name, bt) => tb.DefineSubType(bt, name, false), "__AvaloniaXamlIlNsInfo", XamlVisibility.Private), (name, bt) => tb.DefineSubType(bt, name, XamlVisibility.Private),
(s, returnType, parameters) => tb.DefineDelegateSubType(s, false, returnType, parameters), baseUri, (s, returnType, parameters) => tb.DefineDelegateSubType(s, XamlVisibility.Private, returnType, parameters), baseUri,
fileSource); fileSource);
} }

2
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlLanguage.cs

@ -93,7 +93,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
var nameScopeType = typeSystem.FindType("Avalonia.Controls.INameScope"); var nameScopeType = typeSystem.FindType("Avalonia.Controls.INameScope");
var field = typebuilder.DefineField(nameScopeType, var field = typebuilder.DefineField(nameScopeType,
ContextNameScopeFieldName, true, false); ContextNameScopeFieldName, XamlVisibility.Public, false);
constructor constructor
.Ldarg_0() .Ldarg_0()
.Ldarg(1) .Ldarg(1)

8
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlClrPropertyInfoHelper.cs

@ -57,7 +57,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
var name = lst.Count == 0 ? key : key + "_" + context.Configuration.IdentifierGenerator.GenerateIdentifierPart(); var name = lst.Count == 0 ? key : key + "_" + context.Configuration.IdentifierGenerator.GenerateIdentifierPart();
var field = _builder.DefineField(types.IPropertyInfo, name + "!Field", false, true); var field = _builder.DefineField(types.IPropertyInfo, name + "!Field", XamlVisibility.Private, true);
void Load(IXamlMethod m, IXamlILEmitter cg, bool passThis) void Load(IXamlMethod m, IXamlILEmitter cg, bool passThis)
{ {
@ -80,7 +80,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
var getter = property.Getter == null ? var getter = property.Getter == null ?
null : null :
_builder.DefineMethod(types.XamlIlTypes.Object, _builder.DefineMethod(types.XamlIlTypes.Object,
new[] {types.XamlIlTypes.Object}, name + "!Getter", false, true, false); new[] {types.XamlIlTypes.Object}, name + "!Getter", XamlVisibility.Private, true, false);
if (getter != null) if (getter != null)
{ {
Load(property.Getter, getter.Generator, !property.Getter.IsStatic); Load(property.Getter, getter.Generator, !property.Getter.IsStatic);
@ -95,7 +95,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
null : null :
_builder.DefineMethod(types.XamlIlTypes.Void, _builder.DefineMethod(types.XamlIlTypes.Void,
new[] {types.XamlIlTypes.Object, types.XamlIlTypes.Object}, new[] {types.XamlIlTypes.Object, types.XamlIlTypes.Object},
name + "!Setter", false, true, false); name + "!Setter", XamlVisibility.Private, true, false);
if (setter != null) if (setter != null)
{ {
Load(property.Setter, setter.Generator, !property.Getter.IsStatic); Load(property.Setter, setter.Generator, !property.Getter.IsStatic);
@ -111,7 +111,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
} }
var get = _builder.DefineMethod(types.IPropertyInfo, Array.Empty<IXamlType>(), var get = _builder.DefineMethod(types.IPropertyInfo, Array.Empty<IXamlType>(),
name + "!Property", true, true, false); name + "!Property", XamlVisibility.Public, true, false);
var ctor = types.ClrPropertyInfo.Constructors.First(c => var ctor = types.ClrPropertyInfo.Constructors.First(c =>

4
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlPropertyInfoAccessorFactoryEmitter.cs

@ -77,7 +77,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
{ {
IsStatic = true IsStatic = true
}); });
var indexField = _indexerClosureTypeBuilder.DefineField(intType, "_index", false, false); var indexField = _indexerClosureTypeBuilder.DefineField(intType, "_index", XamlVisibility.Private, false);
var ctor = _indexerClosureTypeBuilder.DefineConstructor(false, intType); var ctor = _indexerClosureTypeBuilder.DefineConstructor(false, intType);
ctor.Generator ctor.Generator
.Ldarg_0() .Ldarg_0()
@ -88,7 +88,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
types.IPropertyAccessor, types.IPropertyAccessor,
new[] { weakReferenceType, types.IPropertyInfo }, new[] { weakReferenceType, types.IPropertyInfo },
IndexerClosureFactoryMethodName, IndexerClosureFactoryMethodName,
isPublic: true, visibility: XamlVisibility.Public,
isStatic: false, isStatic: false,
isInterfaceImpl: false) isInterfaceImpl: false)
.Generator .Generator

4
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlTrampolineBuilder.cs

@ -32,7 +32,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
context.Configuration.WellKnownTypes.Void, context.Configuration.WellKnownTypes.Void,
new[] { context.Configuration.WellKnownTypes.Object, context.Configuration.WellKnownTypes.Object }, new[] { context.Configuration.WellKnownTypes.Object, context.Configuration.WellKnownTypes.Object },
methodName, methodName,
true, XamlVisibility.Public,
true, true,
false); false);
var gen = trampoline.Generator; var gen = trampoline.Generator;
@ -88,7 +88,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions
context.Configuration.WellKnownTypes.Boolean, context.Configuration.WellKnownTypes.Boolean,
new[] { context.Configuration.WellKnownTypes.Object, context.Configuration.WellKnownTypes.Object }, new[] { context.Configuration.WellKnownTypes.Object, context.Configuration.WellKnownTypes.Object },
methodName, methodName,
true, XamlVisibility.Public,
true, true,
false); false);
if (canExecuteMethod.DeclaringType.IsValueType) if (canExecuteMethod.DeclaringType.IsValueType)

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

@ -1 +1 @@
Subproject commit c23ae3ed669532e2af8d86be18369584a803170a Subproject commit c59b4b1673051ef86ac07cd51587b6ca8a279dd5

2
src/tools/Avalonia.Designer.HostApp/Avalonia.Designer.HostApp.csproj

@ -2,6 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks> <TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
<DefineConstants>$(DefineConstants);XAMLX_INTERNAL</DefineConstants>
</PropertyGroup> </PropertyGroup>
<!--Disable Net Perf. analyzer for submodule to avoid commit issue --> <!--Disable Net Perf. analyzer for submodule to avoid commit issue -->
<PropertyGroup> <PropertyGroup>
@ -20,6 +21,7 @@
<Compile Include="..\..\..\src\Markup\Avalonia.Markup.Xaml.Loader\AvaloniaXamlIlRuntimeCompiler.cs" /> <Compile Include="..\..\..\src\Markup\Avalonia.Markup.Xaml.Loader\AvaloniaXamlIlRuntimeCompiler.cs" />
<Compile Include="..\..\..\src\Markup\Avalonia.Markup.Xaml.Loader\CompilerDynamicDependencies.cs" /> <Compile Include="..\..\..\src\Markup\Avalonia.Markup.Xaml.Loader\CompilerDynamicDependencies.cs" />
<Compile Include="..\..\Avalonia.Base\Utilities\StringBuilderCache.cs" Link="Utilities\StringBuilderCache.cs" /> <Compile Include="..\..\Avalonia.Base\Utilities\StringBuilderCache.cs" Link="Utilities\StringBuilderCache.cs" />
<Compile Include="..\..\Avalonia.Base\Compatibility\TrimmingAttributes.cs" Link="TrimmingAttributes.cs" Visible="False" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia.Angle.Windows.Natives" Version="2.1.22045.20230930" /> <PackageReference Include="Avalonia.Angle.Windows.Natives" Version="2.1.22045.20230930" />

Loading…
Cancel
Save