solargraph 0.47.0 → 0.47.2

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: 65ba1769be95a6c7c20aa57ed559135063379214439bc7ab168a40f4bba0c698
4
- data.tar.gz: 37fcbabd10f82493704e38ccb8b849a358b59c8cee568ce53b92a7493ee82dc9
3
+ metadata.gz: 9d35030ae56f6aaff108a24e4fb06713f911ba4366feb2223b24ad0ea4568522
4
+ data.tar.gz: a9eeaee16171bc762922ac55d10c61d53bcfe6ef1df0b20623c81e0978a80c7d
5
5
  SHA512:
6
- metadata.gz: '04701577441892c4f9c596873dbbdf8c841125a83b642928be5e1e22adf8d8f3293dc1fe5f2b02a468328d3ecf530b27333cbbdf0be1187777a0637004aaae4a'
7
- data.tar.gz: 943f42ecf94e5c0fa26455d5974a8baa452a7382f23f215d01cd122031b65db78f2bacc90c51ad51df954f6171106377356a8ff30146c48b33f98d3e3abce96d
6
+ metadata.gz: 0b13ae6284def50f72c9aaed3cad6f89e879306dc8421b1c13f622e18181e6d9aaecf4f57ffa56601a00c92066557bb798d3e8ee6a397920ff0072f909e05463
7
+ data.tar.gz: 9a0366309ebe9a4a784c2933a8452e2084c376ff9aa3cd6c3bf555f4d6ce046f11245679c688bef43c6c1e67d94b70afb4250149c9b01b80fc525b80a80b6486
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.47.2 - September 30, 2022
2
+ - Fix complex type inference (#578)
3
+ - Off-by-one diagnostic (#595)
4
+
5
+ ## 0.47.1 - September 27, 2022
6
+ - Remove debug code from release (#600)
7
+
1
8
  ## 0.47.0 - September 25, 2022
2
9
  - Completion candidates for union types (#507)
3
10
  - Nullify Hover object instead of contents value (#583)
@@ -74,6 +74,10 @@ module Solargraph
74
74
  @items.all? &block
75
75
  end
76
76
 
77
+ def any? &block
78
+ @items.any? &block
79
+ end
80
+
77
81
  def selfy?
78
82
  @items.any?(&:selfy?)
79
83
  end
@@ -89,7 +89,7 @@ module Solargraph
89
89
  Position.new(off['location']['start_line'], 0)
90
90
  else
91
91
  Position.new(
92
- off['location']['start_line'] - 1, off['location']['last_column']
92
+ off['location']['start_line'] - 1, off['location']['last_column'] - 1
93
93
  )
94
94
  end
95
95
  end
@@ -175,11 +175,7 @@ module Solargraph
175
175
  api_map = nil
176
176
  time = Benchmark.measure {
177
177
  api_map = Solargraph::ApiMap.load(directory)
178
- pins = api_map.pins
179
- api_map.source_maps.each do |sm|
180
- pins.concat sm.locals
181
- end
182
- pins.each do |pin|
178
+ api_map.pins.each do |pin|
183
179
  begin
184
180
  puts pin_description(pin) if options[:verbose]
185
181
  pin.typify api_map
@@ -45,8 +45,6 @@ module Solargraph
45
45
  @node, @comments = Solargraph::Parser.parse_with_comments(@code, filename)
46
46
  @parsed = true
47
47
  rescue Parser::SyntaxError, EncodingError => e
48
- puts "[#{e.class}] #{e.message}"
49
- puts e.backtrace
50
48
  @node = nil
51
49
  @comments = {}
52
50
  @parsed = false
@@ -61,6 +61,19 @@ module Solargraph
61
61
  false
62
62
  end
63
63
 
64
+ # @param api_map [ApiMap]
65
+ # @param inferred [ComplexType]
66
+ # @param expected [ComplexType]
67
+ # @return [Boolean]
68
+ def all_types_match? api_map, inferred, expected
69
+ return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
70
+ inferred.each do |inf|
71
+ next if inf.duck_type?
72
+ return false unless expected.any? { |exp| exp == inf || either_way?(api_map, inf, exp) }
73
+ end
74
+ true
75
+ end
76
+
64
77
  # @param api_map [ApiMap]
65
78
  # @param expected [ComplexType]
66
79
  # @param inferred [ComplexType]
@@ -105,7 +105,7 @@ module Solargraph
105
105
  result.push Problem.new(pin.location, "#{pin.path} return type could not be inferred", pin: pin)
106
106
  end
107
107
  else
108
- unless (rules.rank > 1 ? types_match?(api_map, declared, inferred) : any_types_match?(api_map, declared, inferred))
108
+ unless (rules.rank > 1 ? all_types_match?(api_map, inferred, declared) : any_types_match?(api_map, declared, inferred))
109
109
  result.push Problem.new(pin.location, "Declared return type #{declared} does not match inferred type #{inferred} for #{pin.path}", pin: pin)
110
110
  end
111
111
  end
@@ -177,7 +177,7 @@ module Solargraph
177
177
  result.push Problem.new(pin.location, "Variable type could not be inferred for #{pin.name}", pin: pin)
178
178
  end
179
179
  else
180
- unless (rules.rank > 1 ? types_match?(api_map, declared, inferred) : any_types_match?(api_map, declared, inferred))
180
+ unless any_types_match?(api_map, declared, inferred)
181
181
  result.push Problem.new(pin.location, "Declared type #{declared} does not match inferred type #{inferred} for variable #{pin.name}", pin: pin)
182
182
  end
183
183
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.47.0'
4
+ VERSION = '0.47.2'
5
5
  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.47.0
4
+ version: 0.47.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-25 00:00:00.000000000 Z
11
+ date: 2022-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport