Skip to content

Commit 968e054

Browse files
committed
Require "prism >= 0.29.0"
1 parent e3031bc commit 968e054

4 files changed

Lines changed: 10 additions & 40 deletions

File tree

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
strategy:
5454
fail-fast: false
5555
matrix:
56-
prism: ['latest', '0.28.0', '0.27.0', '0.24.0', '0.21.0', '0.19.0']
56+
prism: ['latest', '0.30.0', '0.29.0']
5757
env:
5858
GEMFILE_PRISM_VERSION: ${{ matrix.prism }}
5959
steps:

lib/repl_type_completor.rb

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,7 @@ def analyze_code(code, binding = Object::TOPLEVEL_BINDING)
111111
[:const, name, Types::SingletonType.new(Object), scope]
112112
end
113113
when Prism::ConstantReadNode, Prism::ConstantTargetNode
114-
name = target_node.name.to_s
115-
if parents.last.is_a? Prism::ConstantPathNode
116-
path_node = parents.last
117-
if path_node.parent # A::B
118-
receiver, scope = calculate_type_scope.call(path_node.parent)
119-
[:const, name, receiver, scope]
120-
else # ::A
121-
scope = calculate_scope.call
122-
[:const, name, Types::SingletonType.new(Object), scope]
123-
end
124-
else
125-
[:const, name, nil, calculate_scope.call]
126-
end
114+
[:const, target_node.name.to_s, nil, calculate_scope.call]
127115
when Prism::GlobalVariableReadNode, Prism::GlobalVariableTargetNode
128116
[:gvar, target_node.name.to_s, calculate_scope.call]
129117
when Prism::InstanceVariableReadNode, Prism::InstanceVariableTargetNode

lib/repl_type_completor/type_analyzer.rb

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,6 @@ def evaluate_and_or(node, scope, and_op:)
309309
end
310310
end
311311

312-
def operator_write_node_binop(node)
313-
# `operator` is deprecated in Prism 0.29.0
314-
node.respond_to?(:binary_operator) ? node.binary_operator : node.operator
315-
end
316-
317312
def evaluate_call_operator_write_node(node, scope) = evaluate_call_write(node, scope, :operator, node.write_name)
318313
def evaluate_call_and_write_node(node, scope) = evaluate_call_write(node, scope, :and, node.write_name)
319314
def evaluate_call_or_write_node(node, scope) = evaluate_call_write(node, scope, :or, node.write_name)
@@ -347,14 +342,14 @@ def evaluate_call_write(node, scope, operator, write_name)
347342
Types::UnionType[left, right]
348343
else
349344
right = evaluate node.value, scope
350-
method_call left, operator_write_node_binop(node), [right], nil, nil, scope, name_match: false
345+
method_call left, node.binary_operator, [right], nil, nil, scope, name_match: false
351346
end
352347
end
353348

354349
def evaluate_variable_operator_write(node, scope)
355350
left = scope[node.name.to_s] || Types::OBJECT
356351
right = evaluate node.value, scope
357-
scope[node.name.to_s] = method_call left, operator_write_node_binop(node), [right], nil, nil, scope, name_match: false
352+
scope[node.name.to_s] = method_call left, node.binary_operator, [right], nil, nil, scope, name_match: false
358353
end
359354
alias evaluate_global_variable_operator_write_node evaluate_variable_operator_write
360355
alias evaluate_local_variable_operator_write_node evaluate_variable_operator_write
@@ -383,7 +378,7 @@ def evaluate_variable_or_write(node, scope)
383378
def evaluate_constant_operator_write_node(node, scope)
384379
left = scope[node.name.to_s] || Types::OBJECT
385380
right = evaluate node.value, scope
386-
scope[node.name.to_s] = method_call left, operator_write_node_binop(node), [right], nil, nil, scope, name_match: false
381+
scope[node.name.to_s] = method_call left, node.binary_operator, [right], nil, nil, scope, name_match: false
387382
end
388383

389384
def evaluate_constant_and_write_node(node, scope)
@@ -400,7 +395,7 @@ def evaluate_constant_or_write_node(node, scope)
400395
def evaluate_constant_path_operator_write_node(node, scope)
401396
left, receiver, _parent_module, name = evaluate_constant_node_info node.target, scope
402397
right = evaluate node.value, scope
403-
value = method_call left, operator_write_node_binop(node), [right], nil, nil, scope, name_match: false
398+
value = method_call left, node.binary_operator, [right], nil, nil, scope, name_match: false
404399
const_path_write receiver, name, value, scope
405400
value
406401
end
@@ -424,8 +419,7 @@ def evaluate_constant_path_or_write_node(node, scope)
424419
def evaluate_constant_path_write_node(node, scope)
425420
receiver = evaluate node.target.parent, scope if node.target.parent
426421
value = evaluate node.value, scope
427-
name = const_path_name(node.target)
428-
const_path_write receiver, name, value, scope
422+
const_path_write receiver, node.target.name.to_s, value, scope
429423
value
430424
end
431425

@@ -844,16 +838,6 @@ def evaluate_call_node_arguments(call_node, scope)
844838
[args_types, kwargs_types, block_sym_node, !!block_arg]
845839
end
846840

847-
def const_path_name(node)
848-
if node.respond_to?(:name)
849-
# ConstantPathNode#name ConstantPathTargetNode#name is added in Prism 0.28.0
850-
node.name.to_s
851-
else
852-
# ConstantPathNode#child ConstantPathTargetNode#child is deprecated in Prism 0.28.0
853-
node.child.name.to_s
854-
end
855-
end
856-
857841
def const_path_write(receiver, name, value, scope)
858842
if receiver # receiver::A = value
859843
singleton_type = receiver.types.find { _1.is_a? Types::SingletonType }
@@ -880,9 +864,9 @@ def assign_required_parameter(node, value, scope)
880864
end
881865

882866
def evaluate_constant_node_info(node, scope)
867+
name = node.name.to_s
883868
case node
884869
when Prism::ConstantPathNode
885-
name = const_path_name(node)
886870
if node.parent
887871
receiver = evaluate node.parent, scope
888872
if receiver.is_a? Types::SingletonType
@@ -898,7 +882,6 @@ def evaluate_constant_node_info(node, scope)
898882
type = Types::NIL
899883
end
900884
when Prism::ConstantReadNode
901-
name = node.name.to_s
902885
type = scope[name]
903886
end
904887
@dig_targets.resolve type, scope if @dig_targets.target? node
@@ -1053,8 +1036,7 @@ def evaluate_write(node, value, scope, evaluated_receivers)
10531036
scope[node.name.to_s] = value
10541037
when Prism::ConstantPathTargetNode
10551038
receiver = evaluated_receivers&.[](node.parent) || evaluate(node.parent, scope) if node.parent
1056-
name = const_path_name(node)
1057-
const_path_write receiver, name, value, scope
1039+
const_path_write receiver, node.name.to_s, value, scope
10581040
end
10591041
end
10601042

repl_type_completor.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ Gem::Specification.new do |spec|
2929
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
3030
spec.require_paths = ["lib"]
3131

32-
spec.add_dependency "prism", ">= 0.19.0"
32+
spec.add_dependency "prism", ">= 0.29.0"
3333
spec.add_dependency "rbs", ">= 2.7.0", "< 4.0.0"
3434
end

0 commit comments

Comments
 (0)