Skip to content

Commit b616c48

Browse files
committed
chore: Apply code review suggestion
1 parent 540706a commit b616c48

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

src/SourceGenerators/Uno.UI.SourceGenerators.Tests/XamlCodeGeneratorTests/Given_Parser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ public async Task When_Invalid_GridLength_Value()
390390
var test = new Verify.Test(xamlFiles) { TestState = { Sources = { _emptyCodeBehind } } }.AddGeneratedSources();
391391

392392
test.ExpectedDiagnostics.AddRange([
393-
DiagnosticResult.CompilerError("UXAML0001").WithSpan("C:/Project/0/MainPage.xaml", 8, 5, 8, 5).WithArguments("Invalid GridLength value 'invalid'"),
393+
DiagnosticResult.CompilerError("UXAML0001").WithSpan("C:/Project/0/MainPage.xaml", 8, 5, 8, 5).WithArguments("Invalid GridLength value 'invalid', expected a number (e.g., '100'), 'Auto', or a star value (e.g., '2*')"),
394394
// ==> When XAML is invalid, we still generate the class structure, so we should not miss InitializeComponent.
395395
]);
396396

src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlFileGenerator.cs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4808,7 +4808,7 @@ string Inner()
48084808
return GetMemberValue();
48094809
case SpecialType.System_Single:
48104810
case SpecialType.System_Double:
4811-
return GetFloatingPointLiteral(GetMemberValue(), propertyType, owner);
4811+
return GetFloatingPointLiteral(GetMemberValue(), propertyType, owner, owner);
48124812
case SpecialType.System_String:
48134813
return "\"" + DoubleEscape(memberValue) + "\"";
48144814
case SpecialType.System_Boolean:
@@ -5192,7 +5192,7 @@ private string BuildGridLength(string memberValue, XamlMemberDefinition? owner =
51925192
}
51935193
catch (Exception) when (owner != null)
51945194
{
5195-
AddError($"Invalid GridLength value '{memberValue}'", owner);
5195+
AddError($"Invalid GridLength value '{memberValue}', expected a number (e.g., '100'), 'Auto', or a star value (e.g., '2*')", owner);
51965196
return $"new global::{XamlConstants.Types.GridLength}(0f, global::{XamlConstants.Types.GridUnitType}.Pixel)";
51975197
}
51985198
}
@@ -6706,7 +6706,7 @@ private bool HasCustomInitializer(INamedTypeSymbol? propertyType)
67066706
return false;
67076707
}
67086708

6709-
private void BuildInitializer(IIndentedStringBuilder writer, XamlObjectDefinition xamlObjectDefinition, XamlMemberDefinition? owner = null)
6709+
private void BuildInitializer(IIndentedStringBuilder writer, XamlObjectDefinition xamlObjectDefinition, XamlMemberDefinition? owner)
67106710
{
67116711
TryAnnotateWithGeneratorSource(writer);
67126712
var initializer = xamlObjectDefinition.Members.First(m => m.Member.Name == "_Initialization");
@@ -6720,7 +6720,7 @@ private void BuildInitializer(IIndentedStringBuilder writer, XamlObjectDefinitio
67206720
throw new XamlGenerationException($"Initializer value for '{xamlObjectDefinition.Type.Name}' cannot be empty", xamlObjectDefinition);
67216721
}
67226722

6723-
writer.AppendLineInvariantIndented("{0}", GetFloatingPointLiteral(initializer.Value.ToString() ?? "", GetType(xamlObjectDefinition.Type), owner));
6723+
writer.AppendLineInvariantIndented("{0}", GetFloatingPointLiteral(initializer.Value.ToString() ?? "", GetType(xamlObjectDefinition.Type), owner, xamlObjectDefinition));
67246724
}
67256725
else if (xamlObjectDefinition.Type.Name == "Boolean")
67266726
{
@@ -6746,7 +6746,7 @@ private void BuildInitializer(IIndentedStringBuilder writer, XamlObjectDefinitio
67466746
}
67476747
}
67486748

6749-
private string GetFloatingPointLiteral(string memberValue, INamedTypeSymbol type, XamlMemberDefinition? owner)
6749+
private string GetFloatingPointLiteral(string memberValue, INamedTypeSymbol type, XamlMemberDefinition? owner, IXamlLocation location)
67506750
{
67516751
var name = ValidatePropertyType(type, owner);
67526752

@@ -6789,14 +6789,11 @@ private string GetFloatingPointLiteral(string memberValue, INamedTypeSymbol type
67896789
}
67906790

67916791
// Validate that the value is a valid number
6792-
if (!double.TryParse(memberValue, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _))
6792+
if (!double.TryParse(memberValue, NumberStyles.Float, CultureInfo.InvariantCulture, out _))
67936793
{
6794-
if (owner != null)
6795-
{
6796-
var typeName = isDouble ? "Double" : "Single";
6797-
AddError($"Invalid {typeName} value '{memberValue}'", owner);
6798-
return isDouble ? "0d" : "0f";
6799-
}
6794+
var typeName = isDouble ? "Double" : "Single";
6795+
AddError($"Invalid {typeName} value '{memberValue}'", location);
6796+
return isDouble ? "0d" : "0f";
68006797
}
68016798

68026799
return "{0}{1}".InvariantCultureFormat(memberValue, isDouble ? "d" : "f");

0 commit comments

Comments
 (0)