Skip to content

Commit 448b4e2

Browse files
authored
Merge pull request #480 from math-comp/fix-error-miss
detect bogus #[key] attribute
2 parents db76103 + 7d8cf23 commit 448b4e2

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

HB/factory.elpi

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,26 @@ kind asset type.
9696
type asset-mixin asset.
9797
type asset-factory asset.
9898

99+
pred check-key-attribute-consistency i:id.
100+
check-key-attribute-consistency _ :- not(get-option "key" _), !.
101+
check-key-attribute-consistency ID :- get-option "key" ID, !.
102+
check-key-attribute-consistency ID :- get-option "key" ID1,
103+
coq.error "HB:" {calc ("The #[key=\"" ^ ID1 ^ "\"] attribute")}
104+
"does not match the selected subject" ID.
105+
99106
pred is-key i:indt-decl.
100107
pred is-key i:arity.
101108
pred is-key i:context-decl.
102-
is-key (parameter _ _ _ _\ record _ _ _ _) :- !.
103-
is-key (parameter _ _ _ _\ inductive _ _ _ _) :- !.
104-
is-key (parameter _ _ _ _\ arity _) :- !.
105-
is-key (context-item _ _ _ _ _\ context-end) :- !.
109+
is-key (parameter ID _ _ _\ record _ _ _ _) :- !, check-key-attribute-consistency ID.
110+
is-key (parameter ID _ _ _\ inductive _ _ _ _) :- !, check-key-attribute-consistency ID.
111+
is-key (parameter ID _ _ _\ arity _) :- !, check-key-attribute-consistency ID.
112+
is-key (context-item ID _ _ _ _\ context-end) :- !, check-key-attribute-consistency ID.
106113
is-key (parameter ID _ _ _) :- get-option "key" ID, !.
107114
is-key (context-item ID _ _ _ _) :- get-option "key" ID, !.
108-
is-key (parameter _ _ _ p\ parameter _ _ (M p) _) :-
109-
pi p\ factory? (M p) _, !.
110-
is-key (context-item _ _ _ _ p\ context-item _ _ (M p) _ _) :-
111-
pi p\ factory? (M p) _, !.
115+
is-key (parameter ID _ _ p\ parameter _ _ (M p) _) :-
116+
pi p\ factory? (M p) _, !, check-key-attribute-consistency ID.
117+
is-key (context-item ID _ _ _ p\ context-item _ _ (M p) _ _) :-
118+
pi p\ factory? (M p) _, !, check-key-attribute-consistency ID.
112119

113120
pred mixin-decl-w-mixins i:string, i:string, i:term, i:(term -> A),
114121
i:(A -> pair (list (w-args mixinname)) A -> prop),

Makefile.test-suite.coq.local

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ post-all::
2222
$(call DIFF, tests/compress_coe.v)
2323
$(call DIFF, tests/about.v)
2424
$(call DIFF, tests/howto.v)
25+
$(call DIFF, tests/err_miss_key.v)
2526
$(call DIFF, tests/missing_join_error.v)
2627
$(call DIFF, tests/not_same_key.v)
2728
$(call DIFF, tests/hnf.v)

tests/err_miss_key.v

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
From HB Require Import structures.
2+
3+
Fail #[key="Tmiss"]
4+
HB.mixin Record Foo T := {}.

tests/err_miss_key.v.out

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
The command has indeed failed with message:
2+
HB: The #[key="Tmiss"] attribute does not match the selected subject T

0 commit comments

Comments
 (0)