visitWith method
dynamic
visitWith(
- WithStatement node
)
Implementation
@override
visitWith(WithStatement node) {
final dynamic obj = getValueFromExpression(node.object);
if (obj is! Map) {
throw JSException(node.line ?? 1, 'with statement requires an object');
}
final dynamicContext = <String, dynamic>{};
obj.forEach((key, value) {
dynamicContext[key.toString()] = value;
});
final context = SimpleContext(dynamicContext);
_dynamicContexts.add(context);
try {
final rtn = node.body.visitBy(this);
context.getContextMap().forEach((key, value) {
obj[key] = value;
});
return rtn;
} finally {
_dynamicContexts.removeLast();
}
}