--- a/src/Pure/General/path.ML Thu Apr 04 16:47:09 2019 +0200
+++ b/src/Pure/General/path.ML Thu Apr 04 20:45:55 2019 +0200
@@ -45,6 +45,7 @@
val dest_binding: binding -> T * Position.T
val path_of_binding: binding -> T
val pos_of_binding: binding -> Position.T
+ val proper_binding: binding -> unit
val implode_binding: binding -> string
val explode_binding: string * Position.T -> binding
val explode_binding0: string -> binding
@@ -262,7 +263,7 @@
datatype binding = Binding of T * Position.T;
fun binding (path, pos) =
- if not (is_current path) andalso all_basic path then Binding (path, pos)
+ if all_basic path then Binding (path, pos)
else error ("Bad path binding: " ^ print path ^ Position.here pos);
fun binding0 path = binding (path, Position.none);
@@ -273,6 +274,11 @@
val path_of_binding = dest_binding #> #1;
val pos_of_binding = dest_binding #> #2;
+fun proper_binding binding =
+ if is_current (path_of_binding binding)
+ then error ("Empty path" ^ Position.here (pos_of_binding binding))
+ else ();
+
val implode_binding = path_of_binding #> implode_path;
val explode_binding = binding o explode_pos;