@@ -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