Thread (2 messages) 2 messages, 2 authors, 2016-06-15

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/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help