# typed: strict # frozen_string_literal: true module RubyIndexer # Represents the visibility scope in a Ruby namespace. This keeps track of whether methods are in a public, private or # protected section, and whether they are module functions. class VisibilityScope extend T::Sig class << self extend T::Sig sig { returns(T.attached_class) } def module_function_scope new(module_func: true, visibility: Entry::Visibility::PRIVATE) end sig { returns(T.attached_class) } def public_scope new end end sig { returns(Entry::Visibility) } attr_reader :visibility sig { returns(T::Boolean) } attr_reader :module_func sig { params(visibility: Entry::Visibility, module_func: T::Boolean).void } def initialize(visibility: Entry::Visibility::PUBLIC, module_func: false) @visibility = visibility @module_func = module_func end end end