Skip to content

Commit 9d4cb31

Browse files
committed
Improve ensure clause handling
1 parent d38097d commit 9d4cb31

2 files changed

Lines changed: 6 additions & 11 deletions

File tree

lib/typeprof/core/ast/control.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,17 +488,20 @@ def install0(genv)
488488
end
489489

490490
if @ensure_clause
491-
ensure_old_vtxs = {}
492491
vars.each do |var|
493-
ensure_old_vtxs[var] = @lenv.get_var(var)
492+
union_vtx = old_vtxs[var].new_vertex(genv, self)
493+
@changes.add_edge(genv, body_vtxs[var], union_vtx)
494+
clause_vtxs_list.each do |clause_vtx|
495+
@changes.add_edge(genv, clause_vtx[var], union_vtx)
496+
end
497+
@lenv.set_var(var, union_vtx)
494498
end
495499

496500
@ensure_clause.install(genv)
497501

498502
clause_vtxs_list << {}
499503
vars.each do |var|
500504
clause_vtxs_list.last[var] = @lenv.get_var(var)
501-
@lenv.set_var(var, ensure_old_vtxs[var])
502505
end
503506
end
504507

lib/typeprof/core/ast/method.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,6 @@ def initialize(raw_node, lenv, use_result)
133133
nlenv = LocalEnv.new(@lenv.path, ncref, {}, [])
134134
if raw_body
135135
@body = AST.create_node(raw_body, nlenv)
136-
137-
if raw_body.is_a?(Prism::BeginNode) && raw_body.ensure_clause && raw_body.ensure_clause.statements
138-
@ensure_clause = AST.create_node(raw_body.ensure_clause.statements, nlenv)
139-
end
140136
else
141137
pos = code_range.last.left.left.left # before "end"
142138
cr = TypeProf::CodeRange.new(pos, pos)
@@ -176,14 +172,12 @@ def initialize(raw_node, lenv, use_result)
176172
attr_reader :body
177173
attr_reader :rbs_method_type
178174
attr_reader :reusable
179-
attr_reader :ensure_clause
180175

181176
def subnodes = {
182177
body:,
183178
opt_positional_defaults:,
184179
opt_keyword_defaults:,
185180
rbs_method_type:,
186-
ensure_clause:,
187181
}
188182
def attrs = {
189183
singleton:,
@@ -253,8 +247,6 @@ def install0(genv)
253247
@body.lenv.add_return_box(@changes.add_escape_box(genv, @body.ret, e_ret))
254248
end
255249

256-
@ensure_clause.install(genv) if @ensure_clause
257-
258250
f_args = FormalArguments.new(
259251
req_positionals,
260252
opt_positionals,

0 commit comments

Comments
 (0)