Nothing changed since 1.10.0.pre.3.
- Fix block type checking (#1534)
- Fix
selftype handling at block-self-hint (#1531) - Delay type variable resolution on method call with blocks (#1530)
- Fix type checking block calls on
untypedreceiver (#1528) - Catch the message of VariableDuplicationError (#1521)
- Skip type checking forwarded argument if the method is undeclared (#1519)
- Dedup error message on ancestors check (#1515)
- Add deprecation validation on RBS (#1518)
- Fix union self type refinement based on method call (#1517)
- Check deprecations in Ruby code (#1513)
- Support
InvalidTypeApplicationon#update_env(#1507) - Fix Source.parse crashes with selector-less sendish node (#1433)
- Fix steep:ignore does not work with CR/LF (#1406)
- Fix self union type checking (#1467)
- Type narrowing union types via return type of method call (#1497)
- Fix
elseclause ofcase-whensyntax typing (#1475) - Strict record and tuple subtyping (#1460)
- Allow to annotate "self" on toplevel (#1455)
- Let annotations in
whenclause withoutcondexpression work (#1459) - Fix
RuntimeErroronwhenclause with assertion (#1458) - Add diagnostic for method definition without types (#1457)
- Fix a runtime warning for ambiguous
/; wrap regexp in parentheses or add a space after/operator (#1438) - Fix a runtime warning for ambiguous
*has been interpreted as an argument prefix (#1439) - Fix a runtime warning for key :cursor is duplicated and overwritten on line 99 (#1440)
- Use release version of RBS (#1511)
- Prepare for rbs-3.9 (#1510)
- Fix typos (#1506)
- Fix CI (#1486)
- Attach type assertion to keyword args (#1410)
- deps: Add uri gem to dependencies list (#1402)
- Make
implicitly-returns-nilopt-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(exprnode (#1347) - Add
UnannotatedEmptyCollectiondiagnostic (#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
targetfrom--validateoption (#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/typecheckrequest 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 notificationfor 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
MethodTypeandTypes::*(#1201) - Delete
ContextArray(#1199) - Fix shape calculation error (#1197)
- Skip
#:syntax inData.defineandStruct.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 projectmessage 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:ignorecomment (#1034) - Make defined? accept any type (#1031)
- Refactor case-when syntax (#999)
- Update
Steep::Subtyping::Check#checktypes (#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_son 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/resetrequest 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)
nilis 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=2automatically on CI (#924) - Fix type alias validation (#922)
- Let goto definition work from
UnresolvedOverloadingerror calls (#943) - Let label be whole method type in SignatureHelp (#942)
- Set up file watcher (#936)
- Reset file content on
didOpennotification (#935) - Start type check on change (#934)
- Better completion with module alias and
usedirectives (#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
untypedis the proc type hint (#868) - Type case with type variable (#869)
- Filx
nil?unreachability detection (#867)
- Update
#configure_code_diagnosticstype (#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
UnexpectedKeywordArgumenteven 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
casenodeuntypedrather 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_refand:back_refnodes optional (#815) - Add new diagnostic for setter methods (#809)
- Better hint type handling given to lambda (#807)
- Fix type assertion parsing error (#805)
- Distribute
untypedto block params (#798) - Should escape underscore for method name (#770)
- Give a special typing rule to
#lambdacalls (#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.silenttemplate to suppress all warnings (#800) - Suppress
UnsupportedSyntaxwarnings 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
returnhave 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
gvasgnin assignment variants (#762) - Set up break contexts correctly for untyped blocks (#752)
- Fix flow sensitive on
casewithout 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
#levelmethod (#671) - Cache
constant_resolveramong files in a target(#673) - Early return from type checking overloads (#674)
- Spawn worker processes if
--steep-commandis specified (#672)
- Fork when available for quicker startup (#664)
- Fix type narrowing on case-when (#662)
- Refactor
--jobsand--steep-commandoption 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 checkfilecommand (#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_envwhen 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
ChildrenLevelhelper inAST::Types::Proc(#584) - Type check
gvarandgvasgnin methods(#579) - Avoid
UnexpectedErrorwhen assigning untyped singleton class (#586)
- Improve Windows support (#561, #573)
- Test if
.ruby-versionexists beforervm doin binstub (#558) - Fix typo (#564)
- Ignore
untitled:URIs in LSP (#580)
- Add special typing rule for
Array#compact(#555) - Add custom method type of
#fetchon tuples and records (#554) - Better
masgn(#553) - Fix method parameter type checking (#552)
- Handle class declaration with non-const super class (#546)
- Remove
#to_aerror message (#545) - Add
#filter_mapshim (#544)
- Better union type inference (it type checks
Array#filter_mapnow!) (#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 binstubcommand (#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
&:fooproc 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
::Procclass instance (#502) - Disable contextual typing on
booltype (#501) - Type check
returnwithout 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_pathallows configuring core/stdlib RBS file locations.configure_code_diagnosticsallows 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::UnknownNodeErrorwhen 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
contextis missing (#370) - Update RBS (#376)
- Fix LSP
textDocument/didSavenotification handling (#368)
- LSP responsiveness improvements (#352)
@implementsannotation in blocks (#338)- Better
steep statstable formatting (#300) - Fix retry type checking (#293)
- Better tuple type checking (#328)
- Fix unexpected
add_callerror (#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
watchcommand support files (#323) - Validate module-self-type constraints (#308)
- Add
-joption to specify number of worker processes (#318, #325) - Fix
codeof RBS diagnostics (#306) - Skip printing source code from out of date expectations file (#305)
- Add
--with-expectationsand--save-expectationsoption (#303)
- Report progress with dots (#287)
- Diagnostics message improvements (#297, #301)
- Fix error on implicit
to_procsyntax whenuntypedis 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
botandtoptype 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
booland logic types (#258)
- Support third party RBS repository (#231, #254, #255)
- Boolean type semantics update (#252)
- More flexible record typing (#256)
- Add
steep statscommand 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-elseparsing (#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
voidtype 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_asgnwithsendnode lhs (#194) - Performance improvement (#193)
- Add specialized versions of
#firstand#laston tuples (#191) - Typing bug fix on
[](empty array) (#190) - Earlier shutdown with interruption while
steep watch(#173)
- Skipped
- Improve
op_sendtyping (#186) - Improve
op_asgntyping (#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 watchandsteep langserverto 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
defin LSP (#140)
- Spawn workers for type check performance (#137)
- Fix
checkandsignaturemethods 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
Steepfilefor configuration - Use the latest version of
ruby-signature
- Relax activesupport versnion requirement (#90)
- Skip
aliasnodes type checking (#85) - Add experimental LSP support (#79. #83)
- Fix logging (#81)
- Add
watchsubcommand (#77) - Automatically
@implementssuper class if the class definition inherits - Fix tuple typing
- Fix
ortyping
- Private methods (#72)
__skip__to skip type checking (#73)- Add
aliasfor method types (#75) - Fix
Names::Base#hash(#69 @hanachin) - Add
superin 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
--versionhandling (#57 @ybiquitous, #58) - Add
RegexpandMatchData(#58 @ybiquitous)
- Rename hash type to record type (#60)
- Fix keyword typing (#59)
- Add some builtin
- Fix array argument typing
- Allow
@typeinstance variable declaration in signature - Fix
@typeannotation 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
:xstrnode - Allow missing method definition with
steep checkwithout--strict
- Add tuple type (#40)
- Add
boolandniltypes (#39) - Add literal type (#37)
- Add
interfacecommand to print interface built for given type - Add
--strictoption forcheckcommand - Fix
scaffoldcommand for empty class/modules - Type check method definition with empty body
- Add
STDOUTandStringIOminimal definition - Fix validate command to load stdlib
- Fix parsing keyword argument type
- Add
attr_readerandattr_accessorsyntax to signature (#33) - Fix parsing on union with
any