private bool IsExcludedGeneratedCode(ImplicitNullabilityConfiguration configuration, ITypeMember typeMember) { if (configuration.GeneratedCode == GeneratedCodeOptions.Exclude) return _generatedCodeProvider.IsGeneratedOrSynthetic(typeMember); return false; }
public void ConvertToAssemblyMetadataAttributeCode_WithAllOptionsEnabled() { var configuration = new ImplicitNullabilityConfiguration(true, true, true); var result = AssemblyAttributeConfigurationTranslator.GenerateAttributeCode(configuration); Assert.That(result, Is.EqualTo("[assembly: System.Reflection.AssemblyMetadataAttribute(\"ImplicitNullability.AppliesTo\", " + "\"InputParameters, RefParameters, OutParametersAndResult\")]")); }
private void CopyAssemblyAttributeCode() { var currentImplicitNullabilitySettings = OptionsSettingsSmartContext.GetKey <ImplicitNullabilitySettings>(_settingsOptimization); var assemblyMetadataCode = AssemblyAttributeConfigurationTranslator.GenerateAttributeCode( ImplicitNullabilityConfiguration.CreateFromSettings(currentImplicitNullabilitySettings)); _clipboard.SetText(assemblyMetadataCode); MessageBox.ShowInfo("The following code has been copied to your clipboard:\n\n\n" + assemblyMetadataCode); }
public void GenerateAttributeCode_WithFieldOrPropertyOptions_ButAppliesToFieldsOrPropertiesDisabled() { var configuration = new ImplicitNullabilityConfiguration( ImplicitNullabilityAppliesTo.InputParameters, AllFieldOptions, AllPropertyOptions, GeneratedCodeOptions.Exclude); var result = AssemblyAttributeConfigurationTranslator.GenerateAttributeCode(configuration); Assert.That(result, Is.EqualTo( ExpectedAssemblyMetadataAttribute("ImplicitNullability.AppliesTo", "InputParameters") + NewLine + ExpectedAssemblyMetadataAttribute("ImplicitNullability.GeneratedCode", "Exclude")), "'options'-attribute should not be rendered"); }
public void GenerateAttributeCode_WithIncludeGeneratedCode() { var configuration = new ImplicitNullabilityConfiguration( ImplicitNullabilityAppliesTo.InputParameters, ImplicitNullabilityFieldOptions.NoOption, ImplicitNullabilityPropertyOptions.NoOption, GeneratedCodeOptions.Include); var result = AssemblyAttributeConfigurationTranslator.GenerateAttributeCode(configuration); Assert.That(result, Is.EqualTo( ExpectedAssemblyMetadataAttribute("ImplicitNullability.AppliesTo", "InputParameters") + NewLine + ExpectedAssemblyMetadataAttribute("ImplicitNullability.GeneratedCode", "Include"))); }
private static void AssertImplicitNullabilityConfiguration( ImplicitNullabilityConfiguration actual, bool expectedEnableInputParameters, bool expectedEnableRefParameters, bool expectedEnableOutParametersAndResult) { Assert.That(new { actual.EnableInputParameters, actual.EnableRefParameters, actual.EnableOutParametersAndResult }, Is.EqualTo(new { EnableInputParameters = expectedEnableInputParameters, EnableRefParameters = expectedEnableRefParameters, EnableOutParametersAndResult = expectedEnableOutParametersAndResult })); }
public void GenerateAttributeCode_WithAllOptionsEnabled() { var configuration = new ImplicitNullabilityConfiguration( ImplicitNullabilityAppliesTo.InputParameters | ImplicitNullabilityAppliesTo.RefParameters | ImplicitNullabilityAppliesTo.OutParametersAndResult | ImplicitNullabilityAppliesTo.Fields | ImplicitNullabilityAppliesTo.Properties, AllFieldOptions, AllPropertyOptions, GeneratedCodeOptions.Exclude); var result = AssemblyAttributeConfigurationTranslator.GenerateAttributeCode(configuration); Assert.That(result, Is.EqualTo( ExpectedAssemblyMetadataAttribute( "ImplicitNullability.AppliesTo", "InputParameters, RefParameters, OutParametersAndResult, Fields, Properties") + NewLine + ExpectedAssemblyMetadataAttribute("ImplicitNullability.Fields", "RestrictToReadonly, RestrictToReferenceTypes") + NewLine + ExpectedAssemblyMetadataAttribute("ImplicitNullability.Properties", "RestrictToGetterOnly, RestrictToReferenceTypes") + NewLine + ExpectedAssemblyMetadataAttribute("ImplicitNullability.GeneratedCode", "Exclude"))); }
public static string GenerateAttributeCode(ImplicitNullabilityConfiguration configuration) { var optionTexts = new List <string>(); if (configuration.EnableInputParameters) { optionTexts.Add(InputParametersAssemblyAttributeOption); } if (configuration.EnableRefParameters) { optionTexts.Add(RefParametersAssemblyAttributeOption); } if (configuration.EnableOutParametersAndResult) { optionTexts.Add(OutParametersAndResultAssemblyAttributeOption); } return($"[assembly: {AssemblyMetadataAttributeTypeName.FullName}(" + $"\"{AppliesToAttributeKey}\", " + $"\"{string.Join(", ", optionTexts)}\")]"); }
private static bool IsPropertyMatchingConfigurationOptions(IProperty property, ImplicitNullabilityConfiguration configuration) { return // Note that `IsWritable` also searches for "polymorphic setters" (see `PartiallyOveriddenProperties` test data) ((!configuration.HasPropertyOption(ImplicitNullabilityPropertyOptions.RestrictToGetterOnly) || !property.IsWritable) && (!configuration.HasPropertyOption(ImplicitNullabilityPropertyOptions.RestrictToReferenceTypes) || property.IsMemberOfReferenceType())); }
private static bool IsFieldMatchingConfigurationOptions(IField field, ImplicitNullabilityConfiguration configuration) { return ((!configuration.HasFieldOption(ImplicitNullabilityFieldOptions.RestrictToReadonly) || field.IsReadonly) && (!configuration.HasFieldOption(ImplicitNullabilityFieldOptions.RestrictToReferenceTypes) || field.IsMemberOfReferenceType())); }