auto rebind_path
= std::vector<std::pair<AST::SimplePath, AST::UseTreeRebind>> ();
+ auto &values_rib = ctx.values.peek ();
+ auto &types_rib = ctx.types.peek ();
+ auto ¯os_rib = ctx.macros.peek ();
+
// FIXME: How do we handle `use foo::{self}` imports? Some beforehand cleanup?
// How do we handle module imports in general? Should they get added to all
// namespaces?
flatten (tree.get (), paths, glob_path, rebind_path, this->ctx);
for (auto &&path : paths)
- imports_to_resolve.emplace_back (ImportKind::Simple (std::move (path)));
+ imports_to_resolve.emplace_back (
+ ImportKind::Simple (std::move (path), values_rib, types_rib, macros_rib));
for (auto &&glob : glob_path)
- imports_to_resolve.emplace_back (ImportKind::Glob (std::move (glob)));
+ imports_to_resolve.emplace_back (
+ ImportKind::Glob (std::move (glob), values_rib, types_rib, macros_rib));
for (auto &&rebind : rebind_path)
imports_to_resolve.emplace_back (
- ImportKind::Rebind (std::move (rebind.first), std::move (rebind.second)));
+ ImportKind::Rebind (std::move (rebind.first), std::move (rebind.second),
+ values_rib, types_rib, macros_rib));
}
} // namespace Resolver2_0
Rebind,
} kind;
- static ImportKind Glob (AST::SimplePath &&to_resolve)
+ static ImportKind Glob (AST::SimplePath &&to_resolve, Rib &values_rib,
+ Rib &types_rib, Rib ¯os_rib)
{
- return ImportKind (Kind::Glob, std::move (to_resolve));
+ return ImportKind (Kind::Glob, std::move (to_resolve), values_rib,
+ types_rib, macros_rib);
}
- static ImportKind Simple (AST::SimplePath &&to_resolve)
+ static ImportKind Simple (AST::SimplePath &&to_resolve, Rib &values_rib,
+ Rib &types_rib, Rib ¯os_rib)
{
- return ImportKind (Kind::Simple, std::move (to_resolve));
+ return ImportKind (Kind::Simple, std::move (to_resolve), values_rib,
+ types_rib, macros_rib);
}
static ImportKind Rebind (AST::SimplePath &&to_resolve,
- AST::UseTreeRebind &&rebind)
+ AST::UseTreeRebind &&rebind, Rib &values_rib,
+ Rib &types_rib, Rib ¯os_rib)
{
- return ImportKind (Kind::Rebind, std::move (to_resolve),
- std::move (rebind));
+ return ImportKind (Kind::Rebind, std::move (to_resolve), values_rib,
+ types_rib, macros_rib, std::move (rebind));
}
// The path for `Early` to resolve.
// The path to rebind an import to - only present if kind is Kind::Rebind
tl::optional<AST::UseTreeRebind> rebind;
+ Rib &values_rib;
+ Rib &types_rib;
+ Rib ¯os_rib;
+
private:
- ImportKind (Kind kind, AST::SimplePath &&to_resolve,
+ ImportKind (Kind kind, AST::SimplePath &&to_resolve, Rib &values_rib,
+ Rib &types_rib, Rib ¯os_rib,
tl::optional<AST::UseTreeRebind> &&rebind = tl::nullopt)
: kind (kind), to_resolve (std::move (to_resolve)),
- rebind (std::move (rebind))
+ rebind (std::move (rebind)), values_rib (values_rib),
+ types_rib (types_rib), macros_rib (macros_rib)
{}
};