Browse Source

fix some query error and print out more detailed exceptions in query parser (#20170)

pull/20178/head
Emmanuel Hansen 10 months ago
committed by GitHub
parent
commit
0b5a82884e
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlQueryTransformer.cs
  2. 4
      src/Markup/Avalonia.Markup/Markup/Parsers/ContainerQueryGrammar.cs

2
src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlQueryTransformer.cs

@ -98,7 +98,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers
} }
catch (Exception e) catch (Exception e)
{ {
throw new XamlParseException("Unable to parse query: " + e.Message, node); throw new XamlParseException("Unable to parse query: " + e, node);
} }
var query = Create(parsed); var query = Create(parsed);

4
src/Markup/Avalonia.Markup/Markup/Parsers/ContainerQueryGrammar.cs

@ -84,7 +84,7 @@ namespace Avalonia.Markup.Parsers
if (identifier.SequenceEqual(MinWidthKeyword.AsSpan()) || identifier.SequenceEqual(MaxWidthKeyword.AsSpan()) || identifier.SequenceEqual(WidthKeyword.AsSpan())) if (identifier.SequenceEqual(MinWidthKeyword.AsSpan()) || identifier.SequenceEqual(MaxWidthKeyword.AsSpan()) || identifier.SequenceEqual(WidthKeyword.AsSpan()))
{ {
if (!r.TakeIf(':')) if (!r.TakeIf(':'))
throw new ExpressionParseException(r.Position, "Expected ':' after 'orientation'."); throw new ExpressionParseException(r.Position, $"Expected ':' after '{identifier}'.");
double val = ParseDecimal(ref r); double val = ParseDecimal(ref r);
var syntax = new WidthSyntax() var syntax = new WidthSyntax()
@ -101,7 +101,7 @@ namespace Avalonia.Markup.Parsers
if (identifier.SequenceEqual(MinHeightKeyword.AsSpan()) || identifier.SequenceEqual(MaxHeightKeyword.AsSpan()) || identifier.SequenceEqual(HeightKeyword.AsSpan())) if (identifier.SequenceEqual(MinHeightKeyword.AsSpan()) || identifier.SequenceEqual(MaxHeightKeyword.AsSpan()) || identifier.SequenceEqual(HeightKeyword.AsSpan()))
{ {
if (!r.TakeIf(':')) if (!r.TakeIf(':'))
throw new ExpressionParseException(r.Position, "Expected ':' after 'orientation'."); throw new ExpressionParseException(r.Position, $"Expected ':' after '{identifier}'.");
double val = ParseDecimal(ref r); double val = ParseDecimal(ref r);
var syntax = new HeightSyntax() var syntax = new HeightSyntax()

Loading…
Cancel
Save