Re: [PATCH v2 01/10] ref-filter: implement %(if), %(then), and %(else) atoms

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH v2 01/10] ref-filter: implement %(if), %(then), and %(else) atoms

From: Matthieu Moy <hidden>
Date: 2016-06-15 23:06:48

Karthik Nayak [off-list ref] writes:
+static void if_then_else_handler(struct ref_formatting_stack **stack)
+{
+	struct ref_formatting_stack *cur = *stack;
+	struct ref_formatting_stack *prev = cur->prev;
+	struct if_then_else *if_then_else = (struct if_then_else *)cur->at_end_data;
+
You should add

	if (!if_then_else->then_atom)
		die(_("format: %%(if) atom used without a %%(then) atom"));

here ...
+static void then_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state)
+{
+	struct ref_formatting_stack *cur = state->stack;
+	struct if_then_else *if_then_else = NULL;
+
+	if (cur->at_end == if_then_else_handler)
+		if_then_else = (struct if_then_else *)cur->at_end_data;
+	if (!if_then_else)
+		die(_("format: %%(then) atom used without an %%(if) atom"));
+	if (if_then_else->then_atom)
+		die(_("format: %%(then) atom used more than once"));
+	if_then_else->then_atom = 1;
... and

	if (if_then_else->else_atom)
		die(_("format: %%(then) atom used after %%(else)"));

here, just in case (adding the two corresponding test_must_fail wouldn't
harm of course).

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

Re: [PATCH v2 01/10] ref-filter: implement %(if), %(then), and %(else) atoms

From: Karthik Nayak <hidden>
Date: 2016-06-15 23:06:49

On Fri, Oct 9, 2015 at 12:18 AM, Matthieu Moy
[off-list ref] wrote:
Karthik Nayak [off-list ref] writes:
quoted
+static void if_then_else_handler(struct ref_formatting_stack **stack)
+{
+     struct ref_formatting_stack *cur = *stack;
+     struct ref_formatting_stack *prev = cur->prev;
+     struct if_then_else *if_then_else = (struct if_then_else *)cur->at_end_data;
+
You should add

        if (!if_then_else->then_atom)
                die(_("format: %%(if) atom used without a %%(then) atom"));

here ...
Will do.
quoted
+static void then_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state)
+{
+     struct ref_formatting_stack *cur = state->stack;
+     struct if_then_else *if_then_else = NULL;
+
+     if (cur->at_end == if_then_else_handler)
+             if_then_else = (struct if_then_else *)cur->at_end_data;
+     if (!if_then_else)
+             die(_("format: %%(then) atom used without an %%(if) atom"));
+     if (if_then_else->then_atom)
+             die(_("format: %%(then) atom used more than once"));
+     if_then_else->then_atom = 1;
... and

        if (if_then_else->else_atom)
                die(_("format: %%(then) atom used after %%(else)"));

here, just in case (adding the two corresponding test_must_fail wouldn't
harm of course).
Will do, thanks!

-- 
Regards,
Karthik Nayak
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help