class Puppet::Pops::Evaluator::CallableSignature

CallableSignature

A CallableSignature describes how something callable expects to be called. Different implementation of this class are used for different types of callables.

@api public

Public Instance Methods

args_range() click to toggle source

Returns the range of required/optional argument values as an array of [min, max], where an infinite end is given as Float::INFINITY. To test against infinity, use the infinity? method.

@return [Array[Integer, Numeric]] - an Array with [min, max]

@api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
77 def args_range
78   type.size_range
79 end
argument_mismatch_handler?() click to toggle source

@return [Boolean] true if this signature represents an argument mismatch, false otherwise

@api private

    # File lib/puppet/pops/evaluator/callable_signature.rb
104 def argument_mismatch_handler?
105   false
106 end
block_name() click to toggle source

Returns the name of the block parameter if the callable accepts a block. @return [String] the name of the block parameter A derived class must implement this method. @api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
57 def block_name
58   raise NotImplementedError.new
59 end
block_range() click to toggle source

Returns a range indicating the optionality of a block. One of [0,0] (does not accept block), [0,1] (optional block), and [1,1] (block required)

@return [Array(Integer, Integer)] the range of the block parameter

   # File lib/puppet/pops/evaluator/callable_signature.rb
66 def block_range
67   type.block_range
68 end
block_type() click to toggle source

Returns the expected type for an optional block. The type may be nil, which means that the callable does not accept a block. If a type is returned it is one of Callable, Optional, Variant, or Optional[Variant[Callable, …]]. The Variant type is used when multiple signatures are acceptable. The Optional type is used when the block is optional.

@return [Puppet::Pops::Types::PAnyType, nil] the expected type of a block given as the last parameter in a call.

@api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
48 def block_type
49   type.block_type
50 end
infinity?(x) click to toggle source

Returns true if the given x is infinity @return [Boolean] true, if given value represents infinity

@api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
97 def infinity?(x)
98   x == Float::INFINITY
99 end
last_captures_rest?() click to toggle source

Returns true if the last parameter captures the rest of the arguments, with a possible cap, as indicated by the `args_range` method. A derived class must implement this method.

@return [Boolean] true if last parameter captures the rest of the given arguments (up to a possible cap) @api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
88 def last_captures_rest?
89   raise NotImplementedError.new
90 end
parameter_names() click to toggle source

Returns the names of the parameters as an array of strings. This does not include the name of an optional block parameter.

All implementations are not required to supply names for parameters. They may be used if present, to provide user feedback in errors etc. but they are not authoritative about the number of required arguments, optional arguments, etc.

A derived class must implement this method.

@return [Array<String>] - an array of names (that may be empty if names are unavailable)

@api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
23 def parameter_names
24   raise NotImplementedError.new
25 end
type() click to toggle source

Returns a PCallableType with the type information, required and optional count, and type information about an optional block.

A derived class must implement this method.

@return [Puppet::Pops::Types::PCallableType] @api public

   # File lib/puppet/pops/evaluator/callable_signature.rb
35 def type
36   raise NotImplementedError.new
37 end