public EncapsulateFieldCandidate(Declaration declaration, IValidateVBAIdentifiers identifierValidator) { _target = declaration; NameValidator = identifierValidator; _rhsParameterIdentifierName = Resources.Refactorings.Refactorings.CodeBuilder_DefaultPropertyRHSParam; _fieldAndProperty = new EncapsulationIdentifiers(declaration.IdentifierName, identifierValidator); IdentifierName = declaration.IdentifierName; PropertyAsTypeName = declaration.AsTypeName; _qmn = declaration.QualifiedModuleName; CanBeReadWrite = true; _uniqueID = $"{_qmn.Name}.{declaration.IdentifierName}"; _hashCode = _uniqueID.GetHashCode(); ImplementLet = true; ImplementSet = false; if (_target.IsEnumField() && _target.AsTypeDeclaration.HasPrivateAccessibility()) { //5.3.1 The declared type of a function declaration //may not be a private enum name. PropertyAsTypeName = Tokens.Long; } else if (_target.AsTypeName.Equals(Tokens.Variant) && !_target.IsArray) { ImplementSet = true; } else if (Declaration.IsObject) { ImplementLet = false; ImplementSet = true; } }
public EncapsulateFieldCandidate(Declaration declaration) { Declaration = declaration; AsTypeName = declaration.AsTypeName; _fieldAndProperty = new EncapsulationIdentifiers(declaration.IdentifierName); BackingIdentifierMutator = (value) => _fieldAndProperty.Field = value; IdentifierName = declaration.IdentifierName; TargetID = IdentifierName; QualifiedModuleName = declaration.QualifiedModuleName; //5.3.1 The declared type of a function declaration may not be a private enum. PropertyAsTypeName = declaration.IsEnumField() && declaration.AsTypeDeclaration.HasPrivateAccessibility() ? Tokens.Long : declaration.AsTypeName; CanBeReadWrite = !Declaration.IsArray; _hashCode = $"{QualifiedModuleName.Name}.{declaration.IdentifierName}".GetHashCode(); }