src/Pure/General/path.ML
changeset 70055 36fb663145e5
parent 70048 198bbe73b100
child 72162 5894859c5c84
--- 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;