aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--library/declare.ml3
-rw-r--r--library/declare.mli1
-rw-r--r--parsing/lexer.mll2
-rw-r--r--toplevel/discharge.ml4
4 files changed, 8 insertions, 2 deletions
diff --git a/library/declare.ml b/library/declare.ml
index 5e87c1a749..51748a0204 100644
--- a/library/declare.ml
+++ b/library/declare.ml
@@ -189,6 +189,9 @@ let is_constant sp =
let constant_strength sp =
let (_,stre) = Spmap.find sp !csttab in stre
+let constant_or_parameter_strength sp =
+ try constant_strength sp with Not_found -> NeverDischarge
+
let is_variable id =
let sp = Nametab.sp_of_id CCI id in Spmap.mem sp !vartab
diff --git a/library/declare.mli b/library/declare.mli
index 8541c20921..470d6dee9d 100644
--- a/library/declare.mli
+++ b/library/declare.mli
@@ -43,6 +43,7 @@ val make_strength_2 : unit -> strength
val is_constant : section_path -> bool
val constant_strength : section_path -> strength
+val constant_or_parameter_strength : section_path -> strength
val is_variable : identifier -> bool
val out_variable :
diff --git a/parsing/lexer.mll b/parsing/lexer.mll
index e9b57a1f75..6a35d19dee 100644
--- a/parsing/lexer.mll
+++ b/parsing/lexer.mll
@@ -137,6 +137,8 @@ rule token = parse
{ ("INT", Lexing.lexeme lexbuf) }
| "(" | ")" | "[" | "]" | "{" | "}" | "." | "_"
{ ("", Lexing.lexeme lexbuf) }
+ | "->"
+ { ("", "->") }
| symbolchar+
{ ("", Lexing.lexeme lexbuf) }
| '`' [^'`']* '`'
diff --git a/toplevel/discharge.ml b/toplevel/discharge.ml
index 8de338b404..aa1e1e96b8 100644
--- a/toplevel/discharge.ml
+++ b/toplevel/discharge.ml
@@ -277,8 +277,8 @@ let process_object oldenv sec_sp (ops,ids_to_discard,work_alist) (sp,lobj) =
(Variable (id,expmod_a,stre,sticky) :: ops,
ids_to_discard,work_alist)
- | "CONSTANT" ->
- let stre = constant_strength sp in
+ | "CONSTANT" | "PARAMETER" ->
+ let stre = constant_or_parameter_strength sp in
if stre = (DischargeAt sec_sp) then
(ops, ids_to_discard, (Const sp, DO_REPLACE) :: work_alist)
else