module RBS

def logger

def logger
  @logger ||= Logger.new(logger_output || STDERR, level: logger_level || Logger::WARN, progname: "rbs")
end

def logger_level=(level)

def logger_level=(level)
  @logger_level = level
  @logger = nil
end

def logger_output=(val)

def logger_output=(val)
  @logger = nil
  @logger_output = val
end

def print_warning()

def print_warning()
  @warnings ||= Set[]
  message = yield()
  unless @warnings.include?(message)
    @warnings << message
    logger.warn { message }
  end
end