visitUnary method
dynamic
visitUnary(
- UnaryExpression node
)
Implementation
@override
visitUnary(UnaryExpression node) {
dynamic val = getValueFromNode(node.argument);
switch (node.operator) {
case '-':
val = (val is num) ? -val : -toNumber(val);
break;
case '+':
val = toNumber(val);
break;
case '++':
val = (val is num) ? val + 1 : toNumber(val) + 1;
break;
case '--':
val = (val is num) ? val - 1 : toNumber(val) - 1;
break;
case '~':
val = (val is int) ? ~val : ~toNumber(val).toInt();
break;
case 'typeof':
val = _jsTypeOf(val);
break;
case '!':
val = !toBoolean(val);
break;
default:
throw JSException(
node.line ?? -1, "${node.operator} not yet implemented.",
detailedError: "Code: " + getCode(node));
}
return val;
}