1
1
using Rubberduck . Parsing . Symbols ;
2
- using Rubberduck . Parsing . VBA ;
3
- using Rubberduck . Refactorings . Common ;
4
- using Rubberduck . Refactorings . EncapsulateField . Extensions ;
5
- using Rubberduck . Resources ;
6
- using Rubberduck . VBEditor ;
7
- using System ;
8
2
using System . Collections . Generic ;
9
- using System . Linq ;
10
- using System . Text ;
11
- using System . Threading . Tasks ;
12
3
13
4
namespace Rubberduck . Refactorings . EncapsulateField
14
5
{
@@ -20,95 +11,20 @@ public enum NameValidators
20
11
UserDefinedTypeMemberArray
21
12
}
22
13
23
- public interface IEncapsulateFieldValidationsProvider
14
+ public class EncapsulateFieldValidationsProvider
24
15
{
25
- IEncapsulateFieldConflictFinder ConflictDetector ( EncapsulateFieldStrategy strategy , IDeclarationFinderProvider declarationFinderProvider ) ;
26
- }
27
-
28
- public class EncapsulateFieldValidationsProvider : IEncapsulateFieldValidationsProvider
29
- {
30
- private static Dictionary < NameValidators , IValidateVBAIdentifiers > _nameOnlyValidators = new Dictionary < NameValidators , IValidateVBAIdentifiers > ( )
16
+ private static readonly Dictionary < NameValidators , IValidateVBAIdentifiers > _nameOnlyValidators = new Dictionary < NameValidators , IValidateVBAIdentifiers > ( )
31
17
{
32
18
[ NameValidators . Default ] = new IdentifierOnlyValidator ( DeclarationType . Variable , false ) ,
33
19
[ NameValidators . UserDefinedType ] = new IdentifierOnlyValidator ( DeclarationType . UserDefinedType , false ) ,
34
20
[ NameValidators . UserDefinedTypeMember ] = new IdentifierOnlyValidator ( DeclarationType . UserDefinedTypeMember , false ) ,
35
21
[ NameValidators . UserDefinedTypeMemberArray ] = new IdentifierOnlyValidator ( DeclarationType . UserDefinedTypeMember , true ) ,
36
22
} ;
37
23
38
- private static DeclarationType [ ] _udtTypeIdentifierNonConflictTypes = new DeclarationType [ ]
39
- {
40
- DeclarationType . Project ,
41
- DeclarationType . Module ,
42
- DeclarationType . Property ,
43
- DeclarationType . Function ,
44
- DeclarationType . Procedure ,
45
- DeclarationType . Variable ,
46
- DeclarationType . Constant ,
47
- DeclarationType . UserDefinedTypeMember ,
48
- DeclarationType . EnumerationMember ,
49
- DeclarationType . Parameter
50
- } ;
51
-
52
-
53
- private List < IEncapsulateFieldCandidate > _candidates ;
54
- private List < IUserDefinedTypeMemberCandidate > _udtMemberCandidates ;
55
- private List < IObjectStateUDT > _objectStateUDTs ;
56
-
57
- public EncapsulateFieldValidationsProvider ( IEnumerable < IEncapsulateFieldCandidate > candidates , IEnumerable < IObjectStateUDT > objectStateUDTCandidates )
58
- {
59
- _udtMemberCandidates = new List < IUserDefinedTypeMemberCandidate > ( ) ;
60
- _objectStateUDTs = objectStateUDTCandidates . ToList ( ) ;
61
- _candidates = candidates . ToList ( ) ;
62
- var udtCandidates = candidates . Where ( c => c is IUserDefinedTypeCandidate ) . Cast < IUserDefinedTypeCandidate > ( ) ;
63
-
64
- foreach ( var udtCandidate in candidates . Where ( c => c is IUserDefinedTypeCandidate ) . Cast < IUserDefinedTypeCandidate > ( ) )
65
- {
66
- LoadUDTMemberCandidates ( udtCandidate ) ;
67
- }
68
- }
69
-
70
- private void LoadUDTMemberCandidates ( IUserDefinedTypeCandidate udtCandidate )
71
- {
72
- foreach ( var member in udtCandidate . Members )
73
- {
74
- if ( member . WrappedCandidate is IUserDefinedTypeCandidate udt )
75
- {
76
- LoadUDTMemberCandidates ( udt ) ;
77
- }
78
- _udtMemberCandidates . Add ( member ) ;
79
- }
80
- }
24
+ public EncapsulateFieldValidationsProvider ( )
25
+ { }
81
26
82
27
public static IValidateVBAIdentifiers NameOnlyValidator ( NameValidators validatorType )
83
28
=> _nameOnlyValidators [ validatorType ] ;
84
-
85
- public static IObjectStateUDT AssignNoConflictIdentifiers ( IObjectStateUDT stateUDT , IDeclarationFinderProvider declarationFinderProvider )
86
- {
87
- var members = declarationFinderProvider . DeclarationFinder . Members ( stateUDT . QualifiedModuleName ) ;
88
- var guard = 0 ;
89
- while ( guard ++ < 10 && members . Any ( m => m . IdentifierName . IsEquivalentVBAIdentifierTo ( stateUDT . FieldIdentifier ) ) )
90
- {
91
- stateUDT . FieldIdentifier = stateUDT . FieldIdentifier . IncrementEncapsulationIdentifier ( ) ;
92
- }
93
-
94
- members = declarationFinderProvider . DeclarationFinder . Members ( stateUDT . QualifiedModuleName )
95
- . Where ( m => ! _udtTypeIdentifierNonConflictTypes . Any ( nct => m . DeclarationType . HasFlag ( nct ) ) ) ;
96
-
97
- guard = 0 ;
98
- while ( guard ++ < 10 && members . Any ( m => m . IdentifierName . IsEquivalentVBAIdentifierTo ( stateUDT . TypeIdentifier ) ) )
99
- {
100
- stateUDT . TypeIdentifier = stateUDT . TypeIdentifier . IncrementEncapsulationIdentifier ( ) ;
101
- }
102
- return stateUDT ;
103
- }
104
-
105
- public IEncapsulateFieldConflictFinder ConflictDetector ( EncapsulateFieldStrategy strategy , IDeclarationFinderProvider declarationFinderProvider )
106
- {
107
- if ( strategy == EncapsulateFieldStrategy . UseBackingFields )
108
- {
109
- return new UseBackingFieldsStrategyConflictFinder ( declarationFinderProvider , _candidates , _udtMemberCandidates ) ;
110
- }
111
- return new ConvertFieldsToUDTMembersStrategyConflictFinder ( declarationFinderProvider , _candidates , _udtMemberCandidates , _objectStateUDTs ) ;
112
- }
113
29
}
114
30
}
0 commit comments