typeprof 0.2.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +1 -2
- data/.gitignore +1 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +10 -21
- data/LICENSE +21 -0
- data/README.md +6 -0
- data/doc/demo.md +398 -0
- data/doc/doc.ja.md +6 -1
- data/doc/doc.md +7 -2
- data/exe/typeprof +2 -1
- data/lib/typeprof.rb +9 -0
- data/lib/typeprof/analyzer.rb +427 -325
- data/lib/typeprof/arguments.rb +405 -0
- data/lib/typeprof/block.rb +136 -0
- data/lib/typeprof/builtin.rb +36 -25
- data/lib/typeprof/cli.rb +51 -98
- data/lib/typeprof/config.rb +114 -0
- data/lib/typeprof/container-type.rb +280 -92
- data/lib/typeprof/export.rb +197 -108
- data/lib/typeprof/import.rb +134 -80
- data/lib/typeprof/iseq.rb +42 -1
- data/lib/typeprof/method.rb +178 -82
- data/lib/typeprof/type.rb +228 -369
- data/lib/typeprof/utils.rb +4 -18
- data/lib/typeprof/version.rb +3 -0
- data/smoke/arguments2.rb +55 -0
- data/smoke/array-each3.rb +1 -4
- data/smoke/array12.rb +1 -1
- data/smoke/array6.rb +1 -0
- data/smoke/block-ambiguous.rb +36 -0
- data/smoke/block-args1-rest.rb +62 -0
- data/smoke/block-args1.rb +59 -0
- data/smoke/block-args2-rest.rb +62 -0
- data/smoke/block-args2.rb +59 -0
- data/smoke/block-args3-rest.rb +73 -0
- data/smoke/block-args3.rb +70 -0
- data/smoke/block-blockarg.rb +27 -0
- data/smoke/block-kwarg.rb +52 -0
- data/smoke/block10.rb +1 -1
- data/smoke/block11.rb +1 -1
- data/smoke/block14.rb +17 -0
- data/smoke/block4.rb +2 -2
- data/smoke/block5.rb +1 -0
- data/smoke/block6.rb +1 -1
- data/smoke/block7.rb +0 -2
- data/smoke/block8.rb +2 -2
- data/smoke/block9.rb +1 -1
- data/smoke/blown.rb +1 -1
- data/smoke/class-hierarchy.rb +54 -0
- data/smoke/class-hierarchy2.rb +27 -0
- data/smoke/constant1.rb +11 -6
- data/smoke/constant2.rb +2 -0
- data/smoke/cvar.rb +1 -0
- data/smoke/demo10.rb +1 -1
- data/smoke/demo8.rb +2 -2
- data/smoke/demo9.rb +1 -3
- data/smoke/flow7.rb +1 -7
- data/smoke/flow8.rb +13 -0
- data/smoke/hash-fetch.rb +3 -3
- data/smoke/hash-merge-bang.rb +11 -0
- data/smoke/hash1.rb +1 -1
- data/smoke/hash3.rb +1 -1
- data/smoke/hash4.rb +1 -1
- data/smoke/instance_eval.rb +1 -1
- data/smoke/int_times.rb +1 -1
- data/smoke/ivar2.rb +1 -1
- data/smoke/keyword3.rb +1 -2
- data/smoke/keyword4.rb +1 -1
- data/smoke/kwsplat1.rb +1 -1
- data/smoke/kwsplat2.rb +1 -1
- data/smoke/module4.rb +2 -0
- data/smoke/multiple-superclass.rb +4 -0
- data/smoke/next2.rb +1 -1
- data/smoke/optional1.rb +1 -1
- data/smoke/optional2.rb +1 -1
- data/smoke/optional3.rb +10 -0
- data/smoke/pattern-match1.rb +23 -0
- data/smoke/pattern-match2.rb +15 -0
- data/smoke/proc4.rb +1 -1
- data/smoke/rbs-extend.rb +9 -0
- data/smoke/rbs-extend.rbs +7 -0
- data/smoke/rbs-interface.rb +24 -0
- data/smoke/rbs-interface.rbs +12 -0
- data/smoke/rbs-proc1.rb +9 -0
- data/smoke/rbs-proc1.rbs +3 -0
- data/smoke/rbs-proc2.rb +20 -0
- data/smoke/rbs-proc2.rbs +3 -0
- data/smoke/rbs-proc3.rb +13 -0
- data/smoke/rbs-proc3.rbs +4 -0
- data/smoke/rbs-record.rb +17 -0
- data/smoke/rbs-record.rbs +4 -0
- data/smoke/rbs-tyvar.rb +18 -0
- data/smoke/rbs-tyvar.rbs +5 -0
- data/smoke/rbs-tyvar2.rb +20 -0
- data/smoke/rbs-tyvar2.rbs +9 -0
- data/smoke/rbs-tyvar3.rb +17 -0
- data/smoke/rbs-tyvar3.rbs +5 -0
- data/smoke/rbs-tyvar4.rb +36 -0
- data/smoke/rbs-tyvar5.rb +12 -0
- data/smoke/rbs-tyvar5.rbs +8 -0
- data/smoke/rest1.rb +1 -1
- data/smoke/rest2.rb +1 -1
- data/smoke/rest3.rb +1 -1
- data/smoke/rest5.rb +1 -1
- data/smoke/rest6.rb +1 -1
- data/smoke/retry1.rb +1 -1
- data/smoke/return.rb +1 -1
- data/smoke/singleton_method.rb +3 -0
- data/smoke/step.rb +1 -1
- data/smoke/struct.rb +4 -3
- data/smoke/struct3.rb +14 -0
- data/smoke/symbol-proc.rb +24 -0
- data/smoke/uninitialize-var.rb +12 -0
- data/smoke/user-demo.rb +15 -0
- data/smoke/wrong-extend.rb +1 -0
- data/typeprof.gemspec +4 -2
- metadata +53 -6
- data/run.sh +0 -3
- data/smoke/variadic1.rb.notyet +0 -5
data/smoke/rbs-tyvar5.rb
ADDED
data/smoke/rest1.rb
CHANGED
|
@@ -21,5 +21,5 @@ __END__
|
|
|
21
21
|
# Classes
|
|
22
22
|
class Object
|
|
23
23
|
def foo : (:a | Integer | String, *Integer | String, :z | Integer | String) -> (Array[Integer | String])
|
|
24
|
-
def bar : (String, ?String, *String, String) -> Array[String]
|
|
24
|
+
def bar : (String, ?Integer | String, *String, String) -> Array[String]
|
|
25
25
|
end
|
data/smoke/rest2.rb
CHANGED
|
@@ -26,5 +26,5 @@ foo(*a)
|
|
|
26
26
|
__END__
|
|
27
27
|
# Classes
|
|
28
28
|
class Object
|
|
29
|
-
def foo : (
|
|
29
|
+
def foo : (Integer, String, :s) -> [Integer, String, :s]
|
|
30
30
|
end
|
data/smoke/rest3.rb
CHANGED
|
@@ -32,5 +32,5 @@ class Object
|
|
|
32
32
|
def baz : (String, *String) -> nil
|
|
33
33
|
def qux : (Integer, *String) -> nil
|
|
34
34
|
def corge : (*Integer | String, Integer | String) -> nil
|
|
35
|
-
def grault : (String, ?String, *String, String) -> nil
|
|
35
|
+
def grault : (String, ?Integer | String, *String, String) -> nil
|
|
36
36
|
end
|
data/smoke/rest5.rb
CHANGED
data/smoke/rest6.rb
CHANGED
data/smoke/retry1.rb
CHANGED
data/smoke/return.rb
CHANGED
data/smoke/singleton_method.rb
CHANGED
data/smoke/step.rb
CHANGED
data/smoke/struct.rb
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
# tentative
|
|
1
|
+
# tentative: Currently, the hidden instance variable belongs to Foo, not Anonymous Struct.
|
|
2
|
+
# Thus, it outputs "untyped"
|
|
2
3
|
class Foo < Struct.new(:a)
|
|
3
4
|
end
|
|
4
5
|
Foo.new.a = 1
|
|
5
6
|
__END__
|
|
6
7
|
# Classes
|
|
7
|
-
class (Struct) < Struct
|
|
8
|
+
class (Anonymous Struct) < Struct
|
|
8
9
|
attr_accessor a() : untyped
|
|
9
10
|
end
|
|
10
11
|
|
|
11
|
-
class Foo < (Struct)
|
|
12
|
+
class Foo < (Anonymous Struct)
|
|
12
13
|
end
|
data/smoke/struct3.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
def foo
|
|
2
|
+
[1, :sym, "str"].map(&:to_s)
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
class Foo
|
|
6
|
+
def foo
|
|
7
|
+
:foo
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def bar
|
|
12
|
+
[Foo.new].map(&:foo)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
__END__
|
|
16
|
+
# Classes
|
|
17
|
+
class Object
|
|
18
|
+
def foo : -> Array[String]
|
|
19
|
+
def bar : -> Array[:foo]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Foo
|
|
23
|
+
def foo : -> :foo
|
|
24
|
+
end
|
data/smoke/user-demo.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class User
|
|
2
|
+
def foo(name: "str", age: 0)
|
|
3
|
+
@name, @age = name, age
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
attr_reader :name, :age
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
__END__
|
|
10
|
+
# Classes
|
|
11
|
+
class User
|
|
12
|
+
attr_reader name : String | untyped
|
|
13
|
+
attr_reader age : Integer | untyped
|
|
14
|
+
def foo : (?name: String | untyped, ?age: Integer | untyped) -> ([String | untyped, Integer | untyped])
|
|
15
|
+
end
|
data/smoke/wrong-extend.rb
CHANGED
data/typeprof.gemspec
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
require_relative 'lib/typeprof/version'
|
|
2
|
+
|
|
1
3
|
Gem::Specification.new do |spec|
|
|
2
4
|
spec.name = "typeprof" # temporal
|
|
3
|
-
spec.version =
|
|
5
|
+
spec.version = TypeProf::VERSION
|
|
4
6
|
spec.authors = ["Yusuke Endoh"]
|
|
5
7
|
spec.email = ["mame@ruby-lang.org"]
|
|
6
8
|
|
|
@@ -28,5 +30,5 @@ Gem::Specification.new do |spec|
|
|
|
28
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
29
31
|
spec.require_paths = ["lib"]
|
|
30
32
|
|
|
31
|
-
spec.add_runtime_dependency "rbs", ">= 0.
|
|
33
|
+
spec.add_runtime_dependency "rbs", ">= 0.16.0"
|
|
32
34
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: typeprof
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yusuke Endoh
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-11-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rbs
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
19
|
+
version: 0.16.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.
|
|
26
|
+
version: 0.16.0
|
|
27
27
|
description: |
|
|
28
28
|
TypeProf performs a type analysis of non-annotated Ruby code.
|
|
29
29
|
|
|
@@ -41,16 +41,21 @@ files:
|
|
|
41
41
|
- ".gitignore"
|
|
42
42
|
- Gemfile
|
|
43
43
|
- Gemfile.lock
|
|
44
|
+
- LICENSE
|
|
44
45
|
- README.md
|
|
45
46
|
- Rakefile
|
|
47
|
+
- doc/demo.md
|
|
46
48
|
- doc/doc.ja.md
|
|
47
49
|
- doc/doc.md
|
|
48
50
|
- doc/ppl2019.pdf
|
|
49
51
|
- exe/typeprof
|
|
50
52
|
- lib/typeprof.rb
|
|
51
53
|
- lib/typeprof/analyzer.rb
|
|
54
|
+
- lib/typeprof/arguments.rb
|
|
55
|
+
- lib/typeprof/block.rb
|
|
52
56
|
- lib/typeprof/builtin.rb
|
|
53
57
|
- lib/typeprof/cli.rb
|
|
58
|
+
- lib/typeprof/config.rb
|
|
54
59
|
- lib/typeprof/container-type.rb
|
|
55
60
|
- lib/typeprof/export.rb
|
|
56
61
|
- lib/typeprof/import.rb
|
|
@@ -59,13 +64,14 @@ files:
|
|
|
59
64
|
- lib/typeprof/method.rb
|
|
60
65
|
- lib/typeprof/type.rb
|
|
61
66
|
- lib/typeprof/utils.rb
|
|
62
|
-
-
|
|
67
|
+
- lib/typeprof/version.rb
|
|
63
68
|
- smoke/alias.rb
|
|
64
69
|
- smoke/alias2.rb
|
|
65
70
|
- smoke/any-cbase.rb
|
|
66
71
|
- smoke/any1.rb
|
|
67
72
|
- smoke/any2.rb
|
|
68
73
|
- smoke/arguments.rb
|
|
74
|
+
- smoke/arguments2.rb
|
|
69
75
|
- smoke/array-each.rb
|
|
70
76
|
- smoke/array-each2.rb
|
|
71
77
|
- smoke/array-each3.rb
|
|
@@ -96,12 +102,22 @@ files:
|
|
|
96
102
|
- smoke/array9.rb
|
|
97
103
|
- smoke/attr.rb
|
|
98
104
|
- smoke/backtrace.rb
|
|
105
|
+
- smoke/block-ambiguous.rb
|
|
106
|
+
- smoke/block-args1-rest.rb
|
|
107
|
+
- smoke/block-args1.rb
|
|
108
|
+
- smoke/block-args2-rest.rb
|
|
109
|
+
- smoke/block-args2.rb
|
|
110
|
+
- smoke/block-args3-rest.rb
|
|
111
|
+
- smoke/block-args3.rb
|
|
112
|
+
- smoke/block-blockarg.rb
|
|
113
|
+
- smoke/block-kwarg.rb
|
|
99
114
|
- smoke/block1.rb
|
|
100
115
|
- smoke/block10.rb
|
|
101
116
|
- smoke/block11.rb
|
|
102
117
|
- smoke/block12.rb
|
|
103
118
|
- smoke/block13.rb
|
|
104
119
|
- smoke/block13.rbs
|
|
120
|
+
- smoke/block14.rb
|
|
105
121
|
- smoke/block2.rb
|
|
106
122
|
- smoke/block3.rb
|
|
107
123
|
- smoke/block4.rb
|
|
@@ -115,6 +131,8 @@ files:
|
|
|
115
131
|
- smoke/break2.rb
|
|
116
132
|
- smoke/case.rb
|
|
117
133
|
- smoke/case2.rb
|
|
134
|
+
- smoke/class-hierarchy.rb
|
|
135
|
+
- smoke/class-hierarchy2.rb
|
|
118
136
|
- smoke/class.rb
|
|
119
137
|
- smoke/class_instance_var.rb
|
|
120
138
|
- smoke/class_method.rb
|
|
@@ -153,6 +171,7 @@ files:
|
|
|
153
171
|
- smoke/flow5.rb
|
|
154
172
|
- smoke/flow6.rb
|
|
155
173
|
- smoke/flow7.rb
|
|
174
|
+
- smoke/flow8.rb
|
|
156
175
|
- smoke/for.rb
|
|
157
176
|
- smoke/freeze.rb
|
|
158
177
|
- smoke/function.rb
|
|
@@ -160,6 +179,7 @@ files:
|
|
|
160
179
|
- smoke/gvar2.rb
|
|
161
180
|
- smoke/gvar2.rbs
|
|
162
181
|
- smoke/hash-fetch.rb
|
|
182
|
+
- smoke/hash-merge-bang.rb
|
|
163
183
|
- smoke/hash1.rb
|
|
164
184
|
- smoke/hash2.rb
|
|
165
185
|
- smoke/hash3.rb
|
|
@@ -207,9 +227,12 @@ files:
|
|
|
207
227
|
- smoke/once.rb
|
|
208
228
|
- smoke/optional1.rb
|
|
209
229
|
- smoke/optional2.rb
|
|
230
|
+
- smoke/optional3.rb
|
|
210
231
|
- smoke/parameterizedd-self.rb
|
|
211
232
|
- smoke/pathname1.rb
|
|
212
233
|
- smoke/pathname2.rb
|
|
234
|
+
- smoke/pattern-match1.rb
|
|
235
|
+
- smoke/pattern-match2.rb
|
|
213
236
|
- smoke/printf.rb
|
|
214
237
|
- smoke/proc.rb
|
|
215
238
|
- smoke/proc2.rb
|
|
@@ -220,6 +243,27 @@ files:
|
|
|
220
243
|
- smoke/rbs-alias.rbs
|
|
221
244
|
- smoke/rbs-attr.rb
|
|
222
245
|
- smoke/rbs-attr.rbs
|
|
246
|
+
- smoke/rbs-extend.rb
|
|
247
|
+
- smoke/rbs-extend.rbs
|
|
248
|
+
- smoke/rbs-interface.rb
|
|
249
|
+
- smoke/rbs-interface.rbs
|
|
250
|
+
- smoke/rbs-proc1.rb
|
|
251
|
+
- smoke/rbs-proc1.rbs
|
|
252
|
+
- smoke/rbs-proc2.rb
|
|
253
|
+
- smoke/rbs-proc2.rbs
|
|
254
|
+
- smoke/rbs-proc3.rb
|
|
255
|
+
- smoke/rbs-proc3.rbs
|
|
256
|
+
- smoke/rbs-record.rb
|
|
257
|
+
- smoke/rbs-record.rbs
|
|
258
|
+
- smoke/rbs-tyvar.rb
|
|
259
|
+
- smoke/rbs-tyvar.rbs
|
|
260
|
+
- smoke/rbs-tyvar2.rb
|
|
261
|
+
- smoke/rbs-tyvar2.rbs
|
|
262
|
+
- smoke/rbs-tyvar3.rb
|
|
263
|
+
- smoke/rbs-tyvar3.rbs
|
|
264
|
+
- smoke/rbs-tyvar4.rb
|
|
265
|
+
- smoke/rbs-tyvar5.rb
|
|
266
|
+
- smoke/rbs-tyvar5.rbs
|
|
223
267
|
- smoke/rbs-vars.rb
|
|
224
268
|
- smoke/rbs-vars.rbs
|
|
225
269
|
- smoke/redo1.rb
|
|
@@ -244,17 +288,20 @@ files:
|
|
|
244
288
|
- smoke/string-split.rb
|
|
245
289
|
- smoke/struct.rb
|
|
246
290
|
- smoke/struct2.rb
|
|
291
|
+
- smoke/struct3.rb
|
|
247
292
|
- smoke/super1.rb
|
|
248
293
|
- smoke/super2.rb
|
|
249
294
|
- smoke/super3.rb
|
|
250
295
|
- smoke/svar1.rb
|
|
296
|
+
- smoke/symbol-proc.rb
|
|
251
297
|
- smoke/tap1.rb
|
|
252
298
|
- smoke/toplevel.rb
|
|
253
299
|
- smoke/two-map.rb
|
|
254
300
|
- smoke/type_var.rb
|
|
255
301
|
- smoke/typed_method.rb
|
|
302
|
+
- smoke/uninitialize-var.rb
|
|
256
303
|
- smoke/union-recv.rb
|
|
257
|
-
- smoke/
|
|
304
|
+
- smoke/user-demo.rb
|
|
258
305
|
- smoke/wrong-extend.rb
|
|
259
306
|
- smoke/wrong-include.rb
|
|
260
307
|
- smoke/wrong-rbs.rb
|
data/run.sh
DELETED