error_highlight 0.5.1 → 0.6.0

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: 97374a7c69ab159c324e0592fae950fa9c065e9f3cd51130dbc2d39b65caa9c4
4
- data.tar.gz: 470ef6d7ce73943e6e0260a581211987286fd366cde3663ad06a25dccb5f7234
3
+ metadata.gz: 33a97fb38c24c4c0f5637b458a73525e7fcb3a1803e15d6478f009fd590afa0c
4
+ data.tar.gz: 16646ee686117659558ee48bb3b56f4fc48f01e7549b60240495f8f830794da8
5
5
  SHA512:
6
- metadata.gz: 6fceb2e95ac91526ebbb3b51e19c3a03cb888e77642045b4ab9b050abc0ab09f5e783a93edf7b22587e811d6b85cd1a798551ea2cebcaf1c82364318cee5c89b
7
- data.tar.gz: 5972069a5065563327401a9fcff877ecaaeda664c15d3bf4cc6285f97366d46ede0742c6ebc81e2a86738bc39f0193a32164c59eb10675c43e540ed8bb414d2b
6
+ metadata.gz: 228531308329b907adb5d78c8c3b031b954b49338cb13d2fb31aa30919b870a61c3809b17b9a67f0d7449049c6c456f33d47e7a1abb7597aad45f09262a5682d
7
+ data.tar.gz: 293349ee401c24887dea1459b84dbf3b2b76a93934d02759b1ccf8ff3cdb376f66025dc664f16ab5bb484982661e3804078e474e7fadcfb602d3657f581f7095
@@ -13,9 +13,9 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  strategy:
15
15
  matrix:
16
- ruby: [ 'ruby-head', '3.1' ]
16
+ ruby: [ 'ruby-head', '3.1', '3.2' ]
17
17
  steps:
18
- - uses: actions/checkout@v3
18
+ - uses: actions/checkout@v4
19
19
  - uses: ruby/setup-ruby@v1
20
20
  with:
21
21
  ruby-version: ${{ matrix.ruby }}
@@ -98,9 +98,40 @@ module ErrorHighlight
98
98
  end
99
99
  end
100
100
 
101
+ OPT_GETCONSTANT_PATH = (RUBY_VERSION.split(".").map {|s| s.to_i } <=> [3, 2]) >= 0
102
+ private_constant :OPT_GETCONSTANT_PATH
103
+
101
104
  def spot
102
105
  return nil unless @node
103
106
 
107
+ if OPT_GETCONSTANT_PATH && @node.type == :COLON2
108
+ # In Ruby 3.2 or later, a nested constant access (like `Foo::Bar::Baz`)
109
+ # is compiled to one instruction (opt_getconstant_path).
110
+ # @node points to the node of the whole `Foo::Bar::Baz` even if `Foo`
111
+ # or `Foo::Bar` causes NameError.
112
+ # So we try to spot the sub-node that causes the NameError by using
113
+ # `NameError#name`.
114
+ subnodes = []
115
+ node = @node
116
+ while node.type == :COLON2
117
+ node2, const = node.children
118
+ subnodes << node if const == @name
119
+ node = node2
120
+ end
121
+ if node.type == :CONST || node.type == :COLON3
122
+ if node.children.first == @name
123
+ subnodes << node
124
+ end
125
+
126
+ # If we found only one sub-node whose name is equal to @name, use it
127
+ return nil if subnodes.size != 1
128
+ @node = subnodes.first
129
+ else
130
+ # Do nothing; opt_getconstant_path is used only when the const base is
131
+ # NODE_CONST (`Foo`) or NODE_COLON3 (`::Foo`)
132
+ end
133
+ end
134
+
104
135
  case @node.type
105
136
 
106
137
  when :CALL, :QCALL
@@ -1,3 +1,3 @@
1
1
  module ErrorHighlight
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: error_highlight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke Endoh
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-14 00:00:00.000000000 Z
11
+ date: 2023-12-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: The gem enhances Exception#message by adding a short explanation where
14
14
  the exception is raised
@@ -35,7 +35,7 @@ homepage: https://github.com/ruby/error_highlight
35
35
  licenses:
36
36
  - MIT
37
37
  metadata: {}
38
- post_install_message:
38
+ post_install_message:
39
39
  rdoc_options: []
40
40
  require_paths:
41
41
  - lib
@@ -50,8 +50,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
50
  - !ruby/object:Gem::Version
51
51
  version: '0'
52
52
  requirements: []
53
- rubygems_version: 3.3.7
54
- signing_key:
53
+ rubygems_version: 3.5.0.dev
54
+ signing_key:
55
55
  specification_version: 4
56
56
  summary: Shows a one-line code snippet with an underline in the error backtrace
57
57
  test_files: []