class Google::Cloud::Config

def validate_value! key, validator, value

def validate_value! key, validator, value
  value = value.call if Config::DeferredValue === value
  case validator
  when ::Proc
    unless validator.call value
      warn! "Invalid value #{value.inspect} for key #{key.inspect}." \
            " Setting anyway."
    end
  when Config
    if value != validator
      warn! "Key #{key.inspect} refers to a subconfig and shouldn't" \
            " be changed. Setting anyway."
    end
  else
    warn! "Key #{key.inspect} has not been added. Setting anyway."
  end
end