merged
authorwenzelm
Thu, 05 Sep 2013 23:14:28 +0200
changeset 53425 f5b1f555b73b
parent 53414 dd64696d267a (diff)
parent 53424 091b05002c54 (current diff)
child 53431 d2a7b6fe953e
merged
src/Tools/jEdit/patches/jedit/annotation
src/Tools/jEdit/patches/jedit/completion
--- a/src/HOL/List.thy	Thu Sep 05 22:08:25 2013 +0200
+++ b/src/HOL/List.thy	Thu Sep 05 23:14:28 2013 +0200
@@ -548,9 +548,9 @@
         fun check (i, case_t) s =
           (case strip_abs_body case_t of
             (Const (@{const_name List.Nil}, _)) => s
-          | _ => (case s of NONE => SOME i | SOME _ => NONE))
+          | _ => (case s of SOME NONE => SOME (SOME i) | _ => NONE))
       in
-        fold_index check cases NONE
+        fold_index check cases (SOME NONE) |> the_default NONE
       end
     (* returns (case_expr type index chosen_case) option  *)
     fun dest_case case_term =
--- a/src/Tools/Code/code_namespace.ML	Thu Sep 05 22:08:25 2013 +0200
+++ b/src/Tools/Code/code_namespace.ML	Thu Sep 05 23:14:28 2013 +0200
@@ -48,10 +48,11 @@
   Code_Symbol.lookup identifiers (symbol_of name)
   |> Option.map (split_last o Long_Name.explode);
 
-fun force_identifier symbol_of fragments_tab identifiers name =
+fun force_identifier symbol_of fragments_tab force_module identifiers name =
   case lookup_identifier symbol_of identifiers name of
       NONE => (apfst (the o Symtab.lookup fragments_tab) o split_name) name
-    | SOME name' => name';
+    | SOME prefix_name => if null force_module then prefix_name
+        else (force_module, snd prefix_name);
 
 fun build_module_namespace { module_prefix, module_identifiers, reserved } program =
   let
@@ -79,7 +80,7 @@
       else K (SOME module_name);
     val fragments_tab = build_module_namespace { module_prefix = module_prefix,
       module_identifiers = module_identifiers, reserved = reserved } program;
-    val prep_name = force_identifier symbol_of fragments_tab identifiers
+    val prep_name = force_identifier symbol_of fragments_tab (Long_Name.explode module_name) identifiers
       #>> Long_Name.implode;
 
     (* distribute statements over hierarchy *)
@@ -171,7 +172,7 @@
       else K (SOME module_name);
     val fragments_tab = build_module_namespace { module_prefix = "",
       module_identifiers = module_identifiers, reserved = reserved } program;
-    val prep_name = force_identifier symbol_of fragments_tab identifiers;
+    val prep_name = force_identifier symbol_of fragments_tab (Long_Name.explode module_name) identifiers;
 
     (* building empty module hierarchy *)
     val empty_module = (empty_data, Graph.empty);
--- a/src/Tools/Code/code_target.ML	Thu Sep 05 22:08:25 2013 +0200
+++ b/src/Tools/Code/code_target.ML	Thu Sep 05 23:14:28 2013 +0200
@@ -417,8 +417,9 @@
 
 fun invoke_serializer thy target some_width module_name args naming program names =
   let
+    val check = if module_name = "" then I else check_name true;
     val (mounted_serializer, prepared_program) = mount_serializer thy
-      target some_width module_name args naming program names;
+      target some_width (check module_name) args naming program names;
   in mounted_serializer prepared_program end;
 
 fun assert_module_name "" = error "Empty module name not allowed here"