steep 1.8.3 → 1.9.0.dev.2

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -22
  3. data/Steepfile +35 -26
  4. data/bin/rbs-inline +19 -0
  5. data/lib/steep/cli.rb +38 -5
  6. data/lib/steep/diagnostic/ruby.rb +11 -58
  7. data/lib/steep/drivers/annotations.rb +1 -1
  8. data/lib/steep/drivers/check.rb +103 -1
  9. data/lib/steep/drivers/checkfile.rb +10 -8
  10. data/lib/steep/drivers/print_project.rb +83 -40
  11. data/lib/steep/drivers/utils/driver_helper.rb +39 -6
  12. data/lib/steep/drivers/watch.rb +24 -2
  13. data/lib/steep/index/signature_symbol_provider.rb +8 -8
  14. data/lib/steep/interface/builder.rb +14 -1
  15. data/lib/steep/interface/function.rb +2 -2
  16. data/lib/steep/path_helper.rb +4 -2
  17. data/lib/steep/project/dsl.rb +176 -151
  18. data/lib/steep/project/group.rb +31 -0
  19. data/lib/steep/project/pattern.rb +4 -0
  20. data/lib/steep/project/target.rb +32 -6
  21. data/lib/steep/project.rb +38 -10
  22. data/lib/steep/server/custom_methods.rb +16 -0
  23. data/lib/steep/server/delay_queue.rb +0 -3
  24. data/lib/steep/server/interaction_worker.rb +2 -11
  25. data/lib/steep/server/master.rb +129 -279
  26. data/lib/steep/server/target_group_files.rb +205 -0
  27. data/lib/steep/server/type_check_controller.rb +366 -0
  28. data/lib/steep/server/type_check_worker.rb +60 -86
  29. data/lib/steep/services/file_loader.rb +23 -0
  30. data/lib/steep/services/goto_service.rb +40 -31
  31. data/lib/steep/services/hover_provider/singleton_methods.rb +4 -4
  32. data/lib/steep/services/path_assignment.rb +23 -4
  33. data/lib/steep/services/type_check_service.rb +76 -159
  34. data/lib/steep/signature/validator.rb +4 -4
  35. data/lib/steep/subtyping/check.rb +2 -2
  36. data/lib/steep/thread_waiter.rb +24 -16
  37. data/lib/steep/type_construction.rb +12 -3
  38. data/lib/steep/type_inference/block_params.rb +1 -2
  39. data/lib/steep/type_inference/context.rb +1 -1
  40. data/lib/steep/type_inference/type_env.rb +4 -4
  41. data/lib/steep/type_inference/type_env_builder.rb +1 -1
  42. data/lib/steep/version.rb +1 -1
  43. data/lib/steep.rb +6 -4
  44. data/sample/Steepfile +6 -0
  45. data/sample/lib/conference.rb +1 -5
  46. data/steep.gemspec +7 -1
  47. metadata +9 -6
  48. data/lib/steep/drivers/validate.rb +0 -65
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d97696cd49dd790a9b26f7682c1a1afc930ae0e16015b68f0a5b171851551f66
4
- data.tar.gz: f2bb9e1a958fe0da3c8b92cf3710bbaeb2eaa6267e38717d46727583e4322638
3
+ metadata.gz: 89c207623c288c2142cdcf7d7de7f404da4d160b5bc40c84210116a721ec4029
4
+ data.tar.gz: dfd95e726115676f4d293d312bd1f06afa6ea89336911e9887c8e4b5ee1167ff
5
5
  SHA512:
6
- metadata.gz: 69365a7f7bd5919a26bd769c7fa800b51845a93d7dbdbd5c436e72a510098168dbc3ed3d9699399b2a8f0d16f9066d0d3e0ffff835fef0bcf9bce96cfd04d8bf
7
- data.tar.gz: 5de2dbf818393ec2544a189062f0cad66f5c1b348543ff58861f96f65db53aa55e4e9928f1898ae6afd386116124d4b8554df3180983afe771b6c46f1d77ac3f
6
+ metadata.gz: c9800ef17d4108ff391642510701e12a0ec4e63035c74765ed1203fa9b62d964be10441d60890ab3c643dc8d0295dd2a68be5285126307f3cb401f517eaa799f
7
+ data.tar.gz: 3ef2c5d7bac4dd2d492df8e5c60322de6c06d9c33cec21e2a97e4608f235e41729f0383e0817cfd324213853cad4c34308b14f5a582eedda71d36828545d6840
data/CHANGELOG.md CHANGED
@@ -1,27 +1,5 @@
1
1
  # CHANGELOG
2
2
 
3
- ## 1.8.3 (2024-10-29)
4
-
5
- ### Type checker core
6
-
7
- * Fix untyped hash typing ([#1299](https://github.com/soutaro/steep/pull/1299), Backport in [#1301](https://github.com/soutaro/steep/pull/1301))
8
-
9
- ### Language server
10
-
11
- * Handle file deletion notification ([#1300](https://github.com/soutaro/steep/pull/1300), Backport in [#1301](https://github.com/soutaro/steep/pull/1301))
12
-
13
- ## 1.8.2 (2024-10-24)
14
-
15
- ### Language server
16
-
17
- * Ignore `didChangeWatchedFiles notification` for open files ([#1290](https://github.com/soutaro/steep/pull/1290))
18
-
19
- ## 1.8.1 (2024-10-08)
20
-
21
- ### Language server
22
-
23
- * Skip sending response to `$/steep/typecheck` request from `steep langserver` ([#1268](https://github.com/soutaro/steep/pull/1268), backport [#1267](https://github.com/soutaro/steep/pull/1267))
24
-
25
3
  ## 1.8.0 (2024-09-30)
26
4
 
27
5
  ### Type checker core
data/Steepfile CHANGED
@@ -1,42 +1,51 @@
1
1
  D = Steep::Diagnostic
2
2
 
3
+ FileUtils.mkpath("tmp")
4
+ tmp_rbs_dir = Pathname("tmp/rbs-sig")
5
+
6
+ definition = Bundler::Definition.build(Pathname("Gemfile"), Pathname("Gemfile.lock"), nil)
7
+ rbs_dep = definition.dependencies.find {|dep| dep.name == "rbs" }
8
+ if (source = rbs_dep&.source).is_a?(Bundler::Source::Path)
9
+ unless tmp_rbs_dir.directory?
10
+ FileUtils.ln_s(Pathname.pwd + source.path + "sig", tmp_rbs_dir.to_s, force: true)
11
+ end
12
+ else
13
+ FileUtils.rm_f(tmp_rbs_dir)
14
+ library "rbs"
15
+ end
16
+
3
17
  target :app do
18
+ collection_config "rbs_collection.steep.yaml"
19
+
4
20
  check "lib"
5
21
  ignore "lib/steep/shims"
6
22
 
7
23
  signature "sig"
8
-
9
- collection_config "rbs_collection.steep.yaml"
24
+ ignore_signature "sig/test"
10
25
 
11
26
  configure_code_diagnostics(D::Ruby.strict) do |hash|
12
27
  end
13
28
 
14
- FileUtils.mkpath("tmp")
15
- tmp_rbs_dir = File.join("tmp", "rbs-sig")
16
-
17
- definition = Bundler::Definition.build(Pathname("Gemfile"), Pathname("Gemfile.lock"), nil)
18
- rbs_dep = definition.dependencies.find {|dep| dep.name == "rbs" }
19
- if (source = rbs_dep&.source).is_a?(Bundler::Source::Path)
20
- unless Pathname(tmp_rbs_dir).exist?
21
- FileUtils.ln_s(Pathname.pwd + source.path + "sig", tmp_rbs_dir, force: true)
22
- end
23
- signature tmp_rbs_dir
29
+ if tmp_rbs_dir.directory?
30
+ signature tmp_rbs_dir.to_s
24
31
  else
25
- FileUtils.rm_f(tmp_rbs_dir)
26
32
  library "rbs"
27
33
  end
34
+ end
35
+
36
+ target :test do
37
+ collection_config "rbs_collection.steep.yaml"
38
+
39
+ unreferenced!
40
+
41
+ check "test"
42
+ signature "sig/test"
28
43
 
29
- library(
30
- "rdoc",
31
- "monitor",
32
- "tsort",
33
- "uri",
34
- 'yaml',
35
- 'pstore',
36
- 'singleton',
37
- 'shellwords',
38
- 'find',
39
- 'digest',
40
- "optparse",
41
- )
44
+ configure_code_diagnostics(D::Ruby.lenient)
45
+
46
+ if tmp_rbs_dir.directory?
47
+ signature tmp_rbs_dir.to_s
48
+ else
49
+ library "rbs"
50
+ end
42
51
  end
data/bin/rbs-inline ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bash
2
+
3
+ BINSTUB_DIR=$(cd $(dirname $0); pwd)
4
+ GEMFILE=$(readlink -f ${BINSTUB_DIR}/../gemfile_steep/Gemfile)
5
+ ROOT_DIR=$(readlink -f ${BINSTUB_DIR}/..)
6
+
7
+ RBSINLINE="bundle exec --gemfile=${GEMFILE} rbs-inline"
8
+
9
+ if type "rbenv" > /dev/null 2>&1; then
10
+ RBSINLINE="rbenv exec ${RBSINLINE}"
11
+ else
12
+ if type "rvm" > /dev/null 2>&1; then
13
+ if [ -e ${ROOT_DIR}/.ruby-version ]; then
14
+ RBS="rvm ${ROOT_DIR} do ${RBSINLINE}"
15
+ fi
16
+ fi
17
+ fi
18
+
19
+ exec $RBSINLINE $@
data/lib/steep/cli.rb CHANGED
@@ -126,6 +126,39 @@ module Steep
126
126
  opts.on("--severity-level=LEVEL", /^error|warning|information|hint$/, "Specify the minimum diagnostic severity to be recognized as an error (defaults: warning): error, warning, information, or hint") do |level|
127
127
  command.severity_level = level.to_sym
128
128
  end
129
+
130
+ opts.on("--group=GROUP", "Specify target/group name to type check") do |arg|
131
+ # @type var group: String
132
+ target, group = arg.split(".")
133
+ target or raise
134
+ command.active_group_names << [target.to_sym, group&.to_sym]
135
+ end
136
+
137
+ opts.on("--[no-]type-check", "Type check Ruby code") do |v|
138
+ command.type_check_code = v ? true : false
139
+ end
140
+
141
+ opts.on("--validate=OPTION", ["skip", "group", "project", "library"], "Validation levels of signatures (default: group, options: skip,group,project,library)") do |level|
142
+ case level
143
+ when "skip"
144
+ command.validate_group_signatures = false
145
+ command.validate_project_signatures = false
146
+ command.validate_library_signatures = false
147
+ when "group"
148
+ command.validate_group_signatures = true
149
+ command.validate_project_signatures = false
150
+ command.validate_library_signatures = false
151
+ when "project"
152
+ command.validate_group_signatures = true
153
+ command.validate_project_signatures = true
154
+ command.validate_library_signatures = false
155
+ when "library"
156
+ command.validate_group_signatures = true
157
+ command.validate_project_signatures = true
158
+ command.validate_library_signatures = true
159
+ end
160
+ end
161
+
129
162
  handle_jobs_option command.jobs_option, opts
130
163
  handle_logging_options opts
131
164
  end.parse!(argv)
@@ -179,11 +212,8 @@ module Steep
179
212
  end
180
213
 
181
214
  def process_validate
182
- Drivers::Validate.new(stdout: stdout, stderr: stderr).tap do |command|
183
- OptionParser.new do |opts|
184
- handle_logging_options opts
185
- end.parse!(argv)
186
- end.run
215
+ stderr.puts "`steep validate` is deprecated. Use `steep check` with `--validate` option instead."
216
+ 1
187
217
  end
188
218
 
189
219
  def process_annotations
@@ -202,6 +232,9 @@ module Steep
202
232
  OptionParser.new do |opts|
203
233
  opts.banner = "Usage: steep project [options]"
204
234
  opts.on("--steepfile=PATH") {|path| command.steepfile = Pathname(path) }
235
+ opts.on("--[no-]print-files", "Print files") {|v|
236
+ command.print_files = v ? true : false
237
+ }
205
238
  handle_logging_options opts
206
239
  end.parse!(argv)
207
240
  end.run
@@ -458,22 +458,6 @@ module Steep
458
458
  end
459
459
  end
460
460
 
461
- class IncompatibleMethodTypeAnnotation < Base
462
- attr_reader :interface_method
463
- attr_reader :annotation_method
464
- attr_reader :result
465
-
466
- include ResultPrinter
467
-
468
- def initialize(node:, interface_method:, annotation_method:, result:)
469
- raise
470
- super(node: node)
471
- @interface_method = interface_method
472
- @annotation_method = annotation_method
473
- @result = result
474
- end
475
- end
476
-
477
461
  class MethodReturnTypeAnnotationMismatch < Base
478
462
  attr_reader :method_type
479
463
  attr_reader :annotation_type
@@ -697,25 +681,6 @@ module Steep
697
681
  end
698
682
  end
699
683
 
700
- class IncompatibleTypeCase < Base
701
- attr_reader :var_name
702
- attr_reader :result
703
- attr_reader :relation
704
-
705
- def initialize(node:, var_name:, result:, relation:)
706
- super(node: node)
707
- @var_name = var_name
708
- @result = result
709
- @relation = relation
710
- end
711
-
712
- include ResultPrinter
713
-
714
- def header_line
715
- "Type annotation for branch about `#{var_name}` is incompatible since #{relation} doesn't hold"
716
- end
717
- end
718
-
719
684
  class UnreachableBranch < Base
720
685
  def header_line
721
686
  "The branch is unreachable"
@@ -735,19 +700,6 @@ module Steep
735
700
  end
736
701
  end
737
702
 
738
- class UnexpectedSplat < Base
739
- attr_reader :type
740
-
741
- def initialize(node:, type:)
742
- super(node: node)
743
- @type = type
744
- end
745
-
746
- def header_line
747
- "Hash splat is given with object other than `Hash[X, Y]`"
748
- end
749
- end
750
-
751
703
  class ProcTypeExpected < Base
752
704
  attr_reader :type
753
705
 
@@ -965,6 +917,13 @@ module Steep
965
917
  end
966
918
  end
967
919
 
920
+ class UnannotatedEmptyCollection < Base
921
+ def header_line
922
+ node or raise
923
+ "Empty #{node.type} doesn't have type annotation"
924
+ end
925
+ end
926
+
968
927
  ALL = ObjectSpace.each_object(Class).with_object([]) do |klass, array|
969
928
  if klass < Base
970
929
  array << klass
@@ -991,8 +950,6 @@ module Steep
991
950
  IncompatibleAnnotation => :hint,
992
951
  IncompatibleArgumentForwarding => :warning,
993
952
  IncompatibleAssignment => :hint,
994
- IncompatibleMethodTypeAnnotation => :hint,
995
- IncompatibleTypeCase => :hint,
996
953
  InsufficientKeywordArguments => :error,
997
954
  InsufficientPositionalArguments => :error,
998
955
  InsufficientTypeArgument => :hint,
@@ -1013,6 +970,7 @@ module Steep
1013
970
  SetterReturnTypeMismatch => :information,
1014
971
  SyntaxError => :hint,
1015
972
  TypeArgumentMismatchError => :hint,
973
+ UnannotatedEmptyCollection => :warning,
1016
974
  UnexpectedBlockGiven => :warning,
1017
975
  UnexpectedDynamicMethod => :hint,
1018
976
  UnexpectedError => :hint,
@@ -1020,7 +978,6 @@ module Steep
1020
978
  UnexpectedJumpValue => :hint,
1021
979
  UnexpectedKeywordArgument => :error,
1022
980
  UnexpectedPositionalArgument => :error,
1023
- UnexpectedSplat => :hint,
1024
981
  UnexpectedSuper => :information,
1025
982
  UnexpectedTypeArgument => :hint,
1026
983
  UnexpectedYield => :warning,
@@ -1050,8 +1007,6 @@ module Steep
1050
1007
  IncompatibleAnnotation => :error,
1051
1008
  IncompatibleArgumentForwarding => :error,
1052
1009
  IncompatibleAssignment => :error,
1053
- IncompatibleMethodTypeAnnotation => :error,
1054
- IncompatibleTypeCase => :error,
1055
1010
  InsufficientKeywordArguments => :error,
1056
1011
  InsufficientPositionalArguments => :error,
1057
1012
  InsufficientTypeArgument => :error,
@@ -1072,6 +1027,7 @@ module Steep
1072
1027
  SetterReturnTypeMismatch => :error,
1073
1028
  SyntaxError => :hint,
1074
1029
  TypeArgumentMismatchError => :error,
1030
+ UnannotatedEmptyCollection => :error,
1075
1031
  UnexpectedBlockGiven => :error,
1076
1032
  UnexpectedDynamicMethod => :information,
1077
1033
  UnexpectedError => :information,
@@ -1079,7 +1035,6 @@ module Steep
1079
1035
  UnexpectedJumpValue => :error,
1080
1036
  UnexpectedKeywordArgument => :error,
1081
1037
  UnexpectedPositionalArgument => :error,
1082
- UnexpectedSplat => :warning,
1083
1038
  UnexpectedSuper => :error,
1084
1039
  UnexpectedTypeArgument => :error,
1085
1040
  UnexpectedYield => :error,
@@ -1109,8 +1064,6 @@ module Steep
1109
1064
  IncompatibleAnnotation => nil,
1110
1065
  IncompatibleArgumentForwarding => :information,
1111
1066
  IncompatibleAssignment => :hint,
1112
- IncompatibleMethodTypeAnnotation => nil,
1113
- IncompatibleTypeCase => nil,
1114
1067
  InsufficientKeywordArguments => :information,
1115
1068
  InsufficientPositionalArguments => :information,
1116
1069
  InsufficientTypeArgument => nil,
@@ -1131,6 +1084,7 @@ module Steep
1131
1084
  SetterReturnTypeMismatch => nil,
1132
1085
  SyntaxError => :hint,
1133
1086
  TypeArgumentMismatchError => nil,
1087
+ UnannotatedEmptyCollection => :hint,
1134
1088
  UnexpectedBlockGiven => :hint,
1135
1089
  UnexpectedDynamicMethod => nil,
1136
1090
  UnexpectedError => :hint,
@@ -1138,7 +1092,6 @@ module Steep
1138
1092
  UnexpectedJumpValue => nil,
1139
1093
  UnexpectedKeywordArgument => :information,
1140
1094
  UnexpectedPositionalArgument => :information,
1141
- UnexpectedSplat => nil,
1142
1095
  UnexpectedSuper => nil,
1143
1096
  UnexpectedTypeArgument => nil,
1144
1097
  UnexpectedYield => :information,
@@ -1155,7 +1108,7 @@ module Steep
1155
1108
  end
1156
1109
 
1157
1110
  def self.silent
1158
- @silent ||= ALL.each.with_object({}) do |klass, hash|
1111
+ @silent ||= ALL.each.with_object({}) do |klass, hash| #$ template
1159
1112
  hash[klass] = nil
1160
1113
  end.freeze
1161
1114
  end
@@ -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(project: project))
24
+ service = Services::SignatureService.load_from(target.new_env_loader())
25
25
 
26
26
  sigs = loader.load_changes(target.signature_pattern, changes: {})
27
27
  service.update(sigs)
@@ -10,6 +10,12 @@ module Steep
10
10
  attr_accessor :save_expectations_path
11
11
  attr_accessor :severity_level
12
12
  attr_reader :jobs_option
13
+ attr_reader :targets
14
+ attr_reader :active_group_names
15
+ attr_accessor :type_check_code
16
+ attr_accessor :validate_group_signatures
17
+ attr_accessor :validate_project_signatures
18
+ attr_accessor :validate_library_signatures
13
19
 
14
20
  include Utils::DriverHelper
15
21
 
@@ -19,6 +25,27 @@ module Steep
19
25
  @command_line_patterns = []
20
26
  @severity_level = :warning
21
27
  @jobs_option = Utils::JobsOption.new()
28
+ @active_group_names = []
29
+ @type_check_code = true
30
+ @validate_group_signatures = true
31
+ @validate_project_signatures = false
32
+ @validate_library_signatures = false
33
+ end
34
+
35
+ def active_group?(group)
36
+ return true if active_group_names.empty?
37
+
38
+ case group
39
+ when Project::Target
40
+ active_group_names.any? {|target_name, group_name|
41
+ target_name == group.name && group_name == nil
42
+ }
43
+ when Project::Group
44
+ active_group_names.any? {|target_name, group_name|
45
+ target_name == group.target.name &&
46
+ (group_name == group.name || group_name.nil?)
47
+ }
48
+ end
22
49
  end
23
50
 
24
51
  def run
@@ -64,9 +91,54 @@ module Steep
64
91
  client_writer.write({ method: :initialize, id: initialize_id, params: DEFAULT_CLI_LSP_INITIALIZE_PARAMS })
65
92
  wait_for_response_id(reader: client_reader, id: initialize_id)
66
93
 
94
+ params = { library_paths: [], signature_paths: [], code_paths: [] } #: Server::CustomMethods::TypeCheck::params
95
+
96
+ if command_line_patterns.empty?
97
+ files = Server::TargetGroupFiles.new(project)
98
+ loader = Services::FileLoader.new(base_dir: project.base_dir)
99
+
100
+ project.targets.each do |target|
101
+ target.new_env_loader.each_dir do |_, dir|
102
+ RBS::FileFinder.each_file(dir, skip_hidden: true) do |path|
103
+ files.add_library_path(target, path)
104
+ end
105
+ end
106
+
107
+ loader.each_path_in_target(target) do |path|
108
+ files.add_path(path)
109
+ end
110
+ end
111
+
112
+ project.targets.each do |target|
113
+ target.groups.each do |group|
114
+ if active_group?(group)
115
+ load_files(files, group.target, group, params: params)
116
+ end
117
+ end
118
+ if active_group?(target)
119
+ load_files(files, target, target, params: params)
120
+ end
121
+ end
122
+ else
123
+ command_line_patterns.each do |pattern|
124
+ path = Pathname(pattern)
125
+ path = project.absolute_path(path)
126
+ next unless path.file?
127
+ if target = project.target_for_source_path(path)
128
+ params[:code_paths] << [target.name.to_s, path.to_s]
129
+ end
130
+ if target = project.target_for_signature_path(path)
131
+ params[:signature_paths] << [target.name.to_s, path.to_s]
132
+ end
133
+ end
134
+ end
135
+
136
+ Steep.logger.info { "Starting type check with #{params[:code_paths].size} Ruby files and #{params[:signature_paths].size} RBS signatures..." }
137
+ Steep.logger.debug { params.inspect }
138
+
67
139
  request_guid = SecureRandom.uuid
68
140
  Steep.logger.info { "Starting type checking: #{request_guid}" }
69
- client_writer.write(Server::CustomMethods::TypeCheck.request(request_guid, { guid: request_guid}))
141
+ client_writer.write(Server::CustomMethods::TypeCheck.request(request_guid, params))
70
142
 
71
143
  diagnostic_notifications = [] #: Array[LanguageServer::Protocol::Interface::PublishDiagnosticsParams]
72
144
  error_messages = [] #: Array[String]
@@ -132,6 +204,36 @@ module Steep
132
204
  return 1
133
205
  end
134
206
 
207
+ def load_files(files, target, group, params:)
208
+ if type_check_code
209
+ files.each_group_source_path(group) do |path|
210
+ params[:code_paths] << [target.name.to_s, target.project.absolute_path(path).to_s]
211
+ end
212
+ end
213
+ if validate_group_signatures
214
+ files.each_group_signature_path(group) do |path|
215
+ params[:signature_paths] << [target.name.to_s, target.project.absolute_path(path).to_s]
216
+ end
217
+ end
218
+ if validate_project_signatures
219
+ files.each_project_signature_path(target) do |path|
220
+ if path_target = files.signature_path_target(path)
221
+ params[:signature_paths] << [path_target.name.to_s, target.project.absolute_path(path).to_s]
222
+ end
223
+ end
224
+ if group.is_a?(Project::Group)
225
+ files.each_target_signature_path(target, group) do |path|
226
+ params[:signature_paths] << [target.name.to_s, target.project.absolute_path(path).to_s]
227
+ end
228
+ end
229
+ end
230
+ if validate_library_signatures
231
+ files.each_library_path(target) do |path|
232
+ params[:library_paths] << [target.name.to_s, path.to_s]
233
+ end
234
+ end
235
+ end
236
+
135
237
  def print_expectations(project:, all_files:, expectations_path:, notifications:)
136
238
  expectations = Expectations.load(path: expectations_path, content: expectations_path.read)
137
239
 
@@ -53,7 +53,7 @@ module Steep
53
53
  nil
54
54
  else
55
55
  command_line_args
56
- end
56
+ end #: Array[String]?
57
57
 
58
58
  if ruby_patterns
59
59
  loader.each_path_in_patterns(target.source_pattern, ruby_patterns) do |path|
@@ -69,7 +69,7 @@ module Steep
69
69
  nil
70
70
  else
71
71
  command_line_args
72
- end
72
+ end #: Array[String]
73
73
 
74
74
  if rbs_patterns
75
75
  loader.each_path_in_patterns(target.signature_pattern, rbs_patterns) do |path|
@@ -79,10 +79,10 @@ module Steep
79
79
  end
80
80
 
81
81
  stdin_input.each_key do |path|
82
- case ts = project.targets_for_path(path)
83
- when Array
82
+ case
83
+ when project.target_for_signature_path(path)
84
84
  signature_paths << path
85
- when Project::Target
85
+ when project.target_for_source_path(path)
86
86
  target_paths << path
87
87
  end
88
88
  end
@@ -156,13 +156,15 @@ module Steep
156
156
 
157
157
  request_guid = master.fresh_request_id()
158
158
  progress = master.work_done_progress(request_guid)
159
- request = Server::Master::TypeCheckRequest.new(guid: request_guid, progress: progress)
159
+ request = Server::TypeCheckController::Request.new(guid: request_guid, progress: progress)
160
160
 
161
161
  target_paths.each do |path|
162
- request.code_paths << project.absolute_path(path)
162
+ target = project.target_for_source_path(path) or next
163
+ request.code_paths << [target.name, project.absolute_path(path)]
163
164
  end
164
165
  signature_paths.each do |path|
165
- request.signature_paths << project.absolute_path(path)
166
+ target = project.target_for_signature_path(path) or next
167
+ request.signature_paths << [target.name, project.absolute_path(path)]
166
168
  end
167
169
 
168
170
  request.needs_response = true