Class: Yoda::Typing::Types::Function

Inherits:
Base
  • Object
show all
Defined in:
lib/yoda/typing/types/function.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#reference?

Constructor Details

#initialize(context: nil, return_type:, parameters: [], rest_parameter: nil, post_parameters: [], keyword_parameters: [], keyword_rest_parameter: nil, block_parameter: nil) ⇒ Function

Returns a new instance of Function.

Parameters:

  • context (Base, nil) (defaults to: nil)
  • parameters (Array<Base>) (defaults to: [])
  • rest_parameter (Base, nil) (defaults to: nil)
  • post_parameters (Array<Base>) (defaults to: [])
  • keyword_parameters (Array<(String, Base)>) (defaults to: [])
  • keyword_rest_parameter (Base, nil) (defaults to: nil)
  • block_parameter (Base, nil) (defaults to: nil)
  • return_type (Base)


37
38
39
40
41
42
43
44
45
46
# File 'lib/yoda/typing/types/function.rb', line 37

def initialize(context: nil, return_type:, parameters: [], rest_parameter: nil, post_parameters: [], keyword_parameters: [], keyword_rest_parameter: nil, block_parameter: nil)
  @context = context
  @parameters = parameters
  @keyword_parameters = keyword_parameters
  @rest_parameter = rest_parameter
  @post_parameters = post_parameters
  @keyword_rest_parameter = keyword_rest_parameter
  @block_parameter = block_parameter
  @return_type = return_type
end

Instance Attribute Details

#block_parameter(String, Base)? (readonly)

Returns:

  • ((String, Base), nil)


24
25
26
# File 'lib/yoda/typing/types/function.rb', line 24

def block_parameter
  @block_parameter
end

#contextBase? (readonly)

Returns:



6
7
8
# File 'lib/yoda/typing/types/function.rb', line 6

def context
  @context
end

#keyword_parametersArray<(String, Base)> (readonly)

Returns:

  • (Array<(String, Base)>)


18
19
20
# File 'lib/yoda/typing/types/function.rb', line 18

def keyword_parameters
  @keyword_parameters
end

#keyword_rest_parameterBase (readonly)

Returns:



21
22
23
# File 'lib/yoda/typing/types/function.rb', line 21

def keyword_rest_parameter
  @keyword_rest_parameter
end

#parametersArray<Base> (readonly)

Returns:



9
10
11
# File 'lib/yoda/typing/types/function.rb', line 9

def parameters
  @parameters
end

#post_parametersArray<Base> (readonly)

Returns:



15
16
17
# File 'lib/yoda/typing/types/function.rb', line 15

def post_parameters
  @post_parameters
end

#rest_parameterArray<Base> (readonly)

Returns:



12
13
14
# File 'lib/yoda/typing/types/function.rb', line 12

def rest_parameter
  @rest_parameter
end

#return_typeBase (readonly)

Returns:



27
28
29
# File 'lib/yoda/typing/types/function.rb', line 27

def return_type
  @return_type
end

Instance Method Details

#to_expressionObject



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/yoda/typing/types/function.rb', line 48

def to_expression
  Model::TypeExpressions::FunctionType.new(
    context: context&.to_expression,
    return_type: return_type.to_expression,
    parameters: parameters.map(&:to_expression),
    rest_parameter: rest_parameter&.to_expression,
    post_parameters: post_parameters.map(&:to_expression),
    keyword_parameters: keyword_parameters.map { |keyword, type| [keyword, type.to_expression] },
    keyword_rest_parameter: keyword_rest_parameter&.to_expression,
    block_parameter: block_parameter&.to_expression,
  )
end

#to_type_stringObject



61
62
63
64
# File 'lib/yoda/typing/types/function.rb', line 61

def to_type_string
  inspect
  # "#{context.to_type_string}()"
end