#include "binder/binder_scope.h"
namespace lbug {
namespace binder {
void BinderScope::addExpression(const std::string& varName,
std::shared_ptr<Expression> expression) {
nameToExprIdx.insert({varName, expressions.size()});
expressions.push_back(std::move(expression));
}
void BinderScope::replaceExpression(const std::string& oldName, const std::string& newName,
std::shared_ptr<Expression> expression) {
DASSERT(nameToExprIdx.contains(oldName));
auto idx = nameToExprIdx.at(oldName);
expressions[idx] = std::move(expression);
nameToExprIdx.erase(oldName);
nameToExprIdx.insert({newName, idx});
}
void BinderScope::clear() {
expressions.clear();
nameToExprIdx.clear();
}
} }