diff --git a/Rubberduck.Refactorings/EncapsulateField/ConflictDetection/EncapsulateFieldConflictFinder.cs b/Rubberduck.Refactorings/EncapsulateField/ConflictDetection/EncapsulateFieldConflictFinder.cs index cf1126ee17..00eedd424f 100644 --- a/Rubberduck.Refactorings/EncapsulateField/ConflictDetection/EncapsulateFieldConflictFinder.cs +++ b/Rubberduck.Refactorings/EncapsulateField/ConflictDetection/EncapsulateFieldConflictFinder.cs @@ -85,8 +85,14 @@ public EncapsulateFieldConflictFinder(IDeclarationFinderProvider declarationFind && rf.Context.TryGetAncestor(out _))) { errorMessage = string.Format(RubberduckUI.EncapsulateField_ArrayHasExternalRedimFormat, field.IdentifierName); + return (false, errorMessage); + } + + if (field is IEncapsulateFieldAsUDTMemberCandidate udtMember + && VBAIdentifierValidator.TryMatchInvalidIdentifierCriteria(udtMember.UserDefinedTypeMemberIdentifier, declarationType, out errorMessage, true)) + { + return (false, errorMessage); } - return (!string.IsNullOrEmpty(errorMessage), errorMessage); } var hasConflictFreeValidIdentifiers = diff --git a/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateArrayFieldTests.cs b/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateArrayFieldTests.cs index 424dcf7d54..78d8f9b0f8 100644 --- a/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateArrayFieldTests.cs +++ b/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateArrayFieldTests.cs @@ -203,11 +203,12 @@ End Sub var field = model[fieldUT]; - field.TryValidateEncapsulationAttributes(out var errorMessage); + var result = field.TryValidateEncapsulationAttributes(out var errorMessage); var expectedError = string.Format(RubberduckUI.EncapsulateField_ArrayHasExternalRedimFormat, field.IdentifierName); StringAssert.AreEqualIgnoringCase(expectedError, errorMessage); + Assert.IsFalse(result); } protected override IRefactoring TestRefactoring( diff --git a/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldValidatorTests.cs b/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldValidatorTests.cs index f0ed03be4b..7a9de08672 100644 --- a/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldValidatorTests.cs +++ b/RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldValidatorTests.cs @@ -8,6 +8,7 @@ using Rubberduck.Parsing.Symbols; using Rubberduck.VBEditor.SafeComWrappers; using System.Linq; +using Rubberduck.Resources; namespace RubberduckTests.Refactoring.EncapsulateField { @@ -502,7 +503,10 @@ public void UDTReservedMemberArrayIdentifier() var model = Support.RetrieveUserModifiedModelPriorToRefactoring(vbe, fieldName, DeclarationType.Variable, presenterAction); - Assert.AreEqual(false, model[fieldName].TryValidateEncapsulationAttributes(out var message), message); + Assert.AreEqual(false, model[fieldName].TryValidateEncapsulationAttributes(out var errorMessage), errorMessage); + + var expectedMessage = string.Format(RubberduckUI.InvalidNameCriteria_IsReservedKeywordFormat, fieldName); + Assert.AreEqual(expectedMessage, errorMessage); } [Test]