visitAssignmentAsync method
Implementation
@override
Future<dynamic> visitAssignmentAsync(Assignment node) async {
final value = await node.value.acceptAsync(this);
if (node.variable is Identifier) {
context.setVariable((node.variable as Identifier).name, value);
} else if (node.variable is MemberAccess) {
final memberAccess = node.variable as MemberAccess;
final objName = (memberAccess.object as Identifier).name;
if (context.getVariable(objName) == null) {
context.setVariable(objName, {});
}
var objectVal = context(objName);
for (var i = 0; i < memberAccess.members.length; i++) {
final name = (memberAccess.members[i] as Identifier).name;
if (i == memberAccess.members.length - 1) {
objectVal[name] = value;
} else {
if (!(objectVal as Map).containsKey(memberAccess.members[i])) {
objectVal[name] = {};
}
objectVal = objectVal[name];
}
}
}
}