likely_eval no longer copies ast, it instead modifies ast->type in place