Skip to content

Commit b227806

Browse files
committed
Fix array identifier validation bug
1 parent 3a74f8d commit b227806

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

Rubberduck.Refactorings/EncapsulateField/ConflictDetection/EncapsulateFieldConflictFinder.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,14 @@ public EncapsulateFieldConflictFinder(IDeclarationFinderProvider declarationFind
8585
&& rf.Context.TryGetAncestor<VBAParser.RedimVariableDeclarationContext>(out _)))
8686
{
8787
errorMessage = string.Format(RubberduckUI.EncapsulateField_ArrayHasExternalRedimFormat, field.IdentifierName);
88+
return (false, errorMessage);
89+
}
90+
91+
if (field is IEncapsulateFieldAsUDTMemberCandidate udtMember
92+
&& VBAIdentifierValidator.TryMatchInvalidIdentifierCriteria(udtMember.UserDefinedTypeMemberIdentifier, declarationType, out errorMessage, true))
93+
{
94+
return (false, errorMessage);
8895
}
89-
return (!string.IsNullOrEmpty(errorMessage), errorMessage);
9096
}
9197

9298
var hasConflictFreeValidIdentifiers =

RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldUseBackingField/EncapsulateArrayFieldTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,12 @@ End Sub
203203

204204
var field = model[fieldUT];
205205

206-
field.TryValidateEncapsulationAttributes(out var errorMessage);
206+
var result = field.TryValidateEncapsulationAttributes(out var errorMessage);
207207

208208
var expectedError = string.Format(RubberduckUI.EncapsulateField_ArrayHasExternalRedimFormat, field.IdentifierName);
209209

210210
StringAssert.AreEqualIgnoringCase(expectedError, errorMessage);
211+
Assert.IsFalse(result);
211212
}
212213

213214
protected override IRefactoring TestRefactoring(

RubberduckTests/Refactoring/EncapsulateField/EncapsulateFieldValidatorTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Rubberduck.Parsing.Symbols;
99
using Rubberduck.VBEditor.SafeComWrappers;
1010
using System.Linq;
11+
using Rubberduck.Resources;
1112

1213
namespace RubberduckTests.Refactoring.EncapsulateField
1314
{
@@ -502,7 +503,10 @@ public void UDTReservedMemberArrayIdentifier()
502503

503504
var model = Support.RetrieveUserModifiedModelPriorToRefactoring(vbe, fieldName, DeclarationType.Variable, presenterAction);
504505

505-
Assert.AreEqual(false, model[fieldName].TryValidateEncapsulationAttributes(out var message), message);
506+
Assert.AreEqual(false, model[fieldName].TryValidateEncapsulationAttributes(out var errorMessage), errorMessage);
507+
508+
var expectedMessage = string.Format(RubberduckUI.InvalidNameCriteria_IsReservedKeywordFormat, fieldName);
509+
Assert.AreEqual(expectedMessage, errorMessage);
506510
}
507511

508512
[Test]

0 commit comments

Comments
 (0)