steep 1.8.3 → 1.9.0.dev.2

Sign up to get free protection for your applications and to get access to all the features.
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