+
+ case opid2('~', 'P'):
+ if (exprs[0]->expression.vtype != TYPE_FLOAT) {
+ ast_type_to_string(exprs[0], ty1, sizeof(ty1));
+ compile_error(ast_ctx(exprs[0]), "invalid type for bit not: %s", ty1);
+ return false;
+ }
+
+ if (ast_istype(exprs[0], ast_value) && asvalue[0]->cvq == CV_CONST) {
+ compile_error(ast_ctx(exprs[0]), "assignment to constant `%s`", asvalue[0]->name);
+ }
+
+ out = (ast_expression*)ast_binary_new(ctx, INSTR_SUB_F, (ast_expression*)parser_const_float(parser, -1), exprs[0]);
+ break;
+