评论者:mikethompson
明确一下
1. 当我们的调试器处于断点时,
2. 用户可以在 repl 中键入表达式,
3. 作为响应,我们的调试器必须将用户键入的表达式编译为 JavaScript(然后执行它,显示结果),
4. 考虑任何局部绑定。 <---- 这是最关键的部分。
为了满足第 4 点,我们的工具从当前的调用帧中提取所有“局部变量”,然后在这些局部绑定中将所有这些局部变量提供给 env/locals,这样编译器就不会在它们的前面添加名称空间。
例如,如果在调用栈中有一个对 'x' 的局部绑定,并且用户输入的表达式包含 'x',那么我们希望编译器保持 'x' 这个符号不变,不需要在它前面加上某个命名空间。在最终的 JavaScript 中,它仍然是 'x',而不是 'some.namespace.x'。
我们实现这一点的方法是在编译时将 'x' 放入 env/locals 中——一切正常。但是,随着最近的变化,这已经变成一个更大的挑战。因此,这个工单是要求提供传递 env 的方法。