parlour 8.0.0 → 8.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 582795fa8110d41a3772eefeb31873feccb06b60c5ee12e5c58681913a96ff51
4
- data.tar.gz: 9035f9e26cb6b799f6c2982b4a0731fa5b4750bbea9e960158d0cf088b05fac8
3
+ metadata.gz: f3849a9995ec5ce41eeee0c180ac14d76d6e5ee2c7c7f9ecd61760d4279fc887
4
+ data.tar.gz: bd5ee90c62e2c55eebd233fec2bff3a0974e24204d79cecc627bce48e413dd64
5
5
  SHA512:
6
- metadata.gz: 3d3987aaad533c76f3d63cb9187f815e3d8fab5616db8458e5676558526cdea9dcd808a4adec629bf4bd848c3a5886a1f1fb802ececf9aca0b16f29280e3f577
7
- data.tar.gz: e3f80d41de1d9aeb73810720c2690016a05347e15fab5d00535fe1bc192305620b5fca58f881ea77fa114f5d2f6c41527a7dfc38cf53a7421dce4d658b9e61ba
6
+ metadata.gz: 2de0e9b4aa6cd1c52a55453b7bf03da1247815a090de02ae0b105057c16e1aad0ed1ddf32d20dffc0727510321fb69b902b07a7e0bd03f268cb7331c0449b8cc
7
+ data.tar.gz: af13b87ff52638b9cefb29356dd7dec277667ef36ff656b4ced99c348cb9252828345c3de7f20d443594a7c09757ecd273e33d704df00109e5e4d2eafd5d3b0d
@@ -10,7 +10,7 @@ jobs:
10
10
  test:
11
11
  strategy:
12
12
  matrix:
13
- ruby: [2.4, 2.5, 2.6, 2.7, 3.0]
13
+ ruby: [2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2]
14
14
  continue-on-error: false
15
15
 
16
16
  runs-on: ubuntu-latest
data/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
5
5
 
6
+ ## [8.1.0] - 2023-01-01
7
+ ### Added
8
+ - Parsed method definitions can now have a modifier before the `def` keyword.
9
+
10
+ ### Fixed
11
+ - Use `File#exist?` instead of `File#exists?` in CLI, fixing an exception on
12
+ Ruby 3.2.0.
13
+ - Resolved incorrect code generation for `T::Enum`s with only one variant.
14
+
6
15
  ## [8.0.0] - 2022-05-10
7
16
  ### Changed
8
17
  - The parser now loads untyped methods named `initialize` as returning `void`, rather than
data/exe/parlour CHANGED
@@ -18,7 +18,7 @@ command :run do |c|
18
18
  working_dir = Dir.pwd
19
19
  config_filename = File.join(working_dir, '.parlour')
20
20
 
21
- if File.exists?(config_filename)
21
+ if File.exist?(config_filename)
22
22
  configuration = keys_to_symbols(YAML.load_file(config_filename))
23
23
  else
24
24
  configuration = {}
@@ -245,7 +245,16 @@ module Parlour
245
245
  (body.type == :begin ? body.to_a : [body]).find { |x| x.type == :block && x.to_a[0].type == :send && x.to_a[0].to_a[1] == :enums }
246
246
 
247
247
  # Find the constant assigments within this block
248
- constant_nodes = enums_node.to_a[2].to_a
248
+ # (If there's only one constant assignment, then that `casgn` node
249
+ # will be a direct child, not wrapped in a body)
250
+ enum_inner = enums_node.to_a[2]
251
+ if enum_inner.nil?
252
+ constant_nodes = []
253
+ elsif enum_inner.type == :begin
254
+ constant_nodes = enum_inner.to_a
255
+ else
256
+ constant_nodes = [enum_inner]
257
+ end
249
258
 
250
259
  # Convert this to an array to enums as EnumClassNamespace expects
251
260
  enums = constant_nodes.map do |constant_node|
@@ -490,6 +499,10 @@ module Parlour
490
499
  # A :def node represents a definition like "def x; end"
491
500
  # A :defs node represents a definition like "def self.x; end"
492
501
  def_node = path.sibling(1).traverse(ast)
502
+ if def_node.type == :send && [:def, :defs].include?(def_node.children.last.type)
503
+ # bypass inline modifier (e.g. "private")
504
+ def_node = def_node.children.last
505
+ end
493
506
  case def_node.type
494
507
  when :def
495
508
  class_method = false
@@ -1,5 +1,5 @@
1
1
  # typed: strong
2
2
  module Parlour
3
3
  # The library version.
4
- VERSION = '8.0.0'
4
+ VERSION = '8.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parlour
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Christiansen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-10 00:00:00.000000000 Z
11
+ date: 2023-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime
@@ -243,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
243
  - !ruby/object:Gem::Version
244
244
  version: '0'
245
245
  requirements: []
246
- rubygems_version: 3.2.22
246
+ rubygems_version: 3.4.1
247
247
  signing_key:
248
248
  specification_version: 4
249
249
  summary: A type information generator, merger and parser for Sorbet and Ruby 3/Steep