soutaro / rbs-inline

Inline RBS type declaration
MIT License
165 stars 6 forks source link

Use `@rbs x: T` syntax for parameter types #63

Closed soutaro closed 2 weeks ago

soutaro commented 2 weeks ago

This PR introduces *x : T and **x: T syntax for splat and double splat parameters. &block: T syntax is also added.

## For * params

# @rbs *keys: Symbol        => (*Symbol keys) -> ...
# @rbs *: untyped           => (*untyped) -> ...  (param names are optional)

## For **params

# @rbs **attrs: untyped     => (**untyped attrs) -> ...
# @rbs **: untyped          => (**untyped) -> ...  (param names are optional)

## For blocks

# @rbs &block: (Integer) -> void    => { (Integer) -> void }
# @rbs &: ? (untyped) -> void       => ?{ (untyped) -> void }  (Optional block, param names are optional)

Related to #9.