syntax_tree 4.0.0 → 4.0.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +4 -4
- data/lib/syntax_tree/node.rb +14 -0
- data/lib/syntax_tree/version.rb +1 -1
- data/lib/syntax_tree/visitor/with_environment.rb +11 -11
- data/lib/syntax_tree.rb +0 -10
- data/syntax_tree.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d8670e1c7ff4d583f84ee1fc217c714d217c944f36bb2bba5e2527cdd9012c8
|
4
|
+
data.tar.gz: c00025ed6cfb6031f64c9531282d527ff5113b78fa1228b86774bb84bb834576
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb4cd48f69132f5685e24ebbd29bb020468be6bf2a9a191bc3bba6ebf45dd5d63b2f61669c1695ec1711be4bcb4a5a8a29191fae1051b63d0b7d09bb75e78c0a
|
7
|
+
data.tar.gz: 5f35a3f095d3208246c013bf18b2d93cd4066ac5375750d5100b1c893806edb8ce240230cd30d70cfb525e6dfae4bbbc1ab108b6d549750a37ab0b16ba07c437
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [4.0.1] - 2022-10-18
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- [#172](https://github.com/ruby-syntax-tree/syntax_tree/pull/172) - Use a refinement for `Symbol#name` addition so that other runtimes or tools don't get confused by its availability.
|
14
|
+
- [#173](https://github.com/ruby-syntax-tree/syntax_tree/pull/173) - Fix the `current_environment` usage to use the method instead of the instance variable.
|
15
|
+
- [#175](https://github.com/ruby-syntax-tree/syntax_tree/pull/175) - Update `prettier_print` requirement since v1.0.0 had a bug with `#breakable_return`.
|
16
|
+
|
9
17
|
## [4.0.0] - 2022-10-17
|
10
18
|
|
11
19
|
### Added
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
syntax_tree (4.0.
|
5
|
-
prettier_print (>= 1.0.
|
4
|
+
syntax_tree (4.0.1)
|
5
|
+
prettier_print (>= 1.0.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
@@ -14,7 +14,7 @@ GEM
|
|
14
14
|
parallel (1.22.1)
|
15
15
|
parser (3.1.2.1)
|
16
16
|
ast (~> 2.4.1)
|
17
|
-
prettier_print (1.0.
|
17
|
+
prettier_print (1.0.1)
|
18
18
|
rainbow (3.1.1)
|
19
19
|
rake (13.0.6)
|
20
20
|
regexp_parser (2.6.0)
|
@@ -29,7 +29,7 @@ GEM
|
|
29
29
|
rubocop-ast (>= 1.20.1, < 2.0)
|
30
30
|
ruby-progressbar (~> 1.7)
|
31
31
|
unicode-display_width (>= 1.4.0, < 3.0)
|
32
|
-
rubocop-ast (1.
|
32
|
+
rubocop-ast (1.22.0)
|
33
33
|
parser (>= 3.1.1.0)
|
34
34
|
ruby-progressbar (1.11.0)
|
35
35
|
simplecov (0.21.2)
|
data/lib/syntax_tree/node.rb
CHANGED
@@ -1651,6 +1651,20 @@ module SyntaxTree
|
|
1651
1651
|
# array << value
|
1652
1652
|
#
|
1653
1653
|
class Binary < Node
|
1654
|
+
# Since Binary's operator is a symbol, it's better to use the `name` method
|
1655
|
+
# than to allocate a new string every time. This is a tiny performance
|
1656
|
+
# optimization, but enough that it shows up in the profiler. Adding this in
|
1657
|
+
# for older Ruby versions.
|
1658
|
+
unless :+.respond_to?(:name)
|
1659
|
+
using Module.new {
|
1660
|
+
refine Symbol do
|
1661
|
+
def name
|
1662
|
+
to_s.freeze
|
1663
|
+
end
|
1664
|
+
end
|
1665
|
+
}
|
1666
|
+
end
|
1667
|
+
|
1654
1668
|
# [untyped] the left-hand side of the expression
|
1655
1669
|
attr_reader :left
|
1656
1670
|
|
data/lib/syntax_tree/version.rb
CHANGED
@@ -64,19 +64,19 @@ module SyntaxTree
|
|
64
64
|
# arguments
|
65
65
|
def visit_params(node)
|
66
66
|
node.requireds.each do |param|
|
67
|
-
|
67
|
+
current_environment.add_local_definition(param, :argument)
|
68
68
|
end
|
69
69
|
|
70
70
|
node.posts.each do |param|
|
71
|
-
|
71
|
+
current_environment.add_local_definition(param, :argument)
|
72
72
|
end
|
73
73
|
|
74
74
|
node.keywords.each do |param|
|
75
|
-
|
75
|
+
current_environment.add_local_definition(param.first, :argument)
|
76
76
|
end
|
77
77
|
|
78
78
|
node.optionals.each do |param|
|
79
|
-
|
79
|
+
current_environment.add_local_definition(param.first, :argument)
|
80
80
|
end
|
81
81
|
|
82
82
|
super
|
@@ -84,21 +84,21 @@ module SyntaxTree
|
|
84
84
|
|
85
85
|
def visit_rest_param(node)
|
86
86
|
name = node.name
|
87
|
-
|
87
|
+
current_environment.add_local_definition(name, :argument) if name
|
88
88
|
|
89
89
|
super
|
90
90
|
end
|
91
91
|
|
92
92
|
def visit_kwrest_param(node)
|
93
93
|
name = node.name
|
94
|
-
|
94
|
+
current_environment.add_local_definition(name, :argument) if name
|
95
95
|
|
96
96
|
super
|
97
97
|
end
|
98
98
|
|
99
99
|
def visit_blockarg(node)
|
100
100
|
name = node.name
|
101
|
-
|
101
|
+
current_environment.add_local_definition(name, :argument) if name
|
102
102
|
|
103
103
|
super
|
104
104
|
end
|
@@ -108,7 +108,7 @@ module SyntaxTree
|
|
108
108
|
value = node.value
|
109
109
|
|
110
110
|
if value.is_a?(SyntaxTree::Ident)
|
111
|
-
|
111
|
+
current_environment.add_local_definition(value, :variable)
|
112
112
|
end
|
113
113
|
|
114
114
|
super
|
@@ -119,7 +119,7 @@ module SyntaxTree
|
|
119
119
|
# Visits for keeping track of variable and argument usages
|
120
120
|
def visit_aref_field(node)
|
121
121
|
name = node.collection.value
|
122
|
-
|
122
|
+
current_environment.add_local_usage(name, :variable) if name
|
123
123
|
|
124
124
|
super
|
125
125
|
end
|
@@ -128,10 +128,10 @@ module SyntaxTree
|
|
128
128
|
value = node.value
|
129
129
|
|
130
130
|
if value.is_a?(SyntaxTree::Ident)
|
131
|
-
definition =
|
131
|
+
definition = current_environment.find_local(value.value)
|
132
132
|
|
133
133
|
if definition
|
134
|
-
|
134
|
+
current_environment.add_local_usage(value, definition.type)
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
data/lib/syntax_tree.rb
CHANGED
@@ -22,16 +22,6 @@ require_relative "syntax_tree/visitor/with_environment"
|
|
22
22
|
|
23
23
|
require_relative "syntax_tree/parser"
|
24
24
|
|
25
|
-
# We rely on Symbol#name being available, which is only available in Ruby 3.0+.
|
26
|
-
# In case we're running on an older Ruby version, we polyfill it here.
|
27
|
-
unless :+.respond_to?(:name)
|
28
|
-
class Symbol # rubocop:disable Style/Documentation
|
29
|
-
def name
|
30
|
-
to_s.freeze
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
25
|
# Syntax Tree is a suite of tools built on top of the internal CRuby parser. It
|
36
26
|
# provides the ability to generate a syntax tree from source, as well as the
|
37
27
|
# tools necessary to inspect and manipulate that syntax tree. It can be used to
|
data/syntax_tree.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = %w[lib]
|
27
27
|
|
28
|
-
spec.add_dependency "prettier_print", ">= 1.0.
|
28
|
+
spec.add_dependency "prettier_print", ">= 1.0.1"
|
29
29
|
|
30
30
|
spec.add_development_dependency "bundler"
|
31
31
|
spec.add_development_dependency "minitest"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syntax_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Newton
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: prettier_print
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0.
|
19
|
+
version: 1.0.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0.
|
26
|
+
version: 1.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|