steep 1.9.0 → 1.9.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: 7f7a4597973dff6192b6977a32875ed18b7da16a70d34bf5e811cb8a719b18d5
4
- data.tar.gz: 8b9ec7e28728c0f6e35e962fed6dd8a43828d41763ae2ffce831b787a501b200
3
+ metadata.gz: 522d134347810d1fbb030d139f616077fcc197aabe079bf14453305c9c9562bd
4
+ data.tar.gz: bd6a1a97a815c02ba20160d6bc1bd2166c1a02cdee3901c2a84fca2fe1b22d0b
5
5
  SHA512:
6
- metadata.gz: f11cb6ec05bc38e2e8130b7e6860409c63a9d1ba3ef93ca14dcc3781800c00d97e59506343e8191c97741865a1fa1895dfd9ff69928b574df423e32983a315b5
7
- data.tar.gz: d6b544a988c8f0adae6705a5b7085907bb7148dde0eeb857a3aae7b9c44b2787f47ea40aa1c0b54b5d5da650f07e4f94e0a754ead23baca844cb2f21ae6c7eaa
6
+ metadata.gz: 254fb6ef3b682ea7866e2892755e183bcd8ed797f4209faf999f40cdcb140a67083c73684ba80273cbf2e563650a2213114c474a2e0d3e50cc6d0cdc5d05caf0
7
+ data.tar.gz: b5daeab25121a44e5e9ad4a353de77115f7f626c0f5ac9342c1fe0ac061eabf75cbf3fef26a3b651d0b4849a0c05d5c1eafe9027f72294af0974f7b051f9eb71
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.9.1 (2024-12-09)
4
+
5
+ ### Type checker core
6
+
7
+ * Make `implicitly-returns-nil` opt-in ([#1396](https://github.com/soutaro/steep/pull/1396))
8
+
3
9
  ## 1.9.0 (2024-12-06)
4
10
 
5
11
  ### Type checker core
@@ -21,7 +21,7 @@ module Steep
21
21
 
22
22
  project.targets.each do |target|
23
23
  Steep.logger.tagged "target=#{target.name}" do
24
- service = Services::SignatureService.load_from(target.new_env_loader())
24
+ service = Services::SignatureService.load_from(target.new_env_loader(), implicitly_returns_nil: target.implicitly_returns_nil)
25
25
 
26
26
  sigs = loader.load_changes(target.signature_pattern, changes: {})
27
27
  service.update(sigs)
@@ -54,13 +54,14 @@ module Steep
54
54
  end
55
55
  end
56
56
 
57
- attr_reader :factory, :object_shape_cache, :union_shape_cache, :singleton_shape_cache
57
+ attr_reader :factory, :object_shape_cache, :union_shape_cache, :singleton_shape_cache, :implicitly_returns_nil
58
58
 
59
- def initialize(factory)
59
+ def initialize(factory, implicitly_returns_nil:)
60
60
  @factory = factory
61
61
  @object_shape_cache = {}
62
62
  @union_shape_cache = {}
63
63
  @singleton_shape_cache = {}
64
+ @implicitly_returns_nil = implicitly_returns_nil
64
65
  end
65
66
 
66
67
  def shape(type, config)
@@ -826,6 +827,8 @@ module Steep
826
827
  end
827
828
 
828
829
  def add_implicitly_returns_nil(annotations, method_type)
830
+ return method_type unless implicitly_returns_nil
831
+
829
832
  if annotations.find { _1.string == "implicitly-returns-nil" }
830
833
  return_type = method_type.type.return_type
831
834
  method_type = method_type.with(
@@ -119,6 +119,7 @@ module Steep
119
119
  attr_reader :project
120
120
  attr_reader :unreferenced
121
121
  attr_reader :groups
122
+ attr_reader :implicitly_returns_nil
122
123
 
123
124
  def initialize(name, project:)
124
125
  @name = name
@@ -127,6 +128,7 @@ module Steep
127
128
  @project = project
128
129
  @collection_config_path = collection_config_path
129
130
  @unreferenced = false
131
+ @implicitly_returns_nil = false
130
132
  @groups = []
131
133
  end
132
134
 
@@ -144,6 +146,7 @@ module Steep
144
146
  @project = other.project
145
147
  @collection_config_path = other.collection_config_path
146
148
  @unreferenced = other.unreferenced
149
+ @implicitly_returns_nil = other.implicitly_returns_nil
147
150
  @groups = other.groups.dup
148
151
  end
149
152
 
@@ -151,6 +154,10 @@ module Steep
151
154
  @unreferenced = value
152
155
  end
153
156
 
157
+ def implicitly_returns_nil!(value = true)
158
+ @implicitly_returns_nil = value
159
+ end
160
+
154
161
  def configure_code_diagnostics(hash = nil)
155
162
  if hash
156
163
  code_diagnostics_config.merge!(hash)
@@ -245,7 +252,8 @@ module Steep
245
252
  options: dsl.library_configured? ? dsl.to_library_options : nil,
246
253
  code_diagnostics_config: dsl.code_diagnostics_config,
247
254
  project: project,
248
- unreferenced: dsl.unreferenced
255
+ unreferenced: dsl.unreferenced,
256
+ implicitly_returns_nil: dsl.implicitly_returns_nil
249
257
  )
250
258
 
251
259
  dsl.groups.each do
@@ -10,8 +10,9 @@ module Steep
10
10
  attr_reader :project
11
11
  attr_reader :unreferenced
12
12
  attr_reader :groups
13
+ attr_reader :implicitly_returns_nil
13
14
 
14
- def initialize(name:, options:, source_pattern:, signature_pattern:, code_diagnostics_config:, project:, unreferenced:)
15
+ def initialize(name:, options:, source_pattern:, signature_pattern:, code_diagnostics_config:, project:, unreferenced:, implicitly_returns_nil:)
15
16
  @name = name
16
17
  @target_options = options
17
18
  @source_pattern = source_pattern
@@ -20,6 +21,7 @@ module Steep
20
21
  @project = project
21
22
  @unreferenced = unreferenced
22
23
  @groups = []
24
+ @implicitly_returns_nil = implicitly_returns_nil
23
25
  end
24
26
 
25
27
  def options
@@ -185,7 +185,7 @@ module Steep
185
185
  loader = Services::FileLoader.new(base_dir: project.base_dir)
186
186
 
187
187
  project.targets.each do |target|
188
- signature_service = Services::SignatureService.load_from(target.new_env_loader())
188
+ signature_service = Services::SignatureService.load_from(target.new_env_loader(), implicitly_returns_nil: target.implicitly_returns_nil)
189
189
  files.add_library_path(target, *signature_service.env_rbs_paths.to_a)
190
190
  end
191
191
 
@@ -48,17 +48,18 @@ module Steep
48
48
  end
49
49
 
50
50
  class LoadedStatus
51
- attr_reader :files, :builder
51
+ attr_reader :files, :builder, :implicitly_returns_nil
52
52
 
53
- def initialize(files:, builder:)
53
+ def initialize(files:, builder:, implicitly_returns_nil:)
54
54
  @files = files
55
55
  @builder = builder
56
+ @implicitly_returns_nil = implicitly_returns_nil
56
57
  end
57
58
 
58
59
  def subtyping
59
60
  @subtyping ||= begin
60
61
  factory = AST::Types::Factory.new(builder: builder)
61
- interface_builder = Interface::Builder.new(factory)
62
+ interface_builder = Interface::Builder.new(factory, implicitly_returns_nil: implicitly_returns_nil)
62
63
  Subtyping::Check.new(builder: interface_builder)
63
64
  end
64
65
  end
@@ -77,14 +78,17 @@ module Steep
77
78
 
78
79
  FileStatus = _ = Struct.new(:path, :content, :signature, keyword_init: true)
79
80
 
80
- def initialize(env:)
81
+ attr_reader :implicitly_returns_nil
82
+
83
+ def initialize(env:, implicitly_returns_nil:)
81
84
  builder = RBS::DefinitionBuilder.new(env: env)
82
- @status = LoadedStatus.new(builder: builder, files: {})
85
+ @status = LoadedStatus.new(builder: builder, files: {}, implicitly_returns_nil: implicitly_returns_nil)
86
+ @implicitly_returns_nil = implicitly_returns_nil
83
87
  end
84
88
 
85
- def self.load_from(loader)
89
+ def self.load_from(loader, implicitly_returns_nil:)
86
90
  env = RBS::Environment.from_loader(loader).resolve_type_names
87
- new(env: env)
91
+ new(env: env, implicitly_returns_nil: implicitly_returns_nil)
88
92
  end
89
93
 
90
94
  def env_rbs_paths
@@ -222,7 +226,7 @@ module Steep
222
226
  )
223
227
  when RBS::DefinitionBuilder::AncestorBuilder
224
228
  builder2 = update_builder(ancestor_builder: result, paths: paths)
225
- LoadedStatus.new(builder: builder2, files: files)
229
+ LoadedStatus.new(builder: builder2, files: files, implicitly_returns_nil: implicitly_returns_nil)
226
230
  end
227
231
  end
228
232
  end
@@ -82,7 +82,7 @@ module Steep
82
82
  @source_files = {}
83
83
  @signature_services = project.targets.each.with_object({}) do |target, hash| #$ Hash[Symbol, SignatureService]
84
84
  loader = Project::Target.construct_env_loader(options: target.options, project: project)
85
- hash[target.name] = SignatureService.load_from(loader)
85
+ hash[target.name] = SignatureService.load_from(loader, implicitly_returns_nil: target.implicitly_returns_nil)
86
86
  end
87
87
  @signature_validation_diagnostics = project.targets.each.with_object({}) do |target, hash| #$ Hash[Symbol, Hash[Pathname, Array[Diagnostic::Signature::Base]]]
88
88
  hash[target.name] = {}
data/lib/steep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steep
2
- VERSION = "1.9.0"
2
+ VERSION = "1.9.1"
3
3
  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.9.0
4
+ version: 1.9.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: 2024-12-06 00:00:00.000000000 Z
11
+ date: 2024-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser