SYM_FN
[SYM_FN] = "SYM_FN",
static struct symbol builtin_fn_type = { .type = SYM_FN /* , .variadic =1 */ };
struct symbol *fun = alloc_symbol(sym->pos, SYM_FN);
case SYM_FN:
if (sym == &void_ctype || (sym->type == SYM_FN &&
if (fn->type != SYM_FN)
if (!func_type || func_type->type != SYM_FN)
if (!type || type->type != SYM_FN)
case SYM_FN: {
if (sym->ctype.base_type->type == SYM_FN)
if (base && base->type == SYM_FN)
case SYM_FN:
break; case SYM_FN:
case SYM_PTR: case SYM_FN:
ret = ret->type == SYM_FN ? base_type(ret)
break; case SYM_FN:
if (b1->type == SYM_FN)
case SYM_FN:
case SYM_FN:
case SYM_FN:
if (ctype->type != SYM_FN) {
if (base_type->type == SYM_FN) {
[SYM_FN] = TYPE_PTR | TYPE_FN,
case SYM_FN: {
if (base_type->type == SYM_FN) {
if (base_type->type == SYM_FN)
fn = alloc_indirect_symbol(token->pos, ctype, SYM_FN);
struct symbol *fn = alloc_symbol(token->pos, SYM_FN);
} else if (base_type && base_type->type == SYM_FN) {
if (!is_typedef && base_type && base_type->type == SYM_FN) {
case SYM_FN:
case SYM_FN: {
[SYM_FN] = "fn..",
if (sym->ctype.base_type->type == SYM_FN)
if (sym->type == SYM_FN) {
type->type == SYM_FN);
if (!type || type->type != SYM_FN)
if (!type || type->type != SYM_FN)
if (!type || type->type != SYM_FN)
if (!type || type->type != SYM_FN)
if (base->type != SYM_FN)
if (sym->type != SYM_NODE || get_base_type(sym)->type != SYM_FN) {
if (sym->type == SYM_NODE && get_base_type(sym)->type == SYM_FN) {
if (!type || type->type != SYM_FN)
if (!type || type->type != SYM_FN)
if (!type || type->type != SYM_FN)
if (type->type == SYM_FN)
if (type->type != SYM_FN) {
if (!type || type->type != SYM_FN)
if (!type || type->type != SYM_FN)
if (!base_type || base_type->type != SYM_FN)
if (cur_func->type != SYM_FN)
type->type == SYM_FN))
(type->type == SYM_ARRAY || type->type == SYM_FN) &&
if (tmp->type != SYM_FN)
if (!sym || sym->type != SYM_FN)
if (!sym || sym->type != SYM_FN)
if (!sym || sym->type != SYM_FN)
if (fn_type->type != SYM_FN)
} else if (type->type == SYM_FN) {
.type = SYM_FN,
return sym && sym->type == SYM_FN && !sym->stmt;
case SYM_FN:
case SYM_FN:
[SYM_FN] = "function",
if (get_sym_type(next) == SYM_FN)
return type->type == SYM_PTR || type->type == SYM_ARRAY || type->type == SYM_FN;
return type->type == SYM_FN;
return type && type->type == SYM_FN;