Skip to content

Commit 98d89d5

Browse files
committed
Add captures for ClosureExprInnerTyped with nr2
Captures were only processed for regular ClosureExprInner. gcc/rust/ChangeLog: * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Add ClosureExprInnerTyped visit implementation. (add_captures): Add a function to avoid code duplication. * resolve/rust-late-name-resolver-2.0.h: Add function prototype. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
1 parent 2b47316 commit 98d89d5

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

gcc/rust/resolve/rust-late-name-resolver-2.0.cc

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,16 +390,29 @@ Late::visit (AST::GenericArg &arg)
390390
DefaultResolver::visit (arg);
391391
}
392392

393-
void
394-
Late::visit (AST::ClosureExprInner &closure)
393+
template <class Closure>
394+
static void
395+
add_captures (Closure &closure, NameResolutionContext &ctx)
395396
{
396397
auto vals = ctx.values.peek ().get_values ();
397398
for (auto &val : vals)
398399
{
399400
ctx.mappings.add_capture (closure.get_node_id (),
400401
val.second.get_node_id ());
401402
}
403+
}
402404

405+
void
406+
Late::visit (AST::ClosureExprInner &closure)
407+
{
408+
add_captures (closure, ctx);
409+
DefaultResolver::visit (closure);
410+
}
411+
412+
void
413+
Late::visit (AST::ClosureExprInnerTyped &closure)
414+
{
415+
add_captures (closure, ctx);
403416
DefaultResolver::visit (closure);
404417
}
405418

gcc/rust/resolve/rust-late-name-resolver-2.0.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class Late : public DefaultResolver
5757
void visit (AST::GenericArgs &) override;
5858
void visit (AST::GenericArg &);
5959
void visit (AST::ClosureExprInner &) override;
60+
void visit (AST::ClosureExprInnerTyped &) override;
6061

6162
private:
6263
/* Setup Rust's builtin types (u8, i32, !...) in the resolver */

0 commit comments

Comments
 (0)