steep 1.3.0 → 1.4.0.dev.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f878620b37610ff6bb38ba9f71c8275ebebf1a119969acca92dae226e9e82371
4
- data.tar.gz: e5cfe0950b4cfe16d3ac2aeb0992601b5a0b43315736b637cae05792b0774bb9
3
+ metadata.gz: bdccb93c5fd95bbc2e6af98021d0beadfb7aab30f3b398cb9e8414d5ea0e6f38
4
+ data.tar.gz: 6dfab6ba13555e6a6c37c69950383e1e7608c21bc26eacf1a695de91a5fe6293
5
5
  SHA512:
6
- metadata.gz: c81207ff4dd7893ccc4680b4d6bc1c74b36a59badbfac8c08f02f7ecb6e17f887bc440f40c2dcfe840f219df003c384d0365f54b55340c2ddce771492945b232
7
- data.tar.gz: bca9c65b22080f4d8e4f8cf162146a7868f520f4f13e34c22e79a95e5ba81f186b914f422afb89918c6d095d896badcd07832a731d8dd0cd152a908a6f7a71ad
6
+ metadata.gz: c09f6cd8780f428305edc405885c4080816470c05815515c8005e368532146b1e99e939699b3ff835d6909a2beeae074e38b79a1c8e2121652d008fc2f759316
7
+ data.tar.gz: a579bca90d0a7cd5a689068e7de97ca2d5ac9d7d40ccd291d2b61df57f519997bbf8c3e376904b4369c256aac75b62a5ee89915940436ded62c68212a4926e50
@@ -14,6 +14,7 @@ jobs:
14
14
  - "2.7"
15
15
  - "3.0"
16
16
  - "3.1"
17
+ - "3.2"
17
18
  task:
18
19
  - test
19
20
  # - test:output Ignored because the order of diagnostics changes somehow
@@ -11,10 +11,10 @@ jobs:
11
11
  strategy:
12
12
  matrix:
13
13
  container_tag:
14
- - "2.6"
15
14
  - "2.7"
16
15
  - "3.0"
17
16
  - "3.1"
17
+ - "3.2"
18
18
  - "master-nightly-focal"
19
19
  task:
20
20
  - test
@@ -25,10 +25,6 @@ jobs:
25
25
  image: rubylang/ruby:${{ matrix.container_tag }}
26
26
  steps:
27
27
  - uses: actions/checkout@v3
28
- - name: Reset bundler
29
- run: |
30
- rm Gemfile.lock Gemfile.steep.lock
31
- if: contains(matrix.container_tag, '2.6')
32
28
  - name: Run test
33
29
  run: |
34
30
  git config --global --add safe.directory /__w/steep/steep
data/Gemfile CHANGED
@@ -3,6 +3,8 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in steep.gemspec
4
4
  gemspec
5
5
 
6
+ gem "rbs", "~>3.0.0.dev"
7
+
6
8
  gem "rake"
7
9
  gem "minitest", "~> 5.16"
8
10
  gem "minitest-hooks"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steep (1.3.0)
4
+ steep (1.4.0.dev.1)
5
5
  activesupport (>= 5.1)
6
6
  csv (>= 3.0.9)
7
7
  fileutils (>= 1.1.0)
@@ -11,6 +11,7 @@ PATH
11
11
  logger (>= 1.3.0)
12
12
  parallel (>= 1.0.0)
13
13
  parser (>= 3.1)
14
+ pathname (>= 0.2.1)
14
15
  rainbow (>= 2.2.2, < 4.0)
15
16
  rbs (>= 2.8.0)
16
17
  securerandom (>= 0.1)
@@ -27,44 +28,45 @@ GEM
27
28
  tzinfo (~> 2.0)
28
29
  ast (2.4.2)
29
30
  concurrent-ruby (1.1.10)
30
- csv (3.2.5)
31
+ csv (3.2.6)
31
32
  debase (0.2.5.beta2)
32
33
  debase-ruby_core_source (>= 0.10.12)
33
- debase-ruby_core_source (0.10.16)
34
+ debase-ruby_core_source (3.2.0)
34
35
  ffi (1.15.5)
35
- fileutils (1.6.0)
36
+ fileutils (1.7.0)
36
37
  i18n (1.12.0)
37
38
  concurrent-ruby (~> 1.0)
38
- json (2.6.2)
39
- language_server-protocol (3.17.0.1)
39
+ json (2.6.3)
40
+ language_server-protocol (3.17.0.2)
40
41
  listen (3.7.1)
41
42
  rb-fsevent (~> 0.10, >= 0.10.3)
42
43
  rb-inotify (~> 0.9, >= 0.9.10)
43
- logger (1.5.1)
44
+ logger (1.5.3)
44
45
  minitest (5.16.3)
45
46
  minitest-hooks (1.5.0)
46
47
  minitest (> 5.3)
47
48
  minitest-slow_test (0.2.0)
48
49
  minitest (>= 5.0)
49
50
  parallel (1.22.1)
50
- parser (3.1.2.1)
51
+ parser (3.2.0.0)
51
52
  ast (~> 2.4.1)
53
+ pathname (0.2.1)
52
54
  rainbow (3.1.1)
53
55
  rake (13.0.6)
54
56
  rb-fsevent (0.11.2)
55
57
  rb-inotify (0.10.1)
56
58
  ffi (~> 1.0)
57
- rbs (2.8.0)
59
+ rbs (3.0.0.dev.1)
58
60
  ruby-debug-ide (0.7.3)
59
61
  rake (>= 0.8.1)
60
- securerandom (0.2.0)
61
- stackprof (0.2.22)
62
- strscan (3.0.4)
62
+ securerandom (0.2.2)
63
+ stackprof (0.2.23)
64
+ strscan (3.0.5)
63
65
  terminal-table (3.0.2)
64
66
  unicode-display_width (>= 1.1.1, < 3)
65
67
  tzinfo (2.0.5)
66
68
  concurrent-ruby (~> 1.0)
67
- unicode-display_width (2.3.0)
69
+ unicode-display_width (2.4.2)
68
70
 
69
71
  PLATFORMS
70
72
  ruby
@@ -75,6 +77,7 @@ DEPENDENCIES
75
77
  minitest-hooks
76
78
  minitest-slow_test
77
79
  rake
80
+ rbs (~> 3.0.0.dev)
78
81
  ruby-debug-ide
79
82
  stackprof
80
83
  steep!
data/Gemfile.steep CHANGED
@@ -1,3 +1,4 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'steep', '~> 1.3.0.pre'
3
+ gem 'steep', '~> 1.3.0'
4
+ gem "rbs", "~> 3.0.0.dev"
data/Gemfile.steep.lock CHANGED
@@ -27,9 +27,9 @@ GEM
27
27
  rb-fsevent (0.11.2)
28
28
  rb-inotify (0.10.1)
29
29
  ffi (~> 1.0)
30
- rbs (2.8.0)
30
+ rbs (3.0.0.dev.1)
31
31
  securerandom (0.2.0)
32
- steep (1.3.0.pre.2)
32
+ steep (1.3.0)
33
33
  activesupport (>= 5.1)
34
34
  csv (>= 3.0.9)
35
35
  fileutils (>= 1.1.0)
@@ -40,7 +40,7 @@ GEM
40
40
  parallel (>= 1.0.0)
41
41
  parser (>= 3.1)
42
42
  rainbow (>= 2.2.2, < 4.0)
43
- rbs (>= 2.8.0.pre)
43
+ rbs (>= 2.8.0)
44
44
  securerandom (>= 0.1)
45
45
  strscan (>= 1.0.0)
46
46
  terminal-table (>= 2, < 4)
@@ -55,7 +55,8 @@ PLATFORMS
55
55
  arm64-darwin-21
56
56
 
57
57
  DEPENDENCIES
58
- steep (~> 1.3.0.pre)
58
+ rbs (~> 3.0.0.dev)
59
+ steep (~> 1.3.0)
59
60
 
60
61
  BUNDLED WITH
61
62
  2.3.15
data/bin/rbs ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env bash
2
+
3
+ BINSTUB_DIR=$(cd $(dirname $0); pwd)
4
+ GEMFILE=$(readlink -f ${BINSTUB_DIR}/../Gemfile.steep)
5
+ COLLECTION=$(readlink -f ${BINSTUB_DIR}/../rbs_collection.steep.yaml)
6
+ ROOT_DIR=$(readlink -f ${BINSTUB_DIR}/..)
7
+
8
+ RBS="bundle exec --gemfile=${GEMFILE} rbs --collection=${COLLECTION}"
9
+
10
+ if type "rbenv" > /dev/null 2>&1; then
11
+ RBS="rbenv exec ${RBS}"
12
+ else
13
+ if type "rvm" > /dev/null 2>&1; then
14
+ if [ -e ${ROOT_DIR}/.ruby-version ]; then
15
+ RBS="rvm ${ROOT_DIR} do ${RBS}"
16
+ fi
17
+ fi
18
+ fi
19
+
20
+ exec $RBS $@
21
+
data/bin/setup CHANGED
@@ -6,4 +6,4 @@ set -vx
6
6
  bundle install
7
7
 
8
8
  bundle install --gemfile=Gemfile.steep
9
- bundle exec --gemfile=Gemfile.steep rbs --collection=rbs_collection.steep.yaml collection install
9
+ bin/rbs collection install
@@ -148,7 +148,7 @@ module Steep
148
148
  end
149
149
 
150
150
  def each_entry(&block)
151
- if block_given?
151
+ if block
152
152
  type_index.each_value(&block)
153
153
  method_index.each_value(&block)
154
154
  const_index.each_value(&block)
@@ -176,7 +176,7 @@ module Steep
176
176
 
177
177
  def each_declaration(type_name: nil, method_name: nil, const_name: nil, global_name: nil, &block)
178
178
  if block
179
- entry = entry(type_name: type_name, method_name: method_name, const_name: const_name, global_name: global_name)
179
+ entry = __skip__ = entry(type_name: type_name, method_name: method_name, const_name: const_name, global_name: global_name)
180
180
  entry.declarations.each(&block)
181
181
  else
182
182
  enum_for(:each_declaration, type_name: type_name, method_name: method_name, const_name: const_name, global_name: global_name)
@@ -187,9 +187,12 @@ module Steep
187
187
  entry(type_name: type_name).add_reference(ref)
188
188
  end
189
189
 
190
- def each_reference(type_name: nil, &block)
190
+ def each_reference(type_name:, &block)
191
191
  if block
192
- entry(type_name: type_name).references.each(&block)
192
+ case
193
+ when type_name
194
+ entry(type_name: type_name).references.each(&block)
195
+ end
193
196
  else
194
197
  enum_for(:each_reference, type_name: type_name)
195
198
  end
@@ -205,8 +208,8 @@ module Steep
205
208
  def member(type_name, member)
206
209
  case member
207
210
  when RBS::AST::Members::MethodDefinition
208
- member.types.each do |method_type|
209
- method_type.each_type do |type|
211
+ member.overloads.each do |overload|
212
+ overload.method_type.each_type do |type|
210
213
  type_reference type, from: member
211
214
  end
212
215
  end
@@ -230,6 +233,8 @@ module Steep
230
233
  InstanceMethodName.new(type_name: type_name, method_name: member.name)
231
234
  when :singleton
232
235
  SingletonMethodName.new(type_name: type_name, method_name: member.name)
236
+ else
237
+ raise
233
238
  end
234
239
  index.add_method_declaration(method_name, member)
235
240
  end
@@ -240,6 +245,8 @@ module Steep
240
245
  InstanceMethodName.new(type_name: type_name, method_name: "#{member.name}=".to_sym)
241
246
  when :singleton
242
247
  SingletonMethodName.new(type_name: type_name, method_name: "#{member.name}=".to_sym)
248
+ else
249
+ raise
243
250
  end
244
251
  index.add_method_declaration(method_name, member)
245
252
  end
@@ -172,8 +172,12 @@ module Steep
172
172
  yield code_diagnostics_config if block_given?
173
173
  end
174
174
 
175
+ def project!
176
+ project or raise "TargetDSL doesn't have project (#{name})"
177
+ end
178
+
175
179
  def collection_config(path)
176
- @collection_config_path = project.absolute_path(path)
180
+ @collection_config_path = project!.absolute_path(path)
177
181
  end
178
182
 
179
183
  def disable_collection
@@ -196,7 +200,6 @@ module Steep
196
200
 
197
201
  def initialize(project:)
198
202
  @project = project
199
- @global_signatures = []
200
203
  end
201
204
 
202
205
  def self.register_template(name, target)
@@ -218,13 +221,18 @@ module Steep
218
221
  end
219
222
 
220
223
  Steep.logger.tagged "target=#{name}" do
221
- target.instance_eval(&block) if block_given?
224
+ target.instance_eval(&block) if block
222
225
  end
223
226
 
224
227
  source_pattern = Pattern.new(patterns: target.sources, ignores: target.ignored_sources, ext: ".rb")
225
228
  signature_pattern = Pattern.new(patterns: target.signatures, ext: ".rbs")
226
229
 
227
- collection_lock = target.collection_config_path&.then { |p| RBS::Collection::Config.lockfile_of(p) }
230
+
231
+ if config_path = target.collection_config_path
232
+ lockfile_path = RBS::Collection::Config.to_lockfile_path(config_path)
233
+ content = YAML.load_file(lockfile_path.to_s)
234
+ collection_lock = RBS::Collection::Config::Lockfile.from_lockfile(lockfile_path: lockfile_path, data: content)
235
+ end
228
236
 
229
237
  Project::Target.new(
230
238
  name: target.name,
@@ -1,7 +1,9 @@
1
1
  module Steep
2
2
  class Project
3
3
  class Options
4
- PathOptions = Struct.new(:core_root, :stdlib_root, :repo_paths, keyword_init: true) do
4
+ PathOptions = _ = Struct.new(:core_root, :stdlib_root, :repo_paths, keyword_init: true) do
5
+ # @implements PathOptions
6
+
5
7
  def customized_stdlib?
6
8
  stdlib_root != nil
7
9
  end
data/lib/steep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steep
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0.dev.1"
3
3
  end
@@ -1,29 +1,18 @@
1
1
  ---
2
2
  sources:
3
- - name: ruby/gem_rbs_collection
3
+ - type: git
4
+ name: ruby/gem_rbs_collection
5
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
4
6
  remote: https://github.com/ruby/gem_rbs_collection.git
5
- revision: main
6
7
  repo_dir: gems
7
8
  path: ".gem_rbs_collection"
8
9
  gems:
9
- - name: set
10
- version: '0'
11
- source:
12
- type: stdlib
13
- - name: rbs
14
- version: 2.8.0
15
- source:
16
- type: rubygems
17
- - name: dbm
18
- version: '0'
19
- source:
20
- type: stdlib
21
10
  - name: activesupport
22
11
  version: '6.0'
23
12
  source:
24
13
  type: git
25
14
  name: ruby/gem_rbs_collection
26
- revision: 94fcc911186b127cffdfd7a378b5e0b511196089
15
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
27
16
  remote: https://github.com/ruby/gem_rbs_collection.git
28
17
  repo_dir: gems
29
18
  - name: ast
@@ -31,23 +20,35 @@ gems:
31
20
  source:
32
21
  type: git
33
22
  name: ruby/gem_rbs_collection
34
- revision: 94fcc911186b127cffdfd7a378b5e0b511196089
23
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
35
24
  remote: https://github.com/ruby/gem_rbs_collection.git
36
25
  repo_dir: gems
37
26
  - name: csv
38
27
  version: '0'
39
28
  source:
40
29
  type: stdlib
30
+ - name: date
31
+ version: '0'
32
+ source:
33
+ type: stdlib
34
+ - name: dbm
35
+ version: '0'
36
+ source:
37
+ type: stdlib
41
38
  - name: fileutils
42
39
  version: '0'
43
40
  source:
44
41
  type: stdlib
42
+ - name: forwardable
43
+ version: '0'
44
+ source:
45
+ type: stdlib
45
46
  - name: i18n
46
47
  version: '1.10'
47
48
  source:
48
49
  type: git
49
50
  name: ruby/gem_rbs_collection
50
- revision: 94fcc911186b127cffdfd7a378b5e0b511196089
51
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
51
52
  remote: https://github.com/ruby/gem_rbs_collection.git
52
53
  repo_dir: gems
53
54
  - name: json
@@ -59,7 +60,7 @@ gems:
59
60
  source:
60
61
  type: git
61
62
  name: ruby/gem_rbs_collection
62
- revision: 94fcc911186b127cffdfd7a378b5e0b511196089
63
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
63
64
  remote: https://github.com/ruby/gem_rbs_collection.git
64
65
  repo_dir: gems
65
66
  - name: logger
@@ -70,51 +71,51 @@ gems:
70
71
  version: '0'
71
72
  source:
72
73
  type: stdlib
74
+ - name: monitor
75
+ version: '0'
76
+ source:
77
+ type: stdlib
78
+ - name: mutex_m
79
+ version: '0'
80
+ source:
81
+ type: stdlib
82
+ - name: optparse
83
+ version: '0'
84
+ source:
85
+ type: stdlib
73
86
  - name: parallel
74
87
  version: '1.20'
75
88
  source:
76
89
  type: git
77
90
  name: ruby/gem_rbs_collection
78
- revision: 94fcc911186b127cffdfd7a378b5e0b511196089
91
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
79
92
  remote: https://github.com/ruby/gem_rbs_collection.git
80
93
  repo_dir: gems
94
+ - name: pathname
95
+ version: '0'
96
+ source:
97
+ type: stdlib
81
98
  - name: rainbow
82
99
  version: '3.0'
83
100
  source:
84
101
  type: git
85
102
  name: ruby/gem_rbs_collection
86
- revision: 94fcc911186b127cffdfd7a378b5e0b511196089
103
+ revision: 6f9f54a753a78c505e63e7f31a48b3f71f1b510d
87
104
  remote: https://github.com/ruby/gem_rbs_collection.git
88
105
  repo_dir: gems
89
- - name: securerandom
90
- version: '0'
91
- source:
92
- type: stdlib
93
- - name: strscan
94
- version: '0'
95
- source:
96
- type: stdlib
97
- - name: pathname
98
- version: '0'
99
- source:
100
- type: stdlib
101
- - name: optparse
102
- version: '0'
103
- source:
104
- type: stdlib
105
- - name: tsort
106
- version: '0'
106
+ - name: rbs
107
+ version: 3.0.0.dev.1
107
108
  source:
108
- type: stdlib
109
+ type: rubygems
109
110
  - name: rdoc
110
111
  version: '0'
111
112
  source:
112
113
  type: stdlib
113
- - name: monitor
114
+ - name: securerandom
114
115
  version: '0'
115
116
  source:
116
117
  type: stdlib
117
- - name: date
118
+ - name: set
118
119
  version: '0'
119
120
  source:
120
121
  type: stdlib
@@ -122,7 +123,7 @@ gems:
122
123
  version: '0'
123
124
  source:
124
125
  type: stdlib
125
- - name: mutex_m
126
+ - name: strscan
126
127
  version: '0'
127
128
  source:
128
129
  type: stdlib
@@ -130,7 +131,7 @@ gems:
130
131
  version: '0'
131
132
  source:
132
133
  type: stdlib
133
- - name: forwardable
134
+ - name: tsort
134
135
  version: '0'
135
136
  source:
136
137
  type: stdlib
@@ -2,89 +2,135 @@ module Steep
2
2
  module Index
3
3
  class RBSIndex
4
4
  class TypeEntry
5
- attr_reader type_name: untyped
5
+ attr_reader type_name: RBS::TypeName
6
6
 
7
- attr_reader declarations: untyped
7
+ type decl = RBS::AST::Declarations::Class
8
+ | RBS::AST::Declarations::Module
9
+ | RBS::AST::Declarations::Interface
10
+ | RBS::AST::Declarations::Alias
8
11
 
9
- attr_reader references: untyped
12
+ type ref = RBS::AST::Members::MethodDefinition
13
+ | RBS::AST::Members::AttrWriter
14
+ | RBS::AST::Members::AttrReader
15
+ | RBS::AST::Members::AttrAccessor
16
+ | RBS::AST::Members::Include
17
+ | RBS::AST::Members::Extend
18
+ | RBS::AST::Members::InstanceVariable
19
+ | RBS::AST::Members::ClassVariable
20
+ | RBS::AST::Members::ClassInstanceVariable
21
+ | RBS::AST::Declarations::Module
22
+ | RBS::AST::Declarations::Class
23
+ | RBS::AST::Declarations::Constant
24
+ | RBS::AST::Declarations::Global
25
+ | RBS::AST::Declarations::Alias
10
26
 
11
- def initialize: (type_name: untyped) -> void
27
+ attr_reader declarations: Set[decl]
12
28
 
13
- def add_declaration: (untyped decl) -> untyped
29
+ attr_reader references: Set[ref]
14
30
 
15
- def add_reference: (untyped ref) -> untyped
31
+ def initialize: (type_name: RBS::TypeName) -> void
32
+
33
+ def add_declaration: (decl decl) -> self
34
+
35
+ def add_reference: (ref) -> self
16
36
  end
17
37
 
18
38
  class MethodEntry
19
- attr_reader method_name: untyped
39
+ attr_reader method_name: method_name
40
+
41
+ type decl = RBS::AST::Members::MethodDefinition
42
+ | RBS::AST::Members::Alias
43
+ | RBS::AST::Members::AttrWriter
44
+ | RBS::AST::Members::AttrReader
45
+ | RBS::AST::Members::AttrAccessor
20
46
 
21
- attr_reader declarations: untyped
47
+ type ref = RBS::AST::Members::Alias
22
48
 
23
- attr_reader references: untyped
49
+ attr_reader declarations: Set[decl]
24
50
 
25
- def initialize: (method_name: untyped) -> void
51
+ attr_reader references: Set[ref]
26
52
 
27
- def add_declaration: (untyped decl) -> untyped
53
+ def initialize: (method_name: method_name) -> void
54
+
55
+ def add_declaration: (decl) -> self
28
56
  end
29
57
 
30
58
  class ConstantEntry
31
- attr_reader const_name: untyped
59
+ attr_reader const_name: RBS::TypeName
60
+
61
+ type decl = RBS::AST::Declarations::Constant
32
62
 
33
- attr_reader declarations: untyped
63
+ attr_reader declarations: Set[decl]
34
64
 
35
- def initialize: (const_name: untyped) -> void
65
+ def initialize: (const_name: RBS::TypeName) -> void
36
66
 
37
- def add_declaration: (untyped decl) -> untyped
67
+ def add_declaration: (decl) -> self
38
68
  end
39
69
 
40
70
  class GlobalEntry
41
- attr_reader global_name: untyped
71
+ attr_reader global_name: Symbol
72
+
73
+ type decl = RBS::AST::Declarations::Global
42
74
 
43
- attr_reader declarations: untyped
75
+ attr_reader declarations: Set[decl]
44
76
 
45
- def initialize: (global_name: untyped) -> void
77
+ def initialize: (global_name: Symbol) -> void
46
78
 
47
- def add_declaration: (untyped decl) -> untyped
79
+ def add_declaration: (decl) -> self
48
80
  end
49
81
 
50
- attr_reader type_index: untyped
82
+ attr_reader type_index: Hash[RBS::TypeName, TypeEntry]
51
83
 
52
- attr_reader method_index: untyped
84
+ attr_reader method_index: Hash[method_name, MethodEntry]
53
85
 
54
- attr_reader const_index: untyped
86
+ attr_reader const_index: Hash[RBS::TypeName, ConstantEntry]
55
87
 
56
- attr_reader global_index: untyped
88
+ attr_reader global_index: Hash[Symbol, GlobalEntry]
57
89
 
58
90
  def initialize: () -> void
59
91
 
60
- def entry: (?type_name: untyped?, ?method_name: untyped?, ?const_name: untyped?, ?global_name: untyped?) -> untyped
92
+ def entry: (type_name: RBS::TypeName) -> TypeEntry
93
+ | (method_name: method_name) -> MethodEntry
94
+ | (const_name: RBS::TypeName) -> ConstantEntry
95
+ | (global_name: Symbol) -> GlobalEntry
61
96
 
62
- def each_entry: () { () -> untyped } -> untyped
97
+ def each_entry: () { (TypeEntry | MethodEntry | ConstantEntry | GlobalEntry) -> void } -> void
98
+ | () -> Enumerator[TypeEntry | MethodEntry | ConstantEntry | GlobalEntry, void]
63
99
 
64
- def add_type_declaration: (untyped type_name, untyped declaration) -> untyped
100
+ def add_type_declaration: (RBS::TypeName type_name, TypeEntry::decl declaration) -> TypeEntry
65
101
 
66
- def add_method_declaration: (untyped method_name, untyped member) -> untyped
102
+ def add_method_declaration: (method_name, MethodEntry::decl member) -> MethodEntry
67
103
 
68
- def add_constant_declaration: (untyped const_name, untyped decl) -> untyped
104
+ def add_constant_declaration: (RBS::TypeName const_name, ConstantEntry::decl decl) -> ConstantEntry
69
105
 
70
- def add_global_declaration: (untyped global_name, untyped decl) -> untyped
106
+ def add_global_declaration: (Symbol global_name, GlobalEntry::decl decl) -> GlobalEntry
71
107
 
72
- def each_declaration: (?type_name: untyped?, ?method_name: untyped?, ?const_name: untyped?, ?global_name: untyped?) { () -> untyped } -> untyped
108
+ def each_declaration: (type_name: RBS::TypeName) { (TypeEntry) -> void } -> void
109
+ | (type_name: RBS::TypeName) -> Enumerator[TypeEntry, void]
110
+ | (method_name: method_name) { (MethodEntry) -> void } -> void
111
+ | (method_name: method_name) -> Enumerator[MethodEntry, void]
112
+ | (const_name: RBS::TypeName) { (ConstantEntry) -> void } -> void
113
+ | (const_name: RBS::TypeName) -> Enumerator[ConstantEntry, void]
114
+ | (global_name: Symbol) { (GlobalEntry) -> void } -> void
115
+ | (global_name: Symbol) -> Enumerator[GlobalEntry, void]
73
116
 
74
- def add_type_reference: (untyped type_name, untyped ref) -> untyped
117
+ # `type_name` is referred from `ref`
118
+ #
119
+ def add_type_reference: (RBS::TypeName type_name, TypeEntry::ref ref) -> TypeEntry
75
120
 
76
- def each_reference: (?type_name: untyped?) { () -> untyped } -> untyped
121
+ def each_reference: (type_name: RBS::TypeName) { (TypeEntry::ref) -> void } -> void
122
+ | (type_name: RBS::TypeName) -> Enumerator[TypeEntry::ref, void]
77
123
 
78
124
  class Builder
79
- attr_reader index: untyped
125
+ attr_reader index: RBSIndex
80
126
 
81
- def initialize: (index: untyped) -> void
127
+ def initialize: (index: RBSIndex) -> void
82
128
 
83
- def member: (untyped type_name, untyped member) -> untyped
129
+ def member: (RBS::TypeName type_name, RBS::AST::Members::t | RBS::AST::Declarations::t member) -> void
84
130
 
85
- def type_reference: (untyped `type`, from: untyped) -> untyped
131
+ def type_reference: (RBS::Types::t, from: TypeEntry::ref) -> void
86
132
 
87
- def env: (untyped env) -> untyped
133
+ def env: (RBS::Environment env) -> void
88
134
  end
89
135
  end
90
136
  end
@@ -2,53 +2,55 @@ module Steep
2
2
  class Project
3
3
  class DSL
4
4
  class TargetDSL
5
- attr_reader name: untyped
5
+ attr_reader name: Symbol
6
6
 
7
- attr_reader sources: untyped
7
+ attr_reader sources: Array[String]
8
8
 
9
- attr_reader libraries: untyped
9
+ attr_reader libraries: Array[String]
10
10
 
11
- attr_reader signatures: untyped
11
+ attr_reader signatures: Array[String]
12
12
 
13
- attr_reader ignored_sources: untyped
13
+ attr_reader ignored_sources: Array[String]
14
14
 
15
- attr_reader stdlib_root: untyped
15
+ attr_reader stdlib_root: Pathname?
16
16
 
17
- attr_reader core_root: untyped
17
+ attr_reader core_root: Pathname?
18
18
 
19
- attr_reader repo_paths: untyped
19
+ attr_reader repo_paths: Array[Pathname]
20
20
 
21
21
  attr_reader code_diagnostics_config: untyped
22
22
 
23
- attr_reader project: untyped
23
+ attr_reader project: Project?
24
24
 
25
- attr_reader collection_config_path: untyped
25
+ attr_reader collection_config_path: Pathname?
26
26
 
27
27
  NONE: untyped
28
28
 
29
- def initialize: (untyped name, ?sources: untyped, ?libraries: untyped, ?signatures: untyped, ?ignored_sources: untyped, ?repo_paths: untyped, ?code_diagnostics_config: ::Hash[untyped, untyped], ?project: untyped?, ?collection_config_path: untyped) -> void
29
+ def project!: () -> Project
30
30
 
31
- def initialize_copy: (untyped other) -> untyped
31
+ def initialize: (Symbol name, ?sources: Array[String], ?libraries: Array[String], ?signatures: Array[String], ?ignored_sources: Array[String], ?repo_paths: Array[Pathname], ?code_diagnostics_config: ::Hash[untyped, untyped], ?project: Project?, ?collection_config_path: Pathname?) -> void
32
32
 
33
- def check: (*untyped args) -> untyped
33
+ def initialize_copy: (instance other) -> void
34
34
 
35
- def ignore: (*untyped args) -> untyped
35
+ def check: (*String args) -> void
36
36
 
37
- def library: (*untyped args) -> untyped
37
+ def ignore: (*String args) -> void
38
38
 
39
- def typing_options: (?untyped? level, **untyped hash) -> untyped
39
+ def library: (*String args) -> void
40
40
 
41
- def signature: (*untyped args) -> untyped
41
+ def typing_options: (?untyped level, **untyped hash) -> void
42
42
 
43
- def update: (?name: untyped, ?sources: untyped, ?libraries: untyped, ?ignored_sources: untyped, ?signatures: untyped, ?project: untyped) -> untyped
43
+ def signature: (*String args) -> void
44
44
 
45
- def no_builtin!: (?bool value) -> untyped
45
+ def update: (?name: Symbol, ?sources: Array[String], ?libraries: Array[String], ?signatures: Array[String], ?ignored_sources: Array[String], ?project: Project?) -> TargetDSL
46
46
 
47
- def vendor: (?::String dir, ?stdlib: untyped?, ?gems: untyped?) -> untyped
47
+ def no_builtin!: (?bool value) -> void
48
48
 
49
- def stdlib_path: (core_root: untyped, stdlib_root: untyped) -> untyped
49
+ def vendor: (?::String dir, ?stdlib: untyped?, ?gems: untyped?) -> void
50
50
 
51
- def repo_path: (*untyped paths) -> untyped
51
+ def stdlib_path: (core_root: String, stdlib_root: String) -> void
52
+
53
+ def repo_path: (*String paths) -> void
52
54
 
53
55
  # Configure the code diagnostics printing setup.
54
56
  #
@@ -71,24 +73,27 @@ module Steep
71
73
  # configure_code_diagnostics(D::Ruby.lenient)
72
74
  # ```
73
75
  #
74
- def configure_code_diagnostics: (?untyped? hash) { (untyped) -> untyped } -> untyped
76
+ def configure_code_diagnostics: (Hash[untyped, untyped] hash) -> void
77
+ | () { (Hash[untyped, untyped]) -> void } -> void
75
78
 
76
- def collection_config: (untyped path) -> untyped
79
+ def collection_config: (Pathname path) -> void
77
80
 
78
- def disable_collection: () -> untyped
81
+ def disable_collection: () -> void
79
82
  end
80
83
 
81
84
  attr_reader project: untyped
82
85
 
83
- def self.templates: () -> untyped
86
+ @@templates: Hash[Symbol, TargetDSL]
87
+
88
+ def self.templates: () -> Hash[Symbol, TargetDSL]
84
89
 
85
- def initialize: (project: untyped) -> void
90
+ def initialize: (project: Project) -> void
86
91
 
87
- def self.register_template: (untyped name, untyped target) -> untyped
92
+ def self.register_template: (Symbol name, TargetDSL target) -> void
88
93
 
89
- def self.parse: (untyped project, untyped code, ?filename: ::String) -> untyped
94
+ def self.parse: (Project project, String code, ?filename: String) -> void
90
95
 
91
- def target: (untyped name, ?template: untyped?) ?{ () -> untyped } -> untyped
96
+ def target: (Symbol name, ?template: Symbol?) ?{ (TargetDSL) [self: TargetDSL] -> void } -> void
92
97
  end
93
98
  end
94
99
  end
@@ -1,13 +1,25 @@
1
1
  module Steep
2
2
  class Project
3
3
  class Options
4
- PathOptions: untyped
4
+ class PathOptions
5
+ attr_reader core_root: Pathname?
5
6
 
6
- attr_reader libraries: untyped
7
+ attr_reader stdlib_root: Pathname?
7
8
 
8
- attr_accessor paths: untyped
9
+ attr_reader repo_paths: Array[Pathname]
9
10
 
10
- attr_accessor collection_lock: untyped
11
+ def initialize: (?core_root: Pathname?, ?stdlib_root: Pathname?, ?repo_paths: Array[Pathname]) -> void
12
+
13
+ def customized_stdlib?: () -> bool
14
+
15
+ def customized_core?: () -> bool
16
+ end
17
+
18
+ attr_reader libraries: Array[String]
19
+
20
+ attr_accessor paths: PathOptions
21
+
22
+ attr_accessor collection_lock: RBS::Collection::Config::Lockfile
11
23
 
12
24
  def initialize: () -> void
13
25
  end
@@ -54,7 +54,7 @@
54
54
  character: 22
55
55
  end:
56
56
  line: 1
57
- character: -1
57
+ character: 28
58
58
  severity: ERROR
59
59
  message: Cannot inherit from a module `::Kernel`
60
60
  code: RBS::InheritModuleError
data/steep.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- spec.required_ruby_version = '>= 2.6.0'
29
+ spec.required_ruby_version = '>= 2.7.0'
30
30
 
31
31
  spec.add_runtime_dependency "parser", ">= 3.1"
32
32
  spec.add_runtime_dependency "activesupport", ">= 5.1"
@@ -42,4 +42,5 @@ Gem::Specification.new do |spec|
42
42
  spec.add_runtime_dependency "fileutils", ">= 1.1.0"
43
43
  spec.add_runtime_dependency "strscan", ">= 1.0.0"
44
44
  spec.add_runtime_dependency "csv", ">= 3.0.9"
45
+ spec.add_runtime_dependency "pathname", ">= 0.2.1"
45
46
  end
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.3.0
4
+ version: 1.4.0.dev.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: 2022-11-25 00:00:00.000000000 Z
11
+ date: 2023-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -224,6 +224,20 @@ dependencies:
224
224
  - - ">="
225
225
  - !ruby/object:Gem::Version
226
226
  version: 3.0.9
227
+ - !ruby/object:Gem::Dependency
228
+ name: pathname
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - ">="
232
+ - !ruby/object:Gem::Version
233
+ version: 0.2.1
234
+ type: :runtime
235
+ prerelease: false
236
+ version_requirements: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: 0.2.1
227
241
  description: Gradual Typing for Ruby
228
242
  email:
229
243
  - matsumoto@soutaro.com
@@ -249,6 +263,7 @@ files:
249
263
  - bin/console
250
264
  - bin/output_rebaseline.rb
251
265
  - bin/output_test.rb
266
+ - bin/rbs
252
267
  - bin/setup
253
268
  - bin/steep
254
269
  - bin/steep-prof
@@ -760,14 +775,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
760
775
  requirements:
761
776
  - - ">="
762
777
  - !ruby/object:Gem::Version
763
- version: 2.6.0
778
+ version: 2.7.0
764
779
  required_rubygems_version: !ruby/object:Gem::Requirement
765
780
  requirements:
766
- - - ">="
781
+ - - ">"
767
782
  - !ruby/object:Gem::Version
768
- version: '0'
783
+ version: 1.3.1
769
784
  requirements: []
770
- rubygems_version: 3.3.7
785
+ rubygems_version: 3.3.26
771
786
  signing_key:
772
787
  specification_version: 4
773
788
  summary: Gradual Typing for Ruby