- Make
implicitly-returns-nil
opt-in (#1396)
- Report diagnostic on unknown record key (#1385)
- Report annotation syntax error (#1384)
- emit UnreachableBranch to the "void" condition (#1356)
- Support &method(:name) call for block_pass (#1276)
- Emit SingletonTypeMismatch when class/module mismatch (#1274)
- refactor: Use Array#fetch instead of Array#[] to resolve type errors (#1287)
- refactor: Use Hash#fetch instead of Hash#[] to resolve type errors (#1286)
- Expand
array(splat(expr
node (#1347) - Add
UnannotatedEmptyCollection
diagnostic (#1338) - Update type checking strategy (#1308)
- Fix untyped hash typing (#1299)
- Support
implicitly-returns-nil
(#1258) - Fix record shape (#1265)
- Remove unused rules (#1238)
- Introduces a new
target.*
syntax for everything in the target (#1387) - Symbolize target/group names (#1364)
- Update Steepfile template (#1355)
- Delete
target
from--validate
option (#1346) - Install rbs collection automatically (#1345)
- Add link to diagnostic manual (#1388)
- Stop accumulating diagnostics (#1367)
- Send server version to client (#1341)
- Add custom methods to trigger type check manually (#1340)
- Type check thread helpers (#1335)
- Use
URI::RFC2396_Parser
(#1329) - Handle file deletion notification (#1300)
- Refactor communication between master and type check worker (#1285)
- Skip sending response to
$/steep/typecheck
request fromsteep langserver
(#1267)
- Use rbs-3.7 (#1383)
- Move diagnostic docs (#1370)
- Add anchor (#1359)
- Update example to not use
^
as a hash function (#1360) - doc: Add diagnostics for Ruby page (#1249)
- Update filename example in initial Steepfile (#1230)
- docs: Add document for steep:ignore comment (#1353)
- docs: Add document for type assertion and type application (#1235)
- Print test names in CI for investigation (#1354)
- Fix typo (#1352)
- Set up type checking tests (#1339)
- Fix typo (#1248)
- Ignore
didChangeWatchedFiles notification
for open files (#1290)
- Support non symbol record keys (#1227)
- Fix some subtyping problems (#1221)
- Support optional keys in record types (#1223)
- Revert implicit generic upper bound (#1220)
- Improve generics (#1216)
- Delete meta data from
MethodType
andTypes::*
(#1201) - Delete
ContextArray
(#1199) - Fix shape calculation error (#1197)
- Skip
#:
syntax inData.define
andStruct.new
(#1196) - Support literals for Rational and Complex (#1178)
- Ignore type assertions on arguments/receiver on
def
/defs
(#1179) - Ignore
#:
annotation onattr_*
calls (#1176)
- Make type checking a LSP request, not a LSP notification (#1218)
- No
timeout: nil
(#1217) - Print
loading project
message via LSP (#1213) - Load files in main process (#1206)
- Fix subtyping issues (#1165)
- Implement untyped function params (#1101)
- Fix method call type narrowing with
||
operator (#1085) - Refactor
Interface::Builder
(#1081) - Fix UnexpectedError with unnamed arguments (#1041)
- Abort if subtyping fails to (possible) infinite loop (#1055)
- Ignore diagnostics by
steep:ignore
comment (#1034) - Make defined? accept any type (#1031)
- Refactor case-when syntax (#999)
- Update
Steep::Subtyping::Check#check
types (#972)
- Improve wildcard handling in pattern matching for directory paths (#1121)
- Fix issue with wildcard expansion in FileLoader (#1113)
- Avoid unnecessary calling
RBS::Location#to_s
on debug log (#1092) - Better recovery from collection problems (#987)
- Handle absolute path (#975)
- Default to check the entire current directory when there is no
Steepfile
(#968)
- Fix variable untyped hover issue in rescue clause (#1147)
- Handle
$/file/reset
request in interaction worker (#1122) - Skip pending UI jobs (#1035)
- Fix no method error (#1040)
- Implement completion for comments (#1039)
- Fix signature help (#1038)
- Revise rake tasks (#1156)
- Update
steep.gemspec
(#1155) - Add
Steep::RakeTask
(#995) - Stop to distribute sig dir (#1144)
- Update gem-rbs-collection.md (#1127)
- Add shape docs (#1089)
- Ignore smoke tests when packaging gem (#962)
- Fix setup for Ruby 3.3 (#1000)
Nothing changed from 1.6.0.pre.4.
- Fix LSP text synchronization problems (#954)
- Match with
**
in pattern (#949)
- Test if a parameter is
_
(#946) - Let
[]=
call have correct type (#945) - Support type narrowing by
Module#<
(#877) - Fewer
UnresolvedOverloading
(#941) - Fix ArgumentTypeMismatch for PublishDiagnosticsParams (#895)
- Add types for LSP::Constant::MessageType (#894)
nil
is not aNilClass
(#920)- Fix unexpected error when DifferentMethodParameterKind (#917)
- Fix space in file path crash (#944)
- refactor: Rename driver objects to command (#893)
- Run with
--jobs=2
automatically on CI (#924) - Fix type alias validation (#922)
- Let goto definition work from
UnresolvedOverloading
error calls (#943) - Let label be whole method type in SignatureHelp (#942)
- Set up file watcher (#936)
- Reset file content on
didOpen
notification (#935) - Start type check on change (#934)
- Better completion with module alias and
use
directives (#923)
- Fix type checking parenthesized conditional nodes (#896)
- Avoid breaking the original source code through
CompletionProvider
(#883)
- Support unreachable branch detection with
elsif
(#879) - Give an optional type hint to lhs of
||
(#874)
- Fix for the case
untyped
is the proc type hint (#868) - Type case with type variable (#869)
- Filx
nil?
unreachability detection (#867)
- Update
#configure_code_diagnostics
type (#873) - Update diagnostics templates (#871)
- Removed "set" from "libray" in init.rb and README (#870)
- Use RBS::Buffer method to calculate position (#872)
- Report RBS validation errors in Ruby code (#859)
- Fix proc type assignment (#858)
- Report
UnexpectedKeywordArgument
even if no keyword param is accepted (#856) - Unfold type alias on unwrap optional (#855)
- Keyword completion in block call (#865)
- Indicate the current or next argument on signature help (#850)
- Support completion for keyword arguments (#851)
- Let hover show the type of method call node (#864)
- Fix UnknownNodeError in SignatureHelp (#863)
- hover: Fix NoMethodError on generating hover for not supported files (#853)
- Fix unreachability test (#842)
- Make type of
case
nodeuntyped
rather thannil
(#841) - Fix
#partition_union
(#840) - Fix type-case (#839)
- Resolve type names from TypeAssertion and TypeApplication (#836)
- Replace ElseOnExhaustiveCase by UnreachableBranch from steep/diagnostic/ruby.rb (#833)
- Reuse the latest result to keep SignatureHelp opened while typing (#835)
- Fix signature help is not shown for the optional chaining (&.) (#832)
- Refactor occurrence typing (#831)
- Better flow-sensitive typing (#825)
- Fix interface type inference (#816)
- Make
nth_ref
and:back_ref
nodes optional (#815) - Add new diagnostic for setter methods (#809)
- Better hint type handling given to lambda (#807)
- Fix type assertion parsing error (#805)
- Distribute
untyped
to block params (#798) - Should escape underscore for method name (#770)
- Give a special typing rule to
#lambda
calls (#811) - Support early return code using "and return" (#828)
- Validate type applications in ancestors (#810)
- Convert block-pass-arguments with
#to_proc
(#806)
- Ensure at least one type check worker runs (#814)
- Improve worker process handling (#801)
- Add
Steep::Diagnostic::Ruby.silent
template to suppress all warnings (#800) - Suppress
UnsupportedSyntax
warnings by default (#799) - Infer method return types using hint (#789)
- Handling splat nodes in
super
(#788) - Add handling splat node in tuple type checking (#786)
- Let
return
have multiple values (#785) - Remove trailing extra space from Steepfile generated by steep init (#774)
- Completion in annotations (#818)
- Implement go to type definition (#784)
- completion: Support completion for optional chaining (&.) (#827)
- signature helps are not shown if the target code has comments (#829)
- Typecheck sources (#820)
- Relax concurrent-ruby requirement (#812)
- Cast from union for faster type checking (#830)
- Return immediately if blocks are incompatible (#765)
- Fix location of no method error (#763)
- Support
gvasgn
in assignment variants (#762) - Set up break contexts correctly for untyped blocks (#752)
- Fix flow sensitive on
case
without condition (#751) - Support
...
syntax (#750) - Fix constant declaration type checking (#738)
- Fix errors caused by non-ascii variable names (#703)
- Update RBS to 3.0 (#716, #754)
- Remove pathname from runtime_dependency (#740)
- Require rbs-2.8.x (#732)
- Type check types (#676)
- Add missing
#level
method (#671) - Cache
constant_resolver
among files in a target(#673) - Early return from type checking overloads (#674)
- Spawn worker processes if
--steep-command
is specified (#672)
- Fork when available for quicker startup (#664)
- Fix type narrowing on case-when (#662)
- Refactor
--jobs
and--steep-command
option handling (#654)
- Support type checking block/proc self type binding (#637)
- Type check multiple assignment on block parameters (#641, #643)
- Make more multiple assignments type check (#630)
- Refactor shape calculation (#635, #649)
- Report type errors if argument mismatch on yield (#640)
- Relax caching requirements to cache more results (#651)
- Add
steep checkfile
command (#650)
- Add docs for sublime text integration (#633)
- Ignore special local variables --
_
,__any__
and__skip__
(#617, #627) - Fix type narrowing on assignments (#622)
- Fix
#each_child_node
(#612)
- Type refinement with method calls (#590)
- Better multiple assignment type checking (#605)
- Fix generics issues around proc types (#609, #611)
- Fix type application validation (#607; backport from 1.0.2)
- Add class variable validation (#593)
- Fix type application validation (#607)
- Appends "done!" to the watch output when the type check is complete (#596)
- Fix hover on multiple assignment (#606)
This is another patch release for Steep 1.0.
- Fix type application validation (#607)
This is the first patch release for Steep 1.0.
However, this release includes one non-trivial type system update, #570, which adds a special typing rule for Hash#compact
like Array#compact
.
The change will make type checking more permissive and precise, so no new error won't be reported with the fix.
- Support shorthand hash for Ruby 3.1 (#567)
- Fix super and zsuper with block (#568)
- Apply logic-type evaluation only if the node is
:send
(#569) - Add support for
Hash#compact
(#570) - Use given
const_env
when making a newModuleContext
(#575) - Graceful, hopefully, error handling with undefined outer module (#576)
- Type check anonymous block forwarding (#577)
- Incompatible default value is a type error (#578)
- Load
ChildrenLevel
helper inAST::Types::Proc
(#584) - Type check
gvar
andgvasgn
in methods(#579) - Avoid
UnexpectedError
when assigning untyped singleton class (#586)
- Improve Windows support (#561, #573)
- Test if
.ruby-version
exists beforervm do
in binstub (#558) - Fix typo (#564)
- Ignore
untitled:
URIs in LSP (#580)
- Add special typing rule for
Array#compact
(#555) - Add custom method type of
#fetch
on tuples and records (#554) - Better
masgn
(#553) - Fix method parameter type checking (#552)
- Handle class declaration with non-const super class (#546)
- Remove
#to_a
error message (#545) - Add
#filter_map
shim (#544)
- Better union type inference (it type checks
Array#filter_map
now!) (#531) - Improve method call hover message (#537, #538)
- Make
NilClass#!
a special method to improve flow-sensitive typing (#539) - Fix
steep binstub
(#540, #541)
- Add
steep binstub
command (#527) - Let hover and completion work in heredoc (#528)
- Better constant typing (#529)
- Completion for constant (#524)
- Better hover/completion message (#525)
- Show available commands when using
--help
(#523)
- CLI option for override steep command at spawn worker (#511)
- LSP related improvements for Sublime LSP (#513)
- Support Windows environment (#514)
- Let
&:foo
proc work with methods with optional parameters (#516) - Fix unexpected error when or-asgn/and-asgn (#517)
- Fix goto-definition from method call inside block (#518)
- Better splat in array typing (#519)
- Fix lambda typing (#506)
- Validate type descendants (#507)
- Fix print error with absolute path (#508)
- Skip non-target ruby code on
steep stats
(#509)
- Better typing for
#flat_map
(#504) - Support lambdas (
->
) with block (#503) - Let proc type be
::Proc
class instance (#502) - Disable contextual typing on
bool
type (#501) - Type check
return
without value (#500)
Steep supports all of the new features of RBS 2. 🎉 It now requires RBS >= 2.2 and support all of the features.
This update lets Steep run with Active Support 7.
- Fix ActiveSupport requirement in
lib/steep.rb
(#484)
This update contains update for RBS 1.7.
- RBS 1.7 (#455)
- Bug fixes related to
SendArgs
(#444, #449, #451) - LSP completion item formatting improvement (#442)
This release updates Steepfile DSL syntax, introducing stdlib_path
and configure_code_diagnostics
syntax (methods).
stdlib_path
allows configuring core/stdlib RBS file locations.configure_code_diagnostics
allows configuring severity of each type errors.
See the PRs for the explanation of these methods.
You can try steep init
to generate updated Steepfile
template.
- Flexible diagnostics configuration (#422, #423)
- Revise Steepfile path DSL (#421)
- Avoid to stop process by invalid jobs_count (#419)
- Fix
Steep::Typing::UnknownNodeError
when hover method with numblock (#415)
- Fix error reporting on
RBS::MixinClassError
(#411) - Compact error reporting for method body type mismatch (#414)
- Fix NoMethodError with csend/numblock (#412)
- LSP completion for RBS files (#404)
- Allow break without value from bot methods (#398)
- Type check on lvar assignments (#390)
- Assign different error code to break without value (#387)
- Support Ruby3 Keyword Arguments (#386)
- LSP hover for RBS files (#385, #397)
- Fix FileLoader to skip files not matching to the given pattern (#382)
- Ruby3 support for numbered block parameters and end-less def (#381)
- Disable goto declaration and goto type declaration (because they are not implemented) (#377)
- Fix goto from block calls (#378)
- Implement LSP go to definition/implementation (#371, #375)
- Fix typing on passing optional block (#373)
- Do not crash when completion request
context
is missing (#370) - Update RBS (#376)
- Fix LSP
textDocument/didSave
notification handling (#368)
- LSP responsiveness improvements (#352)
@implements
annotation in blocks (#338)- Better
steep stats
table formatting (#300) - Fix retry type checking (#293)
- Better tuple type checking (#328)
- Fix unexpected
add_call
error (#358) - Ignore passing nil as a block
&nil
(#356) - Better type checking for non-trivial block parameters (#354)
- Avoid unexpected error on splat assignments (#330)
- Fix constraint solver (#343)
- Ruby 2.7 compatible private method call typing (#344)
- Type checking performance improvement (#309, #311, #312, #313, #314, #315, #316, #320, #322)
- Let
watch
command support files (#323) - Validate module-self-type constraints (#308)
- Add
-j
option to specify number of worker processes (#318, #325) - Fix
code
of RBS diagnostics (#306) - Skip printing source code from out of date expectations file (#305)
- Add
--with-expectations
and--save-expectations
option (#303)
- Report progress with dots (#287)
- Diagnostics message improvements (#297, #301)
- Fix error on implicit
to_proc
syntax whenuntyped
is yielded (#291)
- Update RBS to 1.0.0 (#282)
- Better
&&
and||
typing (#276) - Type case based on literals (#277)
- Type case improvements (#279, #283)
- Improvements on untyped classes/modules, unsupported syntax error handling, and argument types in untyped methods (#280)
- Fix
bot
andtop
type format (#278) - Colorfull error messages (#273)
- Update to RBS 0.20.0 with singleton attribute syntax and proc types with blocks. (#264)
- Flow-sensitive typing improvements with
||
and&&
(#260) - Type-case improvement (#259)
- Subtyping between
bool
and logic types (#258)
- Support third party RBS repository (#231, #254, #255)
- Boolean type semantics update (#252)
- More flexible record typing (#256)
- Add
steep stats
command to show method call typing stats (#246) - Fix attribute assignment typing (#243)
- Let
Range[T]
be covariant (#242) - Fix constant typing (#247, #248)
- Make
!
typing flow sensitive (#240)
- Let type-case support interface types (#237)
- Fix
if-then-else
parsing (#236)
- Fix type checking performance (#230)
- Improve LSP completion/hover performance (#232)
- Fix instance variable completion (#234)
- Relax version requirements on Listen to allow installing on Ruby 3 (#235)
- Let top-level defs be methods of Object (#227)
- Fix error caused by attribute definitions (#228)
- LSP worker improvements (#222, #223, #226, #229)
- Implement reasoning on
is_a?
,nil?
, and===
methods. (#218) - Better completion based on interface (#215)
- Fix begin-rescue typing (#221)
- Fix typing case-when with empty body (#200)
- Fix lvasgn typing with
void
type hint (#200) - Fix subtype checking between type variables and union types (#200)
- Support endless range (#200)
- Fix optarg, kwoptarg typing (#202)
- Better union/intersection types (#204)
- Fix generic method instantiation (#205)
- Fix module typing (#206)
- Fix shutdown problem (#209)
- Update RBS to 0.12.0 (#210)
- Improve processing singleton class decls without RBS (#211)
- Improve processing block parameter with masgn (#212)
- Make tuple types covariant (#195)
- Support
or_asgn
/and_asgn
withsend
node lhs (#194) - Performance improvement (#193)
- Add specialized versions of
#first
and#last
on tuples (#191) - Typing bug fix on
[]
(empty array) (#190) - Earlier shutdown with interruption while
steep watch
(#173)
- Skipped
- Improve
op_send
typing (#186) - Improve
op_asgn
typing (#189) - Better multi-assignment support (#183, #184)
- Support for loop and class variables (#182)
- Fix tuple typing (#181)
- Update RBS to 0.10 (#180)
- Improve signature validation (#175, #177)
- Fix boolean literal typing (#172)
- Make exit code success when Steep has unreported type errors (#171)
- Allow
./
prefix for signature pattern (#170)
- Support singleton class definitions (#166)
- Sort result of
Pathname#glob
(#154) - Sort methods in LanguageServer to return non-inherited methods first (#159)
- Allow RBS gem to be 0.4 (#153)
- Fix
steep watch
andsteep langserver
to correctly handle error message filterings based on options (#152) - Fix typing of collections (#151)
- Fix constant resolution (#143)
- Fix RBS diagnostics line number in LSP (#142)
- Fix crash caused by hover on
def
in LSP (#140)
- Spawn workers for type check performance (#137)
- Fix
check
andsignature
methods in Steepfile (8f3e4c7)
- Add type checking configuration to dsl (#132)
- More flow sensitive type checking
- Implementat LSP completion. (#119)
- Update ruby-signature. (#120)
- Rescue errors during
langserver
. (#121) - Pass hint when type checking
return
. (#122) - Remove trailing spaces from Steepfile. (#118)
- Improve LSP hover support. (#117)
- Add
Steepfile
for configuration - Use the latest version of
ruby-signature
- Relax activesupport versnion requirement (#90)
- Skip
alias
nodes type checking (#85) - Add experimental LSP support (#79. #83)
- Fix logging (#81)
- Add
watch
subcommand (#77) - Automatically
@implements
super class if the class definition inherits - Fix tuple typing
- Fix
or
typing
- Private methods (#72)
__skip__
to skip type checking (#73)- Add
alias
for method types (#75) - Fix
Names::Base#hash
(#69 @hanachin) - Add
super
in method types (#76)
- Fix ElseOnExhaustiveCase error implementation
- Add some builtin methods
- Remove duplicated detected paths (#67)
- Load types from gems (#64, #66)
- Fix exit status (#65)
- Fix
--version
handling (#57 @ybiquitous, #58) - Add
Regexp
andMatchData
(#58 @ybiquitous)
- Rename hash type to record type (#60)
- Fix keyword typing (#59)
- Add some builtin
- Fix array argument typing
- Allow
@type
instance variable declaration in signature - Fix
@type
annotation parsing - Fix polymorphic method type inference
- Fix relative module lookup
- Fix module name tokenization
- Update ast_utils
- Introduce hash type
{ id: Integer, name: String }
(#54) - Revise signature syntax; use
<
instead of<:
for inheritance (#53) - Interface and alias name can be namespaced (#52)
- Grammar formatting (#51 @iliabylich)
- Relax dependency requirements (#49, #50)
- Support lambda
->
(#47) - Introduce incompatible method (#45)
- Add type alias (#44)
- Steep is MIT license (#43)
- Improved block parameter typing (#41)
- Support optional block
- Support attributes in module
- Support
:xstr
node - Allow missing method definition with
steep check
without--strict
- Add tuple type (#40)
- Add
bool
andnil
types (#39) - Add literal type (#37)
- Add
interface
command to print interface built for given type - Add
--strict
option forcheck
command - Fix
scaffold
command for empty class/modules - Type check method definition with empty body
- Add
STDOUT
andStringIO
minimal definition - Fix validate command to load stdlib
- Fix parsing keyword argument type
- Add
attr_reader
andattr_accessor
syntax to signature (#33) - Fix parsing on union with
any