{
if (tmpl_rules_cast(vpt) != FR_TYPE_NULL) return tmpl_rules_cast(vpt);
+ if (vpt->quote != T_BARE_WORD) return FR_TYPE_STRING;
+
if (tmpl_is_data(vpt)) return tmpl_value_type(vpt);
if (tmpl_is_attr(vpt)) return tmpl_attr_tail_da(vpt)->type;
if (xlat_exp_next(head, node)) return FR_TYPE_NULL;
+ if (node->quote != T_BARE_WORD) return FR_TYPE_STRING;
+
if (node->type == XLAT_FUNC) {
return node->call.func->return_type;
}
--- /dev/null
+#
+# PRE: switch
+#
+
+switch "%str.substr(%{User-Name}, 0, 3)" {
+ case 'bob' {
+ success
+ }
+
+ case 'doug' {
+ Filter-Id := "doug"
+ test_fail
+ }
+
+ default {
+ Filter-Id := "default"
+ test_fail
+ }
+}