-
Notifications
You must be signed in to change notification settings - Fork 118
Release Note 2.0
The latest version of Steep 2.0 is 2.0.0.
Some of the highlights in Steep 2.0 are:
- Inline RBS Declaration
-
steep servercommand -
steep querycommand -
steep check -ecommand
You can install it with $ gem install steep or using Bundler.
gem 'steep', require: falseSee the CHANGELOG for the details.
Note
Inline RBS declaration support is an experimental feature. Not all of the rbs-inline gem syntaxes are supported.
Steep 2.0 ships with experimental inline RBS declaration.
You can enable the feature by declaring that a set of source code to type check uses inline RBS declarations.
check "lib", inline: trueThen you can write the inline RBS declaration comments for type checking your source code.
See inline.md in RBS repo for the details of supported syntaxes.
Steep 2.0 introduces a daemon server that keeps the RBS environment loaded in memory for faster type checking.
$ steep server start # Starts the daemon
$ steep check # Type checks with the pre-loaded RBS environment using the daemon
We also provide steep server stop, steep server reload, and steep server status for daemon management operations.
Note
steep query is an experimental feature. We know it has rough edges and will be working to make it more useful.
On top of the steep server command, steep query provides features to navigate through your codebase.
# Pre-flight commands to update the index in the daemon
$ steep server start && steep check
# `query hover` command with source code location
$ steep query hover lib/steep/services/signature_service.rb:3:15
# `query definition` command with a name of type or method
$ steep query definition Steep::Services::SignatureService#apply_changes
Steep 2.0 provides steep query hover and steep query definition commands for the type of expression and definition locations.
steep check with -e option allows type checking Ruby expression from the command line.
$ steep check -e "1+true"
# Type checking expression:
(expression):1:0: [error] Cannot find compatible overloading of method `+` of type `::Integer`
│ Method types:
│ def +: (::Integer) -> ::Integer
│ | (::Float) -> ::Float
│ | (::Rational) -> ::Rational
│ | (::Complex) -> ::Complex
│
│ Diagnostic ID: Ruby::UnresolvedOverloading
│
└ 1+true
~~~~~~
Detected 1 problem from 1 expression
The command will help you quickly type check a Ruby expression without editing files.
Steep 2.0 adds the following new diagnostics.
-
Ruby::RedundantIgnoreComment Reports a
steep:ignorecomment is no longer necessary -- no type error is reported there. - Ruby::LibraryRBSError Reports library RBS files have error and type checking cannot be done.