visitUnaryExpr method
Implementation
@override
Object? visitUnaryExpr(UnaryExpr expr) {
final op = expr.prefix.type;
if (op == TokenType.kHash) {
final rhs = expr.rhs.accept(this);
if (rhs is LuaObject) {
return rhs.tableSize;
} else if (rhs != null) {
return 1;
} else {
final String lineInfo = this.lineInfo(expr.prefix);
throw '$lineInfo Length operator # used on nil value.';
}
} else {
final ret = expr.rhs.accept(this);
if (ret != null) {
if (op == TokenType.kSub) {
return switch (ret) {
final int i => -i,
final double d => -d,
_ => ret,
};
}
}
return ret;
}
}