steep 1.5.0.pre.6 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/Gemfile.lock +2 -2
- data/Gemfile.steep.lock +11 -9
- data/README.md +1 -1
- data/Steepfile +2 -3
- data/lib/steep/ast/annotation/collection.rb +6 -6
- data/lib/steep/diagnostic/ruby.rb +170 -35
- data/lib/steep/drivers/checkfile.rb +1 -2
- data/lib/steep/drivers/init.rb +3 -2
- data/lib/steep/drivers/stats.rb +1 -1
- data/lib/steep/interface/function.rb +8 -8
- data/lib/steep/project/dsl.rb +2 -23
- data/lib/steep/server/interaction_worker.rb +2 -2
- data/lib/steep/source.rb +8 -13
- data/lib/steep/subtyping/check.rb +2 -2
- data/lib/steep/subtyping/constraints.rb +2 -2
- data/lib/steep/type_construction.rb +28 -22
- data/lib/steep/type_inference/logic_type_interpreter.rb +8 -6
- data/lib/steep/type_inference/type_env.rb +3 -3
- data/lib/steep/version.rb +1 -1
- data/sample/lib/conference.rb +5 -0
- data/sig/steep/ast/annotation/collection.rbs +25 -22
- data/sig/steep/ast/types/factory.rbs +1 -2
- data/sig/steep/diagnostic/ruby.rbs +22 -10
- data/sig/steep/project/dsl.rbs +7 -2
- data/smoke/unexpected/test_expectations.yml +0 -12
- metadata +4 -7
- data/lib/steep/ast/type_params.rb +0 -13
- data/sig/steep/ast/type_params.rbs +0 -11
- data/smoke/unexpected/unexpected.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7775c9db83acf70b19f27b4983923ee40e8d1a39043c981726573b0c06eb1c8
|
4
|
+
data.tar.gz: 1d9f2753a19a577cce778f6ec1ee924534523812764c0350c21280d82a0e1c69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bd6340dfecc114df47a959d25a4201a87ccccbc0b1e59238962de51c28218b01aa25499ae8a760e678481192131dfdd3c99b6c89412ce4b6e0b3fad2bf34ca5
|
7
|
+
data.tar.gz: 87437181a053c65f297192eb9e339c0b58ad074d4c6716eef2a1019116d3ed06d0525eebcc49855ae99a8393bffac82640d77f608479b98f67e158b42c54d327
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,36 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 1.5.1 (2023-07-20)
|
6
|
+
|
7
|
+
### Type checker core
|
8
|
+
|
9
|
+
* Support unreachable branch detection with `elsif` ([#879](https://github.com/soutaro/steep/pull/879))
|
10
|
+
* Give an optional type hint to lhs of `||` ([#874](https://github.com/soutaro/steep/pull/874))
|
11
|
+
|
12
|
+
### Miscellaneous
|
13
|
+
|
14
|
+
* Update steep ([#878](https://github.com/soutaro/steep/pull/878))
|
15
|
+
* Update inline type comments ([#875](https://github.com/soutaro/steep/pull/875))
|
16
|
+
|
17
|
+
## 1.5.0 (2023-07-13)
|
18
|
+
|
19
|
+
### Type checker core
|
20
|
+
|
21
|
+
* Fix for the case `untyped` is the proc type hint ([#868](https://github.com/soutaro/steep/pull/868))
|
22
|
+
* Type case with type variable ([#869](https://github.com/soutaro/steep/pull/869))
|
23
|
+
* Filx `nil?` unreachability detection ([#867](https://github.com/soutaro/steep/pull/867))
|
24
|
+
|
25
|
+
### Commandline tool
|
26
|
+
|
27
|
+
* Update `#configure_code_diagnostics` type ([#873](https://github.com/soutaro/steep/pull/873))
|
28
|
+
* Update diagnostics templates ([#871](https://github.com/soutaro/steep/pull/871))
|
29
|
+
* Removed "set" from "libray" in init.rb and README ([#870](https://github.com/soutaro/steep/pull/870))
|
30
|
+
|
31
|
+
### Language server
|
32
|
+
|
33
|
+
* Use RBS::Buffer method to calculate position ([#872](https://github.com/soutaro/steep/pull/872))
|
34
|
+
|
5
35
|
## 1.5.0.pre.6 (2023-07-11)
|
6
36
|
|
7
37
|
### Type checker core
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steep (1.5.
|
4
|
+
steep (1.5.1)
|
5
5
|
activesupport (>= 5.1)
|
6
6
|
concurrent-ruby (>= 1.1.10)
|
7
7
|
csv (>= 3.0.9)
|
@@ -53,7 +53,7 @@ GEM
|
|
53
53
|
rb-fsevent (0.11.2)
|
54
54
|
rb-inotify (0.10.1)
|
55
55
|
ffi (~> 1.0)
|
56
|
-
rbs (3.1.
|
56
|
+
rbs (3.1.1)
|
57
57
|
ruby-lsp (0.5.1)
|
58
58
|
language_server-protocol (~> 3.17.0)
|
59
59
|
sorbet-runtime
|
data/Gemfile.steep.lock
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activesupport (7.0.
|
4
|
+
activesupport (7.0.6)
|
5
5
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
6
6
|
i18n (>= 1.6, < 2)
|
7
7
|
minitest (>= 5.1)
|
8
8
|
tzinfo (~> 2.0)
|
9
9
|
ast (2.4.2)
|
10
10
|
concurrent-ruby (1.2.2)
|
11
|
-
csv (3.2.
|
11
|
+
csv (3.2.7)
|
12
12
|
ffi (1.15.5)
|
13
13
|
fileutils (1.7.1)
|
14
|
-
i18n (1.
|
14
|
+
i18n (1.14.1)
|
15
15
|
concurrent-ruby (~> 1.0)
|
16
16
|
json (2.6.3)
|
17
17
|
language_server-protocol (3.17.0.3)
|
@@ -19,18 +19,20 @@ GEM
|
|
19
19
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
20
20
|
rb-inotify (~> 0.9, >= 0.9.10)
|
21
21
|
logger (1.5.3)
|
22
|
-
minitest (5.18.
|
23
|
-
parser (3.2.2.
|
22
|
+
minitest (5.18.1)
|
23
|
+
parser (3.2.2.3)
|
24
24
|
ast (~> 2.4.1)
|
25
|
+
racc
|
26
|
+
racc (1.7.1)
|
25
27
|
rainbow (3.1.1)
|
26
28
|
rb-fsevent (0.11.2)
|
27
29
|
rb-inotify (0.10.1)
|
28
30
|
ffi (~> 1.0)
|
29
|
-
rbs (3.1.
|
31
|
+
rbs (3.1.1)
|
30
32
|
securerandom (0.2.2)
|
31
|
-
steep (1.
|
33
|
+
steep (1.5.0)
|
32
34
|
activesupport (>= 5.1)
|
33
|
-
concurrent-ruby (>= 1.
|
35
|
+
concurrent-ruby (>= 1.1.10)
|
34
36
|
csv (>= 3.0.9)
|
35
37
|
fileutils (>= 1.1.0)
|
36
38
|
json (>= 2.1.0)
|
@@ -39,7 +41,7 @@ GEM
|
|
39
41
|
logger (>= 1.3.0)
|
40
42
|
parser (>= 3.1)
|
41
43
|
rainbow (>= 2.2.2, < 4.0)
|
42
|
-
rbs (>=
|
44
|
+
rbs (>= 3.1.0)
|
43
45
|
securerandom (>= 0.1)
|
44
46
|
strscan (>= 1.0.0)
|
45
47
|
terminal-table (>= 2, < 4)
|
data/README.md
CHANGED
data/Steepfile
CHANGED
@@ -3,13 +3,12 @@ D = Steep::Diagnostic
|
|
3
3
|
target :app do
|
4
4
|
check "lib"
|
5
5
|
ignore "lib/steep/shims"
|
6
|
-
|
6
|
+
|
7
7
|
signature "sig"
|
8
8
|
|
9
9
|
collection_config "rbs_collection.steep.yaml"
|
10
10
|
|
11
|
-
configure_code_diagnostics do |hash|
|
12
|
-
hash[D::Ruby::MethodDefinitionMissing] = :hint
|
11
|
+
configure_code_diagnostics(D::Ruby.strict) do |hash|
|
13
12
|
end
|
14
13
|
|
15
14
|
FileUtils.mkpath("tmp")
|
@@ -110,20 +110,20 @@ module Steep
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def lvar_types
|
113
|
-
var_type_annotations.each_key.with_object({}) do |name, hash|
|
114
|
-
hash[name] = var_type(lvar: name)
|
113
|
+
var_type_annotations.each_key.with_object({}) do |name, hash| #$ Hash[Symbol, Types::t]
|
114
|
+
hash[name] = var_type(lvar: name) || raise
|
115
115
|
end
|
116
116
|
end
|
117
117
|
|
118
118
|
def ivar_types
|
119
|
-
ivar_type_annotations.each_key.with_object({}) do |name, hash|
|
120
|
-
hash[name] = var_type(ivar: name)
|
119
|
+
ivar_type_annotations.each_key.with_object({}) do |name, hash| #$ Hash[Symbol, Types::t]
|
120
|
+
hash[name] = var_type(ivar: name) || raise
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
124
|
def const_types
|
125
|
-
const_type_annotations.each_key.with_object({}) do |name, hash|
|
126
|
-
hash[name] = var_type(const: name)
|
125
|
+
const_type_annotations.each_key.with_object({}) do |name, hash| #$ Hash[RBS::TypeName, Types::t]
|
126
|
+
hash[name] = var_type(const: name) || raise
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
@@ -841,7 +841,6 @@ module Steep
|
|
841
841
|
end
|
842
842
|
|
843
843
|
class UnexpectedError < Base
|
844
|
-
attr_reader :message
|
845
844
|
attr_reader :error
|
846
845
|
|
847
846
|
def initialize(node:, error:)
|
@@ -850,7 +849,28 @@ module Steep
|
|
850
849
|
end
|
851
850
|
|
852
851
|
def header_line
|
853
|
-
"UnexpectedError: #{error.message}"
|
852
|
+
"UnexpectedError: #{error.message}(#{error.class})"
|
853
|
+
end
|
854
|
+
|
855
|
+
def detail_lines
|
856
|
+
if trace = error.backtrace
|
857
|
+
io = StringIO.new
|
858
|
+
|
859
|
+
total = trace.size
|
860
|
+
if total > 30
|
861
|
+
trace = trace.take(15)
|
862
|
+
end
|
863
|
+
|
864
|
+
trace.each.with_index do |line, index|
|
865
|
+
io.puts "#{index+1}. #{line}"
|
866
|
+
end
|
867
|
+
|
868
|
+
if trace.size != total
|
869
|
+
io.puts " (#{total - trace.size} more backtrace)"
|
870
|
+
end
|
871
|
+
|
872
|
+
io.string
|
873
|
+
end
|
854
874
|
end
|
855
875
|
end
|
856
876
|
|
@@ -992,20 +1012,57 @@ module Steep
|
|
992
1012
|
def self.default
|
993
1013
|
@default ||= _ = all_error.merge(
|
994
1014
|
{
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
1015
|
+
ArgumentTypeMismatch => :error,
|
1016
|
+
BlockBodyTypeMismatch => :hint,
|
1017
|
+
BlockTypeMismatch => :hint,
|
1018
|
+
BreakTypeMismatch => :hint,
|
1019
|
+
DifferentMethodParameterKind => :hint,
|
1020
|
+
FallbackAny => :hint,
|
1021
|
+
FalseAssertion => :hint,
|
1022
|
+
ImplicitBreakValueMismatch => :hint,
|
1023
|
+
IncompatibleAnnotation => :hint,
|
1024
|
+
IncompatibleArgumentForwarding => :warning,
|
1025
|
+
IncompatibleAssignment => :hint,
|
1026
|
+
IncompatibleMethodTypeAnnotation => :hint,
|
1027
|
+
IncompatibleTypeCase => :hint,
|
1028
|
+
InsufficientKeywordArguments => :error,
|
1029
|
+
InsufficientPositionalArguments => :error,
|
1030
|
+
InsufficientTypeArgument => :hint,
|
1031
|
+
MethodArityMismatch => :error,
|
1032
|
+
MethodBodyTypeMismatch => :error,
|
1033
|
+
MethodDefinitionMissing => nil,
|
1034
|
+
MethodParameterMismatch => :error,
|
1035
|
+
MethodReturnTypeAnnotationMismatch => :hint,
|
1036
|
+
MultipleAssignmentConversionError => :hint,
|
1037
|
+
NoMethod => :error,
|
1038
|
+
ProcHintIgnored => :hint,
|
1039
|
+
ProcTypeExpected => :hint,
|
1040
|
+
RBSError => :information,
|
1041
|
+
RequiredBlockMissing => :error,
|
1042
|
+
ReturnTypeMismatch => :error,
|
1043
|
+
SetterBodyTypeMismatch => :information,
|
1044
|
+
SetterReturnTypeMismatch => :information,
|
1045
|
+
SyntaxError => :hint,
|
1046
|
+
TypeArgumentMismatchError => :hint,
|
1047
|
+
UnexpectedBlockGiven => :warning,
|
1048
|
+
UnexpectedDynamicMethod => :hint,
|
1049
|
+
UnexpectedError => :hint,
|
1050
|
+
UnexpectedJump => :hint,
|
1051
|
+
UnexpectedJumpValue => :hint,
|
1052
|
+
UnexpectedKeywordArgument => :error,
|
1053
|
+
UnexpectedPositionalArgument => :error,
|
1054
|
+
UnexpectedSplat => :hint,
|
1055
|
+
UnexpectedSuper => :information,
|
1056
|
+
UnexpectedTypeArgument => :hint,
|
1057
|
+
UnexpectedYield => :warning,
|
999
1058
|
UnknownConstant => :warning,
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
SetterBodyTypeMismatch => nil,
|
1008
|
-
SetterReturnTypeMismatch => nil
|
1059
|
+
UnknownGlobalVariable => :warning,
|
1060
|
+
UnknownInstanceVariable => :information,
|
1061
|
+
UnreachableBranch => :hint,
|
1062
|
+
UnreachableValueBranch => :hint,
|
1063
|
+
UnresolvedOverloading => :error,
|
1064
|
+
UnsatisfiableConstraint => :hint,
|
1065
|
+
UnsupportedSyntax => :hint,
|
1009
1066
|
}
|
1010
1067
|
).freeze
|
1011
1068
|
end
|
@@ -1013,17 +1070,57 @@ module Steep
|
|
1013
1070
|
def self.strict
|
1014
1071
|
@strict ||= _ = all_error.merge(
|
1015
1072
|
{
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1073
|
+
ArgumentTypeMismatch => :error,
|
1074
|
+
BlockBodyTypeMismatch => :error,
|
1075
|
+
BlockTypeMismatch => :error,
|
1076
|
+
BreakTypeMismatch => :error,
|
1077
|
+
DifferentMethodParameterKind => :error,
|
1078
|
+
FallbackAny => :warning,
|
1079
|
+
FalseAssertion => :error,
|
1080
|
+
ImplicitBreakValueMismatch => :information,
|
1081
|
+
IncompatibleAnnotation => :error,
|
1082
|
+
IncompatibleArgumentForwarding => :error,
|
1083
|
+
IncompatibleAssignment => :error,
|
1084
|
+
IncompatibleMethodTypeAnnotation => :error,
|
1085
|
+
IncompatibleTypeCase => :error,
|
1086
|
+
InsufficientKeywordArguments => :error,
|
1087
|
+
InsufficientPositionalArguments => :error,
|
1088
|
+
InsufficientTypeArgument => :error,
|
1089
|
+
MethodArityMismatch => :error,
|
1090
|
+
MethodBodyTypeMismatch => :error,
|
1091
|
+
MethodDefinitionMissing => :hint,
|
1092
|
+
MethodParameterMismatch => :error,
|
1093
|
+
MethodReturnTypeAnnotationMismatch => :error,
|
1094
|
+
MultipleAssignmentConversionError => :error,
|
1095
|
+
NoMethod => :error,
|
1096
|
+
ProcHintIgnored => :information,
|
1097
|
+
ProcTypeExpected => :error,
|
1098
|
+
RBSError => :error,
|
1099
|
+
RequiredBlockMissing => :error,
|
1100
|
+
ReturnTypeMismatch => :error,
|
1025
1101
|
SetterBodyTypeMismatch => :error,
|
1026
|
-
SetterReturnTypeMismatch => :error
|
1102
|
+
SetterReturnTypeMismatch => :error,
|
1103
|
+
SyntaxError => :hint,
|
1104
|
+
TypeArgumentMismatchError => :error,
|
1105
|
+
UnexpectedBlockGiven => :error,
|
1106
|
+
UnexpectedDynamicMethod => :information,
|
1107
|
+
UnexpectedError => :information,
|
1108
|
+
UnexpectedJump => :error,
|
1109
|
+
UnexpectedJumpValue => :error,
|
1110
|
+
UnexpectedKeywordArgument => :error,
|
1111
|
+
UnexpectedPositionalArgument => :error,
|
1112
|
+
UnexpectedSplat => :warning,
|
1113
|
+
UnexpectedSuper => :error,
|
1114
|
+
UnexpectedTypeArgument => :error,
|
1115
|
+
UnexpectedYield => :error,
|
1116
|
+
UnknownConstant => :error,
|
1117
|
+
UnknownGlobalVariable => :error,
|
1118
|
+
UnknownInstanceVariable => :error,
|
1119
|
+
UnreachableBranch => :information,
|
1120
|
+
UnreachableValueBranch => :warning,
|
1121
|
+
UnresolvedOverloading => :error,
|
1122
|
+
UnsatisfiableConstraint => :error,
|
1123
|
+
UnsupportedSyntax => :information,
|
1027
1124
|
}
|
1028
1125
|
).freeze
|
1029
1126
|
end
|
@@ -1031,19 +1128,57 @@ module Steep
|
|
1031
1128
|
def self.lenient
|
1032
1129
|
@lenient ||= _ = all_error.merge(
|
1033
1130
|
{
|
1034
|
-
|
1035
|
-
|
1131
|
+
ArgumentTypeMismatch => :information,
|
1132
|
+
BlockBodyTypeMismatch => :hint,
|
1133
|
+
BlockTypeMismatch => :hint,
|
1134
|
+
BreakTypeMismatch => :hint,
|
1135
|
+
DifferentMethodParameterKind => nil,
|
1036
1136
|
FallbackAny => nil,
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1137
|
+
FalseAssertion => nil,
|
1138
|
+
ImplicitBreakValueMismatch => nil,
|
1139
|
+
IncompatibleAnnotation => nil,
|
1140
|
+
IncompatibleArgumentForwarding => :information,
|
1141
|
+
IncompatibleAssignment => :hint,
|
1142
|
+
IncompatibleMethodTypeAnnotation => nil,
|
1143
|
+
IncompatibleTypeCase => nil,
|
1144
|
+
InsufficientKeywordArguments => :information,
|
1145
|
+
InsufficientPositionalArguments => :information,
|
1146
|
+
InsufficientTypeArgument => nil,
|
1147
|
+
MethodArityMismatch => :information,
|
1148
|
+
MethodBodyTypeMismatch => :warning,
|
1040
1149
|
MethodDefinitionMissing => nil,
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1150
|
+
MethodParameterMismatch => :warning,
|
1151
|
+
MethodReturnTypeAnnotationMismatch => nil,
|
1152
|
+
MultipleAssignmentConversionError => nil,
|
1153
|
+
NoMethod => :information,
|
1154
|
+
ProcHintIgnored => nil,
|
1155
|
+
ProcTypeExpected => nil,
|
1156
|
+
RBSError => :information,
|
1157
|
+
RequiredBlockMissing => :hint,
|
1158
|
+
ReturnTypeMismatch => :warning,
|
1045
1159
|
SetterBodyTypeMismatch => nil,
|
1046
|
-
SetterReturnTypeMismatch => nil
|
1160
|
+
SetterReturnTypeMismatch => nil,
|
1161
|
+
SyntaxError => :hint,
|
1162
|
+
TypeArgumentMismatchError => nil,
|
1163
|
+
UnexpectedBlockGiven => :hint,
|
1164
|
+
UnexpectedDynamicMethod => nil,
|
1165
|
+
UnexpectedError => :hint,
|
1166
|
+
UnexpectedJump => nil,
|
1167
|
+
UnexpectedJumpValue => nil,
|
1168
|
+
UnexpectedKeywordArgument => :information,
|
1169
|
+
UnexpectedPositionalArgument => :information,
|
1170
|
+
UnexpectedSplat => nil,
|
1171
|
+
UnexpectedSuper => nil,
|
1172
|
+
UnexpectedTypeArgument => nil,
|
1173
|
+
UnexpectedYield => :information,
|
1174
|
+
UnknownConstant => :hint,
|
1175
|
+
UnknownGlobalVariable => :hint,
|
1176
|
+
UnknownInstanceVariable => :hint,
|
1177
|
+
UnreachableBranch => :hint,
|
1178
|
+
UnreachableValueBranch => :hint,
|
1179
|
+
UnresolvedOverloading => :information,
|
1180
|
+
UnsatisfiableConstraint => :hint,
|
1181
|
+
UnsupportedSyntax => :hint,
|
1047
1182
|
}
|
1048
1183
|
).freeze
|
1049
1184
|
end
|
@@ -168,8 +168,7 @@ module Steep
|
|
168
168
|
|
169
169
|
Steep.logger.info { "Starting type checking: #{request_guid}" }
|
170
170
|
|
171
|
-
|
172
|
-
error_messages = []
|
171
|
+
error_messages = [] #: Array[String]
|
173
172
|
client_reader.read do |response|
|
174
173
|
case
|
175
174
|
when response[:method] == "textDocument/publishDiagnostics"
|
data/lib/steep/drivers/init.rb
CHANGED
@@ -18,9 +18,10 @@ module Steep
|
|
18
18
|
# check "app/models/**/*.rb" # Glob
|
19
19
|
# # ignore "lib/templates/*.rb"
|
20
20
|
#
|
21
|
-
# # library "pathname"
|
21
|
+
# # library "pathname" # Standard libraries
|
22
22
|
# # library "strong_json" # Gems
|
23
23
|
#
|
24
|
+
# # configure_code_diagnostics(D::Ruby.default) # `default` diagnostics setting (applies by default)
|
24
25
|
# # configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
|
25
26
|
# # configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
|
26
27
|
# # configure_code_diagnostics(D::Ruby.silent) # `silent` diagnostics setting
|
@@ -34,7 +35,7 @@ module Steep
|
|
34
35
|
#
|
35
36
|
# check "test"
|
36
37
|
#
|
37
|
-
# # library "pathname"
|
38
|
+
# # library "pathname" # Standard libraries
|
38
39
|
# end
|
39
40
|
EOF
|
40
41
|
|
data/lib/steep/drivers/stats.rb
CHANGED
@@ -471,8 +471,8 @@ module Steep
|
|
471
471
|
|
472
472
|
# For overloading
|
473
473
|
def +(other)
|
474
|
-
requireds = {}
|
475
|
-
optionals = {}
|
474
|
+
requireds = {} #: Hash[Symbol, AST::Types::t]
|
475
|
+
optionals = {} #: Hash[Symbol, AST::Types::t]
|
476
476
|
|
477
477
|
all_keys = Set[] + self.requireds.keys + self.optionals.keys + other.requireds.keys + other.optionals.keys
|
478
478
|
all_keys.each do |key|
|
@@ -535,8 +535,8 @@ module Steep
|
|
535
535
|
|
536
536
|
# For union
|
537
537
|
def |(other)
|
538
|
-
requireds = {}
|
539
|
-
optionals = {}
|
538
|
+
requireds = {} #: Hash[Symbol, AST::Types::t]
|
539
|
+
optionals = {} #: Hash[Symbol, AST::Types::t]
|
540
540
|
|
541
541
|
all_keys = Set[] + self.requireds.keys + self.optionals.keys + other.requireds.keys + other.optionals.keys
|
542
542
|
all_keys.each do |key|
|
@@ -600,8 +600,8 @@ module Steep
|
|
600
600
|
|
601
601
|
# For intersection
|
602
602
|
def &(other)
|
603
|
-
requireds = {}
|
604
|
-
optionals = {}
|
603
|
+
requireds = {} #: Hash[Symbol, AST::Types::t]
|
604
|
+
optionals = {} #: Hash[Symbol, AST::Types::t]
|
605
605
|
|
606
606
|
all_keys = Set[] + self.requireds.keys + self.optionals.keys + other.requireds.keys + other.optionals.keys
|
607
607
|
all_keys.each do |key|
|
@@ -665,7 +665,7 @@ module Steep
|
|
665
665
|
end
|
666
666
|
|
667
667
|
def required
|
668
|
-
array = []
|
668
|
+
array = [] #: Array[AST::Types::t]
|
669
669
|
|
670
670
|
positional_params&.each do |param|
|
671
671
|
case param
|
@@ -680,7 +680,7 @@ module Steep
|
|
680
680
|
end
|
681
681
|
|
682
682
|
def optional
|
683
|
-
array = []
|
683
|
+
array = [] #: Array[AST::Types::t]
|
684
684
|
|
685
685
|
positional_params&.each do |param|
|
686
686
|
case param
|
data/lib/steep/project/dsl.rb
CHANGED
@@ -66,7 +66,7 @@ module Steep
|
|
66
66
|
def typing_options(level = nil, **hash)
|
67
67
|
Steep.logger.error "#typing_options is deprecated and has no effect as of version 0.46.0. Update your Steepfile as follows for (almost) equivalent setting:"
|
68
68
|
|
69
|
-
messages = []
|
69
|
+
messages = [] #: Array[String]
|
70
70
|
|
71
71
|
messages << "# D = Steep::Diagnostic # Define a constant to shorten namespace"
|
72
72
|
|
@@ -83,7 +83,7 @@ module Steep
|
|
83
83
|
Steep.logger.error " #{msg}"
|
84
84
|
end
|
85
85
|
|
86
|
-
config = []
|
86
|
+
config = [] #: Array[String]
|
87
87
|
|
88
88
|
if hash[:allow_missing_definitions]
|
89
89
|
config << "hash[D::Ruby::MethodDefinitionMissing] = nil # allow_missing_definitions"
|
@@ -143,27 +143,6 @@ module Steep
|
|
143
143
|
@repo_paths.push(*paths.map {|s| Pathname(s) })
|
144
144
|
end
|
145
145
|
|
146
|
-
# Configure the code diagnostics printing setup.
|
147
|
-
#
|
148
|
-
# Yields a hash, and the update the hash in the block.
|
149
|
-
#
|
150
|
-
# ```rb
|
151
|
-
# D = Steep::Diagnostic
|
152
|
-
#
|
153
|
-
# configure_code_diagnostics do |hash|
|
154
|
-
# # Assign one of :error, :warning, :information, :hint or :nil to error classes.
|
155
|
-
# hash[D::Ruby::UnexpectedPositionalArgument] = :error
|
156
|
-
# end
|
157
|
-
# ```
|
158
|
-
#
|
159
|
-
# Passing a hash is also allowed.
|
160
|
-
#
|
161
|
-
# ```rb
|
162
|
-
# D = Steep::Diagnostic
|
163
|
-
#
|
164
|
-
# configure_code_diagnostics(D::Ruby.lenient)
|
165
|
-
# ```
|
166
|
-
#
|
167
146
|
def configure_code_diagnostics(hash = nil)
|
168
147
|
if hash
|
169
148
|
code_diagnostics_config.merge!(hash)
|
@@ -122,7 +122,7 @@ module Steep
|
|
122
122
|
items = begin
|
123
123
|
provider.run(line: job.line, column: job.column)
|
124
124
|
rescue Parser::SyntaxError
|
125
|
-
[]
|
125
|
+
[] #: Array[Services::CompletionProvider::item]
|
126
126
|
end
|
127
127
|
|
128
128
|
completion_items = items.map do |item|
|
@@ -157,7 +157,7 @@ module Steep
|
|
157
157
|
locator = RBS::Locator.new(buffer: buffer, dirs: dirs, decls: decls)
|
158
158
|
|
159
159
|
_hd, tail = locator.find2(line: job.line, column: job.column)
|
160
|
-
tail ||= []
|
160
|
+
tail ||= [] #: Array[RBS::Locator::component]
|
161
161
|
|
162
162
|
tail.reverse_each do |t|
|
163
163
|
case t
|
data/lib/steep/source.rb
CHANGED
@@ -330,13 +330,12 @@ module Steep
|
|
330
330
|
def find_heredoc_nodes(line, column, position)
|
331
331
|
each_heredoc_node() do |nodes, location|
|
332
332
|
node = nodes[0]
|
333
|
+
loc = location.heredoc_body #: Parser::Source::Range
|
333
334
|
|
334
|
-
range =
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
if range && (range === position)
|
339
|
-
return nodes
|
335
|
+
if range = loc.to_range
|
336
|
+
if range.begin <= position && position <= range.end
|
337
|
+
return nodes
|
338
|
+
end
|
340
339
|
end
|
341
340
|
end
|
342
341
|
|
@@ -344,12 +343,10 @@ module Steep
|
|
344
343
|
end
|
345
344
|
|
346
345
|
def find_nodes_loc(node, position, parents)
|
347
|
-
range = node.location.expression&.
|
348
|
-
r.begin_pos..r.end_pos
|
349
|
-
end
|
346
|
+
range = node.location.expression&.to_range
|
350
347
|
|
351
348
|
if range
|
352
|
-
if range
|
349
|
+
if range.begin <= position && position <= range.end
|
353
350
|
parents.unshift node
|
354
351
|
|
355
352
|
Source.each_child_node(node) do |child|
|
@@ -366,9 +363,7 @@ module Steep
|
|
366
363
|
def find_nodes(line:, column:)
|
367
364
|
return [] unless node
|
368
365
|
|
369
|
-
position = (line
|
370
|
-
node.location.expression.source_buffer.source_line(i+1).size + 1
|
371
|
-
end + column
|
366
|
+
position = buffer.loc_to_pos([line, column])
|
372
367
|
|
373
368
|
if heredoc_nodes = find_heredoc_nodes(line, column, position)
|
374
369
|
Source.each_child_node(heredoc_nodes[0]) do |child|
|
@@ -430,7 +430,7 @@ module Steep
|
|
430
430
|
when AST::Types::Name::Singleton
|
431
431
|
singleton_super_types(relation.sub_type.name)
|
432
432
|
else
|
433
|
-
[]
|
433
|
+
[] #: Array[super_type]
|
434
434
|
end
|
435
435
|
|
436
436
|
unless possible_sub_types.empty?
|
@@ -743,7 +743,7 @@ module Steep
|
|
743
743
|
args.each {|arg| constraints.unknown!(arg.name) }
|
744
744
|
|
745
745
|
upper_bounds = {}
|
746
|
-
relations = []
|
746
|
+
relations = [] #: Array[Relation]
|
747
747
|
|
748
748
|
args.zip(sub_type.type_params, super_type.type_params).each do |arg, sub_param, sup_param|
|
749
749
|
sub_ub = sub_param.upper_bound
|
@@ -1778,7 +1778,10 @@ module Steep
|
|
1778
1778
|
yield_self do
|
1779
1779
|
left_node, right_node = node.children
|
1780
1780
|
|
1781
|
-
|
1781
|
+
if hint
|
1782
|
+
left_hint = union_type_unify(hint, AST::Builtin.nil_type, AST::Builtin.false_type)
|
1783
|
+
end
|
1784
|
+
left_type, constr, left_context = synthesize(left_node, hint: left_hint, condition: true).to_ary
|
1782
1785
|
|
1783
1786
|
interpreter = TypeInference::LogicTypeInterpreter.new(subtyping: checker, typing: typing, config: builder_config)
|
1784
1787
|
left_truthy, left_falsy = interpreter.eval(env: left_context.type_env, node: left_node)
|
@@ -1888,7 +1891,7 @@ module Steep
|
|
1888
1891
|
if loc.respond_to?(:keyword)
|
1889
1892
|
condition_loc = loc #: NodeHelper::condition_loc
|
1890
1893
|
case condition_loc.keyword.source
|
1891
|
-
when "if"
|
1894
|
+
when "if", "elsif"
|
1892
1895
|
location = condition_loc.begin || condition_loc.keyword
|
1893
1896
|
when "unless"
|
1894
1897
|
# `else` token always exists
|
@@ -1913,8 +1916,9 @@ module Steep
|
|
1913
1916
|
|
1914
1917
|
if loc.respond_to?(:keyword)
|
1915
1918
|
condition_loc = loc #: NodeHelper::condition_loc
|
1919
|
+
|
1916
1920
|
case condition_loc.keyword.source
|
1917
|
-
when "if"
|
1921
|
+
when "if", "elsif"
|
1918
1922
|
# `else` token always exists
|
1919
1923
|
location = condition_loc.else || raise
|
1920
1924
|
when "unless"
|
@@ -3103,27 +3107,29 @@ module Steep
|
|
3103
3107
|
|
3104
3108
|
type_hint = deep_expand_alias(type_hint) || type_hint
|
3105
3109
|
|
3106
|
-
|
3107
|
-
|
3108
|
-
|
3109
|
-
|
3110
|
+
unless type_hint.is_a?(AST::Types::Any)
|
3111
|
+
procs = flatten_union(type_hint).select do |type|
|
3112
|
+
check_relation(sub_type: type, super_type: AST::Builtin::Proc.instance_type).success? &&
|
3113
|
+
!type.is_a?(AST::Types::Any)
|
3114
|
+
end
|
3110
3115
|
|
3111
|
-
|
3116
|
+
proc_instances, proc_types = procs.partition {|type| AST::Builtin::Proc.instance_type?(type) }
|
3112
3117
|
|
3113
|
-
|
3114
|
-
|
3115
|
-
|
3116
|
-
|
3117
|
-
|
3118
|
-
|
3119
|
-
|
3120
|
-
|
3121
|
-
|
3122
|
-
|
3123
|
-
|
3124
|
-
|
3125
|
-
|
3126
|
-
|
3118
|
+
case
|
3119
|
+
when !proc_instances.empty? && proc_types.empty?
|
3120
|
+
# `::Proc` is given as a hint
|
3121
|
+
when proc_types.size == 1
|
3122
|
+
# Proc type is given as a hint
|
3123
|
+
hint_proc = proc_types[0] #: AST::Types::Proc
|
3124
|
+
params_hint = hint_proc.type.params
|
3125
|
+
return_hint = hint_proc.type.return_type
|
3126
|
+
block_hint = hint_proc.block
|
3127
|
+
self_hint = hint_proc.self_type
|
3128
|
+
else
|
3129
|
+
typing.add_error(
|
3130
|
+
Diagnostic::Ruby::ProcHintIgnored.new(hint_type: original_hint, node: node)
|
3131
|
+
)
|
3132
|
+
end
|
3127
3133
|
end
|
3128
3134
|
end
|
3129
3135
|
|
@@ -280,20 +280,22 @@ module Steep
|
|
280
280
|
when AST::Types::Logic::ReceiverIsNil
|
281
281
|
if receiver && arguments.size.zero?
|
282
282
|
receiver_type = typing.type_of(node: receiver)
|
283
|
-
|
283
|
+
unwrap = factory.unwrap_optional(receiver_type)
|
284
|
+
truthy_receiver = AST::Builtin.nil_type
|
285
|
+
falsy_receiver = unwrap || receiver_type
|
284
286
|
|
285
287
|
truthy_env, falsy_env = refine_node_type(
|
286
288
|
env: env,
|
287
289
|
node: receiver,
|
288
|
-
truthy_type:
|
289
|
-
falsy_type:
|
290
|
+
truthy_type: truthy_receiver,
|
291
|
+
falsy_type: falsy_receiver
|
290
292
|
)
|
291
293
|
|
292
294
|
truthy_result = Result.new(type: TRUE, env: truthy_env, unreachable: false)
|
293
|
-
truthy_result.unreachable!
|
295
|
+
truthy_result.unreachable! if unwrap == receiver_type
|
294
296
|
|
295
297
|
falsy_result = Result.new(type: FALSE, env: falsy_env, unreachable: false)
|
296
|
-
falsy_result.unreachable! unless
|
298
|
+
falsy_result.unreachable! unless unwrap
|
297
299
|
|
298
300
|
[truthy_result, falsy_result]
|
299
301
|
end
|
@@ -500,7 +502,7 @@ module Steep
|
|
500
502
|
type_case_select0(ty, klass)
|
501
503
|
end
|
502
504
|
|
503
|
-
when AST::Types::Any, AST::Types::Top
|
505
|
+
when AST::Types::Any, AST::Types::Top, AST::Types::Var
|
504
506
|
[
|
505
507
|
[instance_type],
|
506
508
|
[type]
|
@@ -9,7 +9,7 @@ module Steep
|
|
9
9
|
attr_reader :pure_method_calls
|
10
10
|
|
11
11
|
def to_s
|
12
|
-
array = []
|
12
|
+
array = [] #: Array[String]
|
13
13
|
|
14
14
|
local_variable_types.each do |name, entry|
|
15
15
|
if enforced_type = entry[1]
|
@@ -108,7 +108,7 @@ module Steep
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def assign_local_variables(assignments)
|
111
|
-
local_variable_types = {}
|
111
|
+
local_variable_types = {} #: Hash[Symbol, local_variable_entry]
|
112
112
|
invalidated_nodes = Set[]
|
113
113
|
|
114
114
|
assignments.each do |name, new_type|
|
@@ -135,7 +135,7 @@ module Steep
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def refine_types(local_variable_types: {}, pure_call_types: {})
|
138
|
-
local_variable_updates = {}
|
138
|
+
local_variable_updates = {} #: Hash[Symbol, local_variable_entry]
|
139
139
|
|
140
140
|
local_variable_types.each do |name, type|
|
141
141
|
local_variable_name!(name)
|
data/lib/steep/version.rb
CHANGED
data/sample/lib/conference.rb
CHANGED
@@ -2,7 +2,7 @@ module Steep
|
|
2
2
|
module AST
|
3
3
|
module Annotation
|
4
4
|
class Collection
|
5
|
-
attr_reader annotations:
|
5
|
+
attr_reader annotations: Array[Annotation::t]
|
6
6
|
|
7
7
|
attr_reader factory: Types::Factory
|
8
8
|
|
@@ -14,31 +14,34 @@ module Steep
|
|
14
14
|
|
15
15
|
attr_reader ivar_type_annotations: Hash[Symbol, IvarType]
|
16
16
|
|
17
|
-
attr_reader method_type_annotations:
|
17
|
+
attr_reader method_type_annotations: Hash[Symbol, MethodType?]
|
18
18
|
|
19
|
-
attr_reader block_type_annotation:
|
19
|
+
attr_reader block_type_annotation: BlockType?
|
20
20
|
|
21
|
-
attr_reader return_type_annotation:
|
21
|
+
attr_reader return_type_annotation: ReturnType?
|
22
22
|
|
23
|
-
attr_reader self_type_annotation:
|
23
|
+
attr_reader self_type_annotation: SelfType?
|
24
24
|
|
25
|
-
attr_reader instance_type_annotation:
|
25
|
+
attr_reader instance_type_annotation: InstanceType?
|
26
26
|
|
27
|
-
attr_reader module_type_annotation:
|
27
|
+
attr_reader module_type_annotation: ModuleType?
|
28
28
|
|
29
29
|
attr_reader implement_module_annotation: Implements?
|
30
30
|
|
31
|
-
attr_reader dynamic_annotations:
|
31
|
+
attr_reader dynamic_annotations: Array[Dynamic]
|
32
32
|
|
33
|
-
attr_reader break_type_annotation:
|
33
|
+
attr_reader break_type_annotation: BreakType?
|
34
34
|
|
35
|
-
def initialize: (annotations:
|
35
|
+
def initialize: (annotations: Array[Annotation::t], factory: Types::Factory, context: RBS::Resolver::context) -> void
|
36
36
|
|
37
|
-
def absolute_type: (
|
37
|
+
def absolute_type: (Types::t) -> Types::t
|
38
|
+
| (Types::t?) -> Types::t?
|
38
39
|
|
39
|
-
def var_type: (
|
40
|
+
def var_type: (lvar: Symbol) -> Types::t?
|
41
|
+
| (ivar: Symbol) -> Types::t?
|
42
|
+
| (const: RBS::TypeName) -> Types::t?
|
40
43
|
|
41
|
-
def method_type: (
|
44
|
+
def method_type: (Symbol name) -> Interface::MethodType?
|
42
45
|
|
43
46
|
%a{pure} def block_type: () -> Types::t?
|
44
47
|
|
@@ -52,23 +55,23 @@ module Steep
|
|
52
55
|
|
53
56
|
%a{pure} def break_type: () -> Types::t?
|
54
57
|
|
55
|
-
def lvar_types: () ->
|
58
|
+
def lvar_types: () -> Hash[Symbol, Types::t]
|
56
59
|
|
57
|
-
def ivar_types: () ->
|
60
|
+
def ivar_types: () -> Hash[Symbol, Types::t]
|
58
61
|
|
59
|
-
def const_types: () ->
|
62
|
+
def const_types: () -> Hash[RBS::TypeName, Types::t]
|
60
63
|
|
61
|
-
def instance_dynamics: () ->
|
64
|
+
def instance_dynamics: () -> Array[Symbol]
|
62
65
|
|
63
|
-
def module_dynamics: () ->
|
66
|
+
def module_dynamics: () -> Array[Symbol]
|
64
67
|
|
65
|
-
def merge_block_annotations: (
|
68
|
+
def merge_block_annotations: (Collection annotations) -> Collection
|
66
69
|
|
67
|
-
def any?: () { () ->
|
70
|
+
def any?: () { (Annotation::t) -> boolish } -> bool
|
68
71
|
|
69
|
-
def size: () ->
|
72
|
+
def size: () -> Integer
|
70
73
|
|
71
|
-
def include?: (
|
74
|
+
def include?: (Annotation::t obj) -> bool
|
72
75
|
end
|
73
76
|
end
|
74
77
|
end
|
@@ -77,13 +77,12 @@ module Steep
|
|
77
77
|
# Returns a type that doesn't have `nil` in the union component
|
78
78
|
#
|
79
79
|
# * Returns `nil` if given type is `nil`
|
80
|
-
# *
|
80
|
+
# * Expand (unfold) the type aliases automatically
|
81
81
|
#
|
82
82
|
# ```ruby
|
83
83
|
# unwrap_optional(`String?`) # => `String`
|
84
84
|
# unwrap_optional(`String | Integer | false | nil`) # => `String | Integer | false`
|
85
85
|
# unwrap_optional(`nil`) # => nil
|
86
|
-
# unwrap_optional(`boolish`) # => `boolish`
|
87
86
|
# ```
|
88
87
|
#
|
89
88
|
def unwrap_optional: (Types::t) -> Types::t?
|
@@ -546,11 +546,9 @@ module Steep
|
|
546
546
|
end
|
547
547
|
|
548
548
|
class UnexpectedError < Base
|
549
|
-
attr_reader
|
550
|
-
|
551
|
-
attr_reader error: untyped
|
549
|
+
attr_reader error: Exception
|
552
550
|
|
553
|
-
def initialize: (node:
|
551
|
+
def initialize: (node: Parser::AST::Node, error: Exception) -> void
|
554
552
|
|
555
553
|
def header_line: () -> ::String
|
556
554
|
end
|
@@ -623,7 +621,7 @@ module Steep
|
|
623
621
|
end
|
624
622
|
|
625
623
|
# RBS embedded in the Ruby code has validation error
|
626
|
-
#
|
624
|
+
#
|
627
625
|
class RBSError < Base
|
628
626
|
attr_reader error: Signature::Base
|
629
627
|
|
@@ -662,21 +660,35 @@ module Steep
|
|
662
660
|
|
663
661
|
ALL: Array[singleton(Base)]
|
664
662
|
|
665
|
-
type template = Hash[singleton(Base), LSPFormatter::severity]
|
663
|
+
type template = Hash[singleton(Base), LSPFormatter::severity?]
|
666
664
|
|
667
665
|
self.@all_error: template?
|
666
|
+
self.@default: template?
|
667
|
+
self.@strict: template?
|
668
|
+
self.@lenient: template?
|
669
|
+
self.@silent: template?
|
670
|
+
|
671
|
+
# This template reports everything as an error
|
672
|
+
#
|
668
673
|
def self.all_error: () -> template
|
669
674
|
|
670
|
-
|
675
|
+
# This template detects inconsistencies between RBS and Ruby code APIs
|
676
|
+
#
|
671
677
|
def self.default: () -> template
|
672
678
|
|
673
|
-
|
679
|
+
# This template helps you keeping your codebase (almost) type-safe
|
680
|
+
#
|
681
|
+
# You can start with this template to review the problems reported on the project,
|
682
|
+
# and you can ignore some kind of errors.
|
683
|
+
#
|
674
684
|
def self.strict: () -> template
|
675
685
|
|
676
|
-
|
686
|
+
# This template detects inconsistent definition in Ruby code with respect to your RBS definition
|
687
|
+
#
|
677
688
|
def self.lenient: () -> template
|
678
689
|
|
679
|
-
|
690
|
+
# This template reports nothing
|
691
|
+
#
|
680
692
|
def self.silent: () -> template
|
681
693
|
end
|
682
694
|
end
|
data/sig/steep/project/dsl.rbs
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
use Steep::Diagnostic::Ruby::template
|
2
|
+
|
1
3
|
module Steep
|
2
4
|
class Project
|
3
5
|
class DSL
|
@@ -71,10 +73,13 @@ module Steep
|
|
71
73
|
# D = Steep::Diagnostic
|
72
74
|
#
|
73
75
|
# configure_code_diagnostics(D::Ruby.lenient)
|
76
|
+
# configure_code_diagnostics(D::Ruby.strict) do |config|
|
77
|
+
# config[D::Ruby::NoMethod] = nil
|
78
|
+
# end
|
74
79
|
# ```
|
75
80
|
#
|
76
|
-
def configure_code_diagnostics: (
|
77
|
-
| () { (
|
81
|
+
def configure_code_diagnostics: (template hash) ?{ (template) -> void }-> void
|
82
|
+
| () { (template) -> void }-> void
|
78
83
|
|
79
84
|
def collection_config: (Pathname path) -> void
|
80
85
|
|
@@ -1,16 +1,4 @@
|
|
1
1
|
---
|
2
|
-
- file: unexpected.rb
|
3
|
-
diagnostics:
|
4
|
-
- range:
|
5
|
-
start:
|
6
|
-
line: 1
|
7
|
-
character: 0
|
8
|
-
end:
|
9
|
-
line: 1
|
10
|
-
character: 14
|
11
|
-
severity: ERROR
|
12
|
-
message: 'UnexpectedError: unexpected.rbs:2:17...2:24: Could not find String1'
|
13
|
-
code: Ruby::UnexpectedError
|
14
2
|
- file: unexpected.rbs
|
15
3
|
diagnostics:
|
16
4
|
- range:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -266,7 +266,6 @@ files:
|
|
266
266
|
- lib/steep/ast/builtin.rb
|
267
267
|
- lib/steep/ast/node/type_application.rb
|
268
268
|
- lib/steep/ast/node/type_assertion.rb
|
269
|
-
- lib/steep/ast/type_params.rb
|
270
269
|
- lib/steep/ast/types/any.rb
|
271
270
|
- lib/steep/ast/types/boolean.rb
|
272
271
|
- lib/steep/ast/types/bot.rb
|
@@ -401,7 +400,6 @@ files:
|
|
401
400
|
- sig/steep/ast/builtin.rbs
|
402
401
|
- sig/steep/ast/node/type_application.rbs
|
403
402
|
- sig/steep/ast/node/type_assertion.rbs
|
404
|
-
- sig/steep/ast/type_params.rbs
|
405
403
|
- sig/steep/ast/types.rbs
|
406
404
|
- sig/steep/ast/types/any.rbs
|
407
405
|
- sig/steep/ast/types/boolean.rbs
|
@@ -757,7 +755,6 @@ files:
|
|
757
755
|
- smoke/type_case/test_expectations.yml
|
758
756
|
- smoke/unexpected/Steepfile
|
759
757
|
- smoke/unexpected/test_expectations.yml
|
760
|
-
- smoke/unexpected/unexpected.rb
|
761
758
|
- smoke/unexpected/unexpected.rbs
|
762
759
|
- smoke/yield/Steepfile
|
763
760
|
- smoke/yield/a.rb
|
@@ -782,9 +779,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
782
779
|
version: 2.7.0
|
783
780
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
784
781
|
requirements:
|
785
|
-
- - "
|
782
|
+
- - ">="
|
786
783
|
- !ruby/object:Gem::Version
|
787
|
-
version:
|
784
|
+
version: '0'
|
788
785
|
requirements: []
|
789
786
|
rubygems_version: 3.4.10
|
790
787
|
signing_key:
|
@@ -1 +0,0 @@
|
|
1
|
-
Unexpected.new.foo().bar
|