solargraph 0.54.5 → 0.55.1

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/lib/solargraph/api_map/store.rb +3 -1
  4. data/lib/solargraph/api_map.rb +18 -8
  5. data/lib/solargraph/complex_type/unique_type.rb +88 -7
  6. data/lib/solargraph/complex_type.rb +35 -6
  7. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +60 -0
  8. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +100 -0
  9. data/lib/solargraph/convention/struct_definition.rb +101 -0
  10. data/lib/solargraph/convention.rb +1 -0
  11. data/lib/solargraph/doc_map.rb +49 -18
  12. data/lib/solargraph/language_server/host/message_worker.rb +10 -7
  13. data/lib/solargraph/language_server/host.rb +1 -0
  14. data/lib/solargraph/location.rb +8 -0
  15. data/lib/solargraph/parser/comment_ripper.rb +11 -6
  16. data/lib/solargraph/parser/flow_sensitive_typing.rb +226 -0
  17. data/lib/solargraph/parser/node_methods.rb +14 -0
  18. data/lib/solargraph/parser/node_processor.rb +0 -1
  19. data/lib/solargraph/parser/parser_gem/class_methods.rb +9 -0
  20. data/lib/solargraph/parser/parser_gem/node_chainer.rb +10 -10
  21. data/lib/solargraph/parser/parser_gem/node_methods.rb +3 -1
  22. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +21 -0
  23. data/lib/solargraph/parser/parser_gem/node_processors/casgn_node.rb +21 -1
  24. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +21 -0
  25. data/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb +26 -5
  26. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +41 -0
  27. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +28 -0
  28. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +28 -0
  29. data/lib/solargraph/parser/parser_gem/node_processors.rb +10 -0
  30. data/lib/solargraph/parser.rb +1 -0
  31. data/lib/solargraph/pin/base.rb +9 -3
  32. data/lib/solargraph/pin/base_variable.rb +7 -1
  33. data/lib/solargraph/pin/block.rb +2 -0
  34. data/lib/solargraph/pin/breakable.rb +9 -0
  35. data/lib/solargraph/pin/delegated_method.rb +18 -1
  36. data/lib/solargraph/pin/local_variable.rb +7 -1
  37. data/lib/solargraph/pin/method.rb +20 -18
  38. data/lib/solargraph/pin/namespace.rb +10 -7
  39. data/lib/solargraph/pin/parameter.rb +13 -5
  40. data/lib/solargraph/pin/proxy_type.rb +12 -6
  41. data/lib/solargraph/pin/until.rb +18 -0
  42. data/lib/solargraph/pin/while.rb +18 -0
  43. data/lib/solargraph/pin.rb +3 -0
  44. data/lib/solargraph/rbs_map/conversions.rb +8 -8
  45. data/lib/solargraph/rbs_map/core_fills.rb +10 -3
  46. data/lib/solargraph/source/chain/array.rb +4 -3
  47. data/lib/solargraph/source/chain/call.rb +46 -17
  48. data/lib/solargraph/source/chain/constant.rb +1 -1
  49. data/lib/solargraph/source/chain/hash.rb +3 -2
  50. data/lib/solargraph/source/chain/link.rb +2 -0
  51. data/lib/solargraph/source/chain/literal.rb +22 -2
  52. data/lib/solargraph/source/chain/z_super.rb +1 -1
  53. data/lib/solargraph/source/chain.rb +77 -47
  54. data/lib/solargraph/source/source_chainer.rb +2 -2
  55. data/lib/solargraph/source_map/clip.rb +3 -1
  56. data/lib/solargraph/type_checker/checks.rb +4 -0
  57. data/lib/solargraph/type_checker.rb +35 -8
  58. data/lib/solargraph/version.rb +1 -1
  59. data/lib/solargraph/yard_map/mapper/to_method.rb +42 -15
  60. metadata +14 -2
@@ -16,29 +16,55 @@ module Solargraph
16
16
  def self.make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
17
17
  closure ||= Solargraph::Pin::Namespace.new(
18
18
  name: code_object.namespace.to_s,
19
- gates: [code_object.namespace.to_s]
19
+ gates: [code_object.namespace.to_s],
20
+ type: code_object.namespace.is_a?(YARD::CodeObjects::ClassObject) ? :class : :module,
21
+ source: :yardoc,
20
22
  )
21
23
  location = object_location(code_object, spec)
22
24
  name ||= code_object.name.to_s
23
25
  return_type = ComplexType::SELF if name == 'new'
24
26
  comments = code_object.docstring ? code_object.docstring.all.to_s : ''
25
- pin = Pin::Method.new(
26
- location: location,
27
- closure: closure,
28
- name: name,
29
- comments: comments,
30
- scope: scope || code_object.scope,
31
- visibility: visibility || code_object.visibility,
32
- # @todo Might need to convert overloads to signatures
33
- parameters: [],
34
- explicit: code_object.is_explicit?,
35
- return_type: return_type
36
- )
37
- pin.parameters.concat get_parameters(code_object, location, comments, pin)
27
+ final_scope = scope || code_object.scope
28
+ final_visibility = visibility || code_object.visibility
29
+ if code_object.is_alias?
30
+ origin_code_object = code_object.namespace.aliases[code_object]
31
+ pin = Pin::MethodAlias.new(
32
+ name: name,
33
+ location: location,
34
+ original: origin_code_object.name.to_s,
35
+ closure: closure,
36
+ comments: comments,
37
+ scope: final_scope,
38
+ visibility: final_visibility,
39
+ explicit: code_object.is_explicit?,
40
+ return_type: return_type,
41
+ parameters: [],
42
+ source: :yardoc,
43
+ )
44
+ else
45
+ pin = Pin::Method.new(
46
+ location: location,
47
+ closure: closure,
48
+ name: name,
49
+ comments: comments,
50
+ scope: final_scope,
51
+ visibility: final_visibility,
52
+ # @todo Might need to convert overloads to signatures
53
+ explicit: code_object.is_explicit?,
54
+ return_type: return_type,
55
+ attribute: code_object.is_attribute?,
56
+ parameters: [],
57
+ source: :yardoc,
58
+ )
59
+ pin.parameters.concat get_parameters(code_object, location, comments, pin)
60
+ end
61
+ logger.debug { "ToMethod.make: Just created method pin: #{pin.inspect}" }
38
62
  pin
39
63
  end
40
64
 
41
65
  class << self
66
+ include Logging
67
+
42
68
  private
43
69
 
44
70
  # @param code_object [YARD::CodeObjects::Base]
@@ -59,7 +85,8 @@ module Solargraph
59
85
  name: arg_name(a),
60
86
  presence: nil,
61
87
  decl: arg_type(a),
62
- asgn_code: a[1]
88
+ asgn_code: a[1],
89
+ source: :yardoc,
63
90
  )
64
91
  end
65
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solargraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.54.5
4
+ version: 0.55.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-17 00:00:00.000000000 Z
11
+ date: 2025-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport
@@ -410,6 +410,9 @@ files:
410
410
  - lib/solargraph/convention/gemfile.rb
411
411
  - lib/solargraph/convention/gemspec.rb
412
412
  - lib/solargraph/convention/rakefile.rb
413
+ - lib/solargraph/convention/struct_definition.rb
414
+ - lib/solargraph/convention/struct_definition/struct_assignment_node.rb
415
+ - lib/solargraph/convention/struct_definition/struct_definition_node.rb
413
416
  - lib/solargraph/converters/dd.rb
414
417
  - lib/solargraph/converters/dl.rb
415
418
  - lib/solargraph/converters/dt.rb
@@ -493,6 +496,7 @@ files:
493
496
  - lib/solargraph/page.rb
494
497
  - lib/solargraph/parser.rb
495
498
  - lib/solargraph/parser/comment_ripper.rb
499
+ - lib/solargraph/parser/flow_sensitive_typing.rb
496
500
  - lib/solargraph/parser/node_methods.rb
497
501
  - lib/solargraph/parser/node_processor.rb
498
502
  - lib/solargraph/parser/node_processor/base.rb
@@ -503,6 +507,7 @@ files:
503
507
  - lib/solargraph/parser/parser_gem/node_methods.rb
504
508
  - lib/solargraph/parser/parser_gem/node_processors.rb
505
509
  - lib/solargraph/parser/parser_gem/node_processors/alias_node.rb
510
+ - lib/solargraph/parser/parser_gem/node_processors/and_node.rb
506
511
  - lib/solargraph/parser/parser_gem/node_processors/args_node.rb
507
512
  - lib/solargraph/parser/parser_gem/node_processors/begin_node.rb
508
513
  - lib/solargraph/parser/parser_gem/node_processors/block_node.rb
@@ -511,21 +516,26 @@ files:
511
516
  - lib/solargraph/parser/parser_gem/node_processors/def_node.rb
512
517
  - lib/solargraph/parser/parser_gem/node_processors/defs_node.rb
513
518
  - lib/solargraph/parser/parser_gem/node_processors/gvasgn_node.rb
519
+ - lib/solargraph/parser/parser_gem/node_processors/if_node.rb
514
520
  - lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb
515
521
  - lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb
516
522
  - lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb
517
523
  - lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb
524
+ - lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb
518
525
  - lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb
519
526
  - lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb
520
527
  - lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb
521
528
  - lib/solargraph/parser/parser_gem/node_processors/send_node.rb
522
529
  - lib/solargraph/parser/parser_gem/node_processors/sym_node.rb
530
+ - lib/solargraph/parser/parser_gem/node_processors/until_node.rb
531
+ - lib/solargraph/parser/parser_gem/node_processors/while_node.rb
523
532
  - lib/solargraph/parser/region.rb
524
533
  - lib/solargraph/parser/snippet.rb
525
534
  - lib/solargraph/pin.rb
526
535
  - lib/solargraph/pin/base.rb
527
536
  - lib/solargraph/pin/base_variable.rb
528
537
  - lib/solargraph/pin/block.rb
538
+ - lib/solargraph/pin/breakable.rb
529
539
  - lib/solargraph/pin/callable.rb
530
540
  - lib/solargraph/pin/class_variable.rb
531
541
  - lib/solargraph/pin/closure.rb
@@ -556,6 +566,8 @@ files:
556
566
  - lib/solargraph/pin/signature.rb
557
567
  - lib/solargraph/pin/singleton.rb
558
568
  - lib/solargraph/pin/symbol.rb
569
+ - lib/solargraph/pin/until.rb
570
+ - lib/solargraph/pin/while.rb
559
571
  - lib/solargraph/position.rb
560
572
  - lib/solargraph/range.rb
561
573
  - lib/solargraph/rbs_map.rb