steep 1.9.2 → 1.9.4

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: b4ab8afe918f1a916f4697310e5119e832e9245ad45872c34e0c7d39a80725fc
4
- data.tar.gz: 613dffe12496d24cfef1db9b01bf4aac622e7d9bb438554c8227904a2532ca55
3
+ metadata.gz: b23b392399196d67221acd72708ebe27ee3b7bbb7b54e4b5922e8ecbb6ceb5e3
4
+ data.tar.gz: a315e09c38f8736bc66aad3a57275f8546c28c75845fa33a9de375387cc63a13
5
5
  SHA512:
6
- metadata.gz: 26c87982d9a05cc18558d2f2a7ca55d9a81611316d2cbe48c9e95bcc8089c8a7cd769f62b453c8fdc59ef0429b83ea37ab3d7b0a048d4b465a6856376b611242
7
- data.tar.gz: cdc096149b19d7bd20a8a6766e25d204b5b31be69614f84119f451c6654f5a1289a6948309eab1df61bccb5287ce5e1b35c5fbb2df5e922854402898d32575fc
6
+ metadata.gz: 1fe50cd4df36c00affa8868857d55deeea0e58c36372260209d95fabec69eb9f005d37581c5184c0b44e3a5fb1d42bd5bb25a5630c5dfafa4552b08a8fb87377
7
+ data.tar.gz: bc41b2386db2d9a97dabf2c81ff2079c6fac875decc01ba223d1475473048945d81ba43cc17f0db24f6ba2da285954dff83e10910b5f3831716781698b458d9e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.9.4 (2025-02-04)
4
+
5
+ ### Language server
6
+
7
+ * Set up file watcher for groups ([#1485](https://github.com/soutaro/steep/pull/1485), Backported)
8
+
9
+ ### Miscellaneous
10
+
11
+ * Fix CI ([#1486](https://github.com/soutaro/steep/pull/1486), Backported)
12
+
13
+ ## 1.9.3 (2024-12-26)
14
+
15
+ ### Miscellaneous
16
+
17
+ * Steep 1.9.1 ([#1398](https://github.com/soutaro/steep/pull/1398))
18
+ * Update rbs ([#1443](https://github.com/soutaro/steep/pull/1443))
19
+
3
20
  ## 1.9.2 (2024-12-16)
4
21
 
5
22
  ### Type checker core
data/Steepfile CHANGED
@@ -1,3 +1,5 @@
1
+ require "fileutils"
2
+
1
3
  D = Steep::Diagnostic
2
4
 
3
5
  FileUtils.mkpath("tmp")
@@ -104,7 +104,7 @@ module Steep
104
104
  name = match[:name] or raise
105
105
  type = parse_type(match, location: location)
106
106
 
107
- AST::Annotation::ConstType.new(name: TypeName(name), type: type, location: location)
107
+ AST::Annotation::ConstType.new(name: RBS::TypeName.parse(name), type: type, location: location)
108
108
  end
109
109
 
110
110
  when keyword_subject_type("ivar", IVAR_NAME)
@@ -184,7 +184,7 @@ module Steep
184
184
  when /@implements\s+(?<name>#{CONST_NAME})#{TYPE_PARAMS}$/
185
185
  Regexp.last_match.yield_self do |match|
186
186
  match or raise
187
- type_name = TypeName(match[:name] || raise)
187
+ type_name = RBS::TypeName.parse(match[:name] || raise)
188
188
  params = match[:params]&.yield_self {|params| params.split(/,/).map {|param| param.strip.to_sym } } || []
189
189
 
190
190
  name = AST::Annotation::Implements::Module.new(name: type_name, args: params)
@@ -6,7 +6,7 @@ module Steep
6
6
  attr_reader :arity
7
7
 
8
8
  def initialize(module_name, arity: 0)
9
- @module_name = TypeName(module_name)
9
+ @module_name = RBS::TypeName.parse(module_name)
10
10
  @arity = arity
11
11
  end
12
12
 
@@ -786,7 +786,7 @@ module Steep
786
786
  RBS::BuiltinNames::Symbol.name,
787
787
  RBS::BuiltinNames::TrueClass.name,
788
788
  RBS::BuiltinNames::FalseClass.name,
789
- TypeName("::NilClass")
789
+ RBS::TypeName.parse("::NilClass")
790
790
  # Value based type-case works on literal types which is available for String, Integer, Symbol, TrueClass, FalseClass, and NilClass
791
791
  return method_type.with(
792
792
  type: method_type.type.with(
@@ -828,7 +828,7 @@ module Steep
828
828
 
829
829
  def add_implicitly_returns_nil(annotations, method_type)
830
830
  return method_type unless implicitly_returns_nil
831
-
831
+
832
832
  if annotations.find { _1.string == "implicitly-returns-nil" }
833
833
  return_type = method_type.type.return_type
834
834
  method_type = method_type.with(
@@ -62,7 +62,7 @@ module Steep
62
62
  end
63
63
 
64
64
  def to_s
65
- buf = ""
65
+ buf = +""
66
66
 
67
67
  if unchecked
68
68
  buf << "unchecked "
@@ -28,12 +28,12 @@ module Steep
28
28
  type_name, method_name = string.split(/#/, 2)
29
29
  type_name or raise
30
30
  method_name or raise
31
- InstanceMethodName.new(type_name: TypeName(type_name), method_name: method_name.to_sym)
31
+ InstanceMethodName.new(type_name: RBS::TypeName.parse(type_name), method_name: method_name.to_sym)
32
32
  when /\./
33
33
  type_name, method_name = string.split(/\./, 2)
34
34
  type_name or raise
35
35
  method_name or raise
36
- SingletonMethodName.new(type_name: TypeName(type_name), method_name: method_name.to_sym)
36
+ SingletonMethodName.new(type_name: RBS::TypeName.parse(type_name), method_name: method_name.to_sym)
37
37
  else
38
38
  raise "Unexpected method name: #{string}"
39
39
  end
@@ -361,7 +361,7 @@ module Steep
361
361
  "#{name}"
362
362
  else
363
363
  ps = params.each.map do |param|
364
- s = ""
364
+ s = +""
365
365
  if param.unchecked?
366
366
  s << "unchecked "
367
367
  end
@@ -413,49 +413,7 @@ module Steep
413
413
  end
414
414
 
415
415
  if file_system_watcher_supported?
416
- patterns = [] #: Array[String]
417
- project.targets.each do |target|
418
- target.source_pattern.patterns.each do |pat|
419
- path = project.base_dir + pat
420
- patterns << path.to_s unless path.directory?
421
- end
422
- target.source_pattern.prefixes.each do |pat|
423
- path = project.base_dir + pat
424
- patterns << (path + "**/*.rb").to_s unless path.file?
425
- end
426
- target.signature_pattern.patterns.each do |pat|
427
- path = project.base_dir + pat
428
- patterns << path.to_s unless path.directory?
429
- end
430
- target.signature_pattern.prefixes.each do |pat|
431
- path = project.base_dir + pat
432
- patterns << (path + "**/*.rbs").to_s unless path.file?
433
- end
434
- end
435
- patterns.sort!
436
- patterns.uniq!
437
-
438
- Steep.logger.info { "Setting up didChangeWatchedFiles with pattern: #{patterns.inspect}" }
439
-
440
- enqueue_write_job SendMessageJob.to_client(
441
- message: {
442
- id: SecureRandom.uuid,
443
- method: "client/registerCapability",
444
- params: {
445
- registrations: [
446
- {
447
- id: SecureRandom.uuid,
448
- method: "workspace/didChangeWatchedFiles",
449
- registerOptions: {
450
- watchers: patterns.map do |pattern|
451
- { globPattern: pattern }
452
- end
453
- }
454
- }
455
- ]
456
- }
457
- }
458
- )
416
+ setup_file_system_watcher()
459
417
  end
460
418
 
461
419
  controller.changed_paths.clear()
@@ -635,7 +593,7 @@ module Steep
635
593
  enqueue_write_job SendMessageJob.to_client(
636
594
  message: {
637
595
  id: message[:id],
638
- result: []
596
+ result: [] #: Array[untyped]
639
597
  }
640
598
  )
641
599
  end
@@ -800,7 +758,7 @@ module Steep
800
758
  Steep.logger.info "Starting new progress..."
801
759
 
802
760
  @current_type_check_request = request
803
-
761
+
804
762
  if progress
805
763
  # If `request:` keyword arg is not given
806
764
  request.work_done_progress.begin("Type checking", request_id: fresh_request_id)
@@ -907,6 +865,58 @@ module Steep
907
865
  )
908
866
  end
909
867
  end
868
+
869
+ def setup_file_system_watcher()
870
+ patterns = [] #: Array[String]
871
+
872
+ project.targets.each do |target|
873
+ patterns.concat(paths_to_watch(target.source_pattern, extname: ".rb"))
874
+ patterns.concat(paths_to_watch(target.signature_pattern, extname: ".rbs"))
875
+ target.groups.each do |group|
876
+ patterns.concat(paths_to_watch(group.source_pattern, extname: ".rb"))
877
+ patterns.concat(paths_to_watch(group.signature_pattern, extname: ".rbs"))
878
+ end
879
+ end
880
+ patterns.sort!
881
+ patterns.uniq!
882
+
883
+ Steep.logger.info { "Setting up didChangeWatchedFiles with pattern: #{patterns.inspect}" }
884
+
885
+ enqueue_write_job SendMessageJob.to_client(
886
+ message: {
887
+ id: SecureRandom.uuid,
888
+ method: "client/registerCapability",
889
+ params: {
890
+ registrations: [
891
+ {
892
+ id: SecureRandom.uuid,
893
+ method: "workspace/didChangeWatchedFiles",
894
+ registerOptions: {
895
+ watchers: patterns.map do |pattern|
896
+ { globPattern: pattern }
897
+ end
898
+ }
899
+ }
900
+ ]
901
+ }
902
+ }
903
+ )
904
+ end
905
+
906
+ def paths_to_watch(pattern, extname:)
907
+ result = [] #: Array[String]
908
+
909
+ pattern.patterns.each do |pat|
910
+ path = project.base_dir + pat
911
+ result << path.to_s unless path.directory?
912
+ end
913
+ pattern.prefixes.each do |pat|
914
+ path = project.base_dir + pat
915
+ result << (path + "**/*#{extname}").to_s unless path.file?
916
+ end
917
+
918
+ result
919
+ end
910
920
  end
911
921
  end
912
922
  end
@@ -1385,10 +1385,10 @@ module Steep
1385
1385
  add_typing(node, type: AST::Builtin::Float.instance_type)
1386
1386
 
1387
1387
  when :rational
1388
- add_typing(node, type: AST::Types::Name::Instance.new(name: TypeName("::Rational"), args: []))
1388
+ add_typing(node, type: AST::Types::Name::Instance.new(name: RBS::TypeName.parse("::Rational"), args: []))
1389
1389
 
1390
1390
  when :complex
1391
- add_typing(node, type: AST::Types::Name::Instance.new(name: TypeName("::Complex"), args: []))
1391
+ add_typing(node, type: AST::Types::Name::Instance.new(name: RBS::TypeName.parse("::Complex"), args: []))
1392
1392
 
1393
1393
  when :nil
1394
1394
  add_typing(node, type: AST::Builtin.nil_type)
data/lib/steep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steep
2
- VERSION = "1.9.2"
2
+ VERSION = "1.9.4"
3
3
  end
data/steep.gemspec CHANGED
@@ -42,7 +42,7 @@ Gem::Specification.new do |spec|
42
42
  spec.add_runtime_dependency "rainbow", ">= 2.2.2", "< 4.0"
43
43
  spec.add_runtime_dependency "listen", "~> 3.0"
44
44
  spec.add_runtime_dependency "language_server-protocol", ">= 3.15", "< 4.0"
45
- spec.add_runtime_dependency "rbs", "~> 3.7.0"
45
+ spec.add_runtime_dependency "rbs", "~> 3.8"
46
46
  spec.add_runtime_dependency "concurrent-ruby", ">= 1.1.10"
47
47
  spec.add_runtime_dependency "terminal-table", ">= 2", "< 4"
48
48
  spec.add_runtime_dependency "securerandom", ">= 0.1"
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steep
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: 1.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Soutaro Matsumoto
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-12-16 00:00:00.000000000 Z
10
+ date: 2025-02-04 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: parser
@@ -98,14 +97,14 @@ dependencies:
98
97
  requirements:
99
98
  - - "~>"
100
99
  - !ruby/object:Gem::Version
101
- version: 3.7.0
100
+ version: '3.8'
102
101
  type: :runtime
103
102
  prerelease: false
104
103
  version_requirements: !ruby/object:Gem::Requirement
105
104
  requirements:
106
105
  - - "~>"
107
106
  - !ruby/object:Gem::Version
108
- version: 3.7.0
107
+ version: '3.8'
109
108
  - !ruby/object:Gem::Dependency
110
109
  name: concurrent-ruby
111
110
  requirement: !ruby/object:Gem::Requirement
@@ -415,7 +414,6 @@ metadata:
415
414
  homepage_uri: https://github.com/soutaro/steep
416
415
  source_code_uri: https://github.com/soutaro/steep
417
416
  changelog_uri: https://github.com/soutaro/steep/blob/master/CHANGELOG.md
418
- post_install_message:
419
417
  rdoc_options: []
420
418
  require_paths:
421
419
  - lib
@@ -430,8 +428,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
430
428
  - !ruby/object:Gem::Version
431
429
  version: '0'
432
430
  requirements: []
433
- rubygems_version: 3.5.22
434
- signing_key:
431
+ rubygems_version: 3.6.2
435
432
  specification_version: 4
436
433
  summary: Gradual Typing for Ruby
437
434
  test_files: []