Sha256: beb178b2cb58778432baad65a74f0ff5d9be59d8bd5fe5c51c7dbfc576e63253

Contents?: true

Size: 1.93 KB

Versions: 21

Compression:

Stored size: 1.93 KB

Contents

module RBS
  class Validator
    attr_reader env: Environment

    attr_reader resolver: TypeNameResolver

    attr_reader definition_builder: DefinitionBuilder

    attr_reader type_alias_dependency: TypeAliasDependency

    attr_reader type_alias_regularity: TypeAliasRegularity

    def initialize: (env: Environment, resolver: TypeNameResolver) -> void

    # Validates the presence of type names and type application arity match.
    #
    def validate_type: (Types::t, context: TypeNameResolver::context) -> void

    # Validates type alias definition:
    #
    # - There is no circular definition between aliases
    # - The type alias is _regular_
    # - The generics type parameter variance annotation is consistent with respect to their usage
    # - There is no circular dependencies between the generics type parameter bounds
    #
    # It yields the rhs type if block is given, so that you can validate the rhs type.
    #
    def validate_type_alias: (entry: Environment::SingleEntry[TypeName, AST::Declarations::Alias]) ?{ (Types::t rhs_type) -> void } -> void

    # Validates the type parameters in generic methods.
    #
    def validate_method_definition: (AST::Members::MethodDefinition, type_name: TypeName) -> void

    # Validates the type parameters if there is no circular dependencies between the bounds.
    #
    # ```rbs
    # [X, Y]                      # OK
    # [X, Y < _Foo[X]]            # OK
    # [X < _Foo[Y], Y]            # OK
    # [X < _Foo[Y], Y < _Foo[X]]  # Error
    # ```
    #
    def validate_type_params: (Array[AST::TypeParam] params, type_name: TypeName, ?method_name: Symbol?, location: Location[untyped, untyped]?) -> void

    private

    # Resolves relative type names to absolute type names in given context.
    # Yields the type when the type name resolution using `#resolver` fails.
    #
    def absolute_type: (Types::t, context: TypeNameResolver::context) { (Types::t) -> TypeName } -> Types::t
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
getargv-0.3.3-universal-darwin vendor/bundle/ruby/3.3.0/gems/rbs-2.8.4/sig/validator.rbs
rbs-2.8.4 sig/validator.rbs
rbs-2.8.3 sig/validator.rbs
rbs-3.0.0.dev.1 sig/validator.rbs
rbs-2.8.2 sig/validator.rbs
rbs-2.8.1 sig/validator.rbs
rbs-2.8.0 sig/validator.rbs
rbs-2.8.0.pre.1 sig/validator.rbs
rbs-2.7.0 sig/validator.rbs
rbs-2.7.0.pre.3 sig/validator.rbs
rbs-2.7.0.pre.2 sig/validator.rbs
rbs-2.7.0.pre.1 sig/validator.rbs
rbs-2.6.0 sig/validator.rbs
rbs-2.5.1 sig/validator.rbs
rbs-2.5.0 sig/validator.rbs
rbs-2.4.0 sig/validator.rbs
rbs-2.3.2 sig/validator.rbs
rbs-2.3.1 sig/validator.rbs
rbs-2.3.0 sig/validator.rbs
rbs-2.2.2 sig/validator.rbs