Skip to content

Commit a014af2

Browse files
committed
Add derive.param2.register
1 parent ad9fefe commit a014af2

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

apps/derive/elpi/param2.elpi

+9
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,15 @@ pred main i:gref, i:string, o:list prop.
222222
main T _ Clauses :-
223223
dispatch T "_R" Clauses.
224224

225+
pred main_register i:gref, i:gref.
226+
main_register I R :-
227+
GI = global I, GR = global R,
228+
C1 = (param GI GI GR :- !),
229+
coq.elpi.accumulate _ "derive.param2.db" (clause _ (before "param:fail") C1),
230+
C2 = (paramR GI GI GR :- !),
231+
coq.elpi.accumulate _ "derive.param2.db" (clause _ (before "paramR:fail") C2),
232+
coq.elpi.accumulate _ "derive.param2.db" (clause _ _ (param-done I)).
233+
225234
}
226235

227236
/*

apps/derive/tests/test_param2.v

+9
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,12 @@ Definition size_seq (A : Type) : size_of (list A) := fun _ => 0.
9292
Elpi derive.param2 size_of.
9393

9494
Elpi derive.param2 size_seq. (* Fixed by https://github.com/LPCIC/coq-elpi/pull/754 *)
95+
96+
Definition fa := 0.
97+
Definition fb := fa.
98+
99+
Fail Elpi derive.param2 fb.
100+
101+
Definition fa_R := O_R.
102+
Elpi derive.param2.register fa fa_R.
103+
Elpi derive.param2 fb.

apps/derive/theories/derive/param2.v

+11
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ Elpi Accumulate lp:{{
5454
usage :- coq.error "Usage: derive.param2 <object name>".
5555
}}.
5656

57+
Elpi Command derive.param2.register.
58+
Elpi Accumulate File param2.
59+
Elpi Accumulate Db derive.param2.db.
60+
Elpi Accumulate lp:{{
61+
main [str I, str R] :- !, coq.locate I GRI, coq.locate R GRR,
62+
derive.param2.main_register GRI GRR.
63+
main _ :- usage.
64+
65+
usage :- coq.error "Usage: derive.param2.register <name> <name_R>".
66+
}}.
67+
5768

5869
(* hook into derive *)
5970
Elpi Accumulate derive File param2.

0 commit comments

Comments
 (0)