diff --git a/src/Compatibility/ControlGallery/src/Core/Compatibility.ControlGallery.Core.csproj b/src/Compatibility/ControlGallery/src/Core/Compatibility.ControlGallery.Core.csproj index edd776ae4569..87b252ddbbd3 100644 --- a/src/Compatibility/ControlGallery/src/Core/Compatibility.ControlGallery.Core.csproj +++ b/src/Compatibility/ControlGallery/src/Core/Compatibility.ControlGallery.Core.csproj @@ -5,7 +5,7 @@ Microsoft.Maui.Controls.Compatibility.ControlGallery 4 0114;0108;0109;4014;0649;0169;0472;0414;0168;0219;0429;0618;0612 - $(WarningsNotAsErrors);XC10101;XC10102 + $(WarningsNotAsErrors);XC0022;XC0023 True diff --git a/src/Controls/samples/Directory.Build.props b/src/Controls/samples/Directory.Build.props index 241a359433ad..5fadd0e2e51e 100644 --- a/src/Controls/samples/Directory.Build.props +++ b/src/Controls/samples/Directory.Build.props @@ -2,7 +2,7 @@ true true - $(WarningsNotAsErrors);XC10101;XC10102 + $(WarningsNotAsErrors);XC0022;XC0023 diff --git a/src/Controls/src/Build.Tasks/BuildException.cs b/src/Controls/src/Build.Tasks/BuildException.cs index 2f29afab4697..912b9917d308 100644 --- a/src/Controls/src/Build.Tasks/BuildException.cs +++ b/src/Controls/src/Build.Tasks/BuildException.cs @@ -55,6 +55,8 @@ class BuildExceptionCode //BP,BO public static BuildExceptionCode BPName = new BuildExceptionCode("XFC", 0020, nameof(BPName), ""); public static BuildExceptionCode BPMissingGetter = new BuildExceptionCode("XFC", 0021, nameof(BPMissingGetter), ""); + public static BuildExceptionCode BindingWithoutDataType = new BuildExceptionCode("XC", 0022, nameof(BindingWithoutDataType), ""); //warning + public static BuildExceptionCode BindingWithNullDataType = new BuildExceptionCode("XC", 0023, nameof(BindingWithNullDataType), ""); //warning //Bindings, conversions public static BuildExceptionCode Conversion = new BuildExceptionCode("XFC", 0040, nameof(Conversion), ""); @@ -90,7 +92,7 @@ class BuildExceptionCode public static BuildExceptionCode XKeyNotLiteral = new BuildExceptionCode("XFC", 0127, nameof(XKeyNotLiteral), ""); //CSC equivalents - public static BuildExceptionCode ObsoleteProperty = new BuildExceptionCode("XC", 0618, nameof(ObsoleteProperty), ""); + public static BuildExceptionCode ObsoleteProperty = new BuildExceptionCode("XC", 0618, nameof(ObsoleteProperty), ""); //warning public string Code { get; } public string CodePrefix { get; } diff --git a/src/Controls/src/Build.Tasks/ErrorMessages.Designer.cs b/src/Controls/src/Build.Tasks/ErrorMessages.Designer.cs index 4e1c2883b0e0..e3316e659b3f 100644 --- a/src/Controls/src/Build.Tasks/ErrorMessages.Designer.cs +++ b/src/Controls/src/Build.Tasks/ErrorMessages.Designer.cs @@ -385,12 +385,31 @@ internal static string XStaticSyntax { } /// - /// Gets the error message for the obsolete property. + /// Looks up a localized message for the obsolete property. /// internal static string ObsoleteProperty { get { return ResourceManager.GetString("ObsoleteProperty", resourceCulture); } } + + /// + /// Looks up a localized message for when a binding is used without specifying a data type. + /// + internal static string BindingWithoutDataType { + get { + return ResourceManager.GetString("BindingWithoutDataType", resourceCulture); + } + } + + /// + /// Looks up a localized message for binding with null data type. + /// + /// The error message. + internal static string BindingWithNullDataType { + get { + return ResourceManager.GetString("BindingWithNullDataType", resourceCulture); + } + } } } diff --git a/src/Controls/src/Build.Tasks/ErrorMessages.resx b/src/Controls/src/Build.Tasks/ErrorMessages.resx index 45f55ba6c971..92b100af60eb 100644 --- a/src/Controls/src/Build.Tasks/ErrorMessages.resx +++ b/src/Controls/src/Build.Tasks/ErrorMessages.resx @@ -135,6 +135,12 @@ Binding: Unsupported indexer index type: "{0}". 0 is indexer type name + + Binding could be compiled if x:DataType is specified. + + + Binding could be compiled if x:DataType is not explicitly null. + Binding: Property "{0}" not found on "{1}". 0 is property name, 1 is type name diff --git a/src/Controls/src/Build.Tasks/SetPropertiesVisitor.cs b/src/Controls/src/Build.Tasks/SetPropertiesVisitor.cs index c9da20239abf..28e69c311ab1 100644 --- a/src/Controls/src/Build.Tasks/SetPropertiesVisitor.cs +++ b/src/Controls/src/Build.Tasks/SetPropertiesVisitor.cs @@ -390,7 +390,8 @@ static IEnumerable CompileBindingPath(ElementNode node, ILContext c } if (dataTypeNode is null) { - context.LoggingHelper.LogWarningOrError(10101, context.XamlFilePath, node.LineNumber, node.LinePosition, 0, 0, $"Binding could be compiled if x:DataType is specified", null); + context.LoggingHelper.LogWarningOrError(BuildExceptionCode.BindingWithoutDataType, context.XamlFilePath, node.LineNumber, node.LinePosition, 0, 0, null); + yield break; } @@ -398,7 +399,7 @@ static IEnumerable CompileBindingPath(ElementNode node, ILContext c && enode.XmlType.NamespaceUri == XamlParser.X2009Uri && enode.XmlType.Name == nameof(Microsoft.Maui.Controls.Xaml.NullExtension)) { - context.LoggingHelper.LogWarningOrError(10102, context.XamlFilePath, node.LineNumber, node.LinePosition, 0, 0, $"Binding could be compiled if x:DataType is not explicitly null", null); + context.LoggingHelper.LogWarningOrError(BuildExceptionCode.BindingWithNullDataType, context.XamlFilePath, node.LineNumber, node.LinePosition, 0, 0, null); yield break; } diff --git a/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj b/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj index d958099c7f7c..e988431827da 100644 --- a/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj +++ b/src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj @@ -6,7 +6,7 @@ Microsoft.Maui.Controls.Xaml.UnitTests 4 $(NoWarn);0672;0219;0414;CS0436;CS0618 - $(WarningsNotAsErrors);XC0618;XC10101;XC10102 + $(WarningsNotAsErrors);XC0618;XC0022;XC0023 false true diff --git a/src/Essentials/samples/Directory.Build.props b/src/Essentials/samples/Directory.Build.props index 241a359433ad..5fadd0e2e51e 100644 --- a/src/Essentials/samples/Directory.Build.props +++ b/src/Essentials/samples/Directory.Build.props @@ -2,7 +2,7 @@ true true - $(WarningsNotAsErrors);XC10101;XC10102 + $(WarningsNotAsErrors);XC0022;XC0023 diff --git a/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj b/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj index ffdcea8bc68c..cdc562972f47 100644 --- a/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj +++ b/src/TestUtils/src/DeviceTests.Runners/TestUtils.DeviceTests.Runners.csproj @@ -7,7 +7,7 @@ Microsoft.Maui.TestUtils.DeviceTests.Runners $(NoWarn);CA1416 - $(WarningsNotAsErrors);XC10101;XC10102 + $(WarningsNotAsErrors);XC0022;XC0023