parlour 8.0.0 → 8.1.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: 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