summaryrefslogtreecommitdiff
path: root/conf
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2023-07-03 17:00:58 +0200
committerOndrej Zajicek <santiago@crfreenet.org>2023-09-12 16:31:52 +0200
commitcc1099a04169b768cb4803686ee20423a6d3fede (patch)
tree2b13ebf140425dce022bab409d5f25ee496311e3 /conf
parentc696e3cb8e53229a438a8509a05e9d0ff27b8b4a (diff)
Filter: Implement multiple dispatch for methods
- Extend method descriptors with type signature - Daisy chain method descriptors for the same symbol - Dispatch methods for same symbol based on type signature - Split add/delete/filter operations to multiple methods - Replace ad-hoc dispatch of old-style syntax with scope-based dispatch - Also change method->arg_num to count initial arg It still needs some improvements, like better handling of untyped expressions and better error reporting when no dispatch can be done. The multiple dispatch could also be extended to dispatch regular function-like expressions in a uniform way.
Diffstat (limited to 'conf')
-rw-r--r--conf/cf-lex.l2
1 files changed, 1 insertions, 1 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l
index c4760e40..dcd54b81 100644
--- a/conf/cf-lex.l
+++ b/conf/cf-lex.l
@@ -687,7 +687,7 @@ cf_lex_symbol(const char *data)
return ENUM;
}
case SYM_METHOD:
- return sym->method->arg_num ? CF_SYM_METHOD_ARGS : CF_SYM_METHOD_BARE;
+ return (sym->method->arg_num > 1) ? CF_SYM_METHOD_ARGS : CF_SYM_METHOD_BARE;
case SYM_VOID:
return CF_SYM_UNDEFINED;
default: