# HG changeset patch # User wenzelm # Date 1333477440 -7200 # Node ID 89a4bbf9790d85486b6bd36190613642f40b1d67 # Parent 644a3b74cfd0315df4fc58d98ac19a1ee5b0ef97 avoid duplicate PIDE markup; tuned; diff -r 644a3b74cfd0 -r 89a4bbf9790d src/Pure/Isar/expression.ML --- a/src/Pure/Isar/expression.ML Tue Apr 03 20:08:08 2012 +0200 +++ b/src/Pure/Isar/expression.ML Tue Apr 03 20:24:00 2012 +0200 @@ -357,17 +357,19 @@ Term.map_type_tvar (fn ((x, _), S) => TVar ((x, i), S)) o Logic.varifyT_global); val inst'' = map2 Type.constraint parm_types' inst'; val insts' = insts @ [(loc, (prfx, inst''))]; - val (insts'', _, _, ctxt' (* FIXME not used *) ) = check_autofix insts' [] [] ctxt; + val (insts'', _, _, _) = check_autofix insts' [] [] ctxt; val inst''' = insts'' |> List.last |> snd |> snd; val (morph, _) = inst_morph (parm_names, parm_types) (prfx, inst''') ctxt; val ctxt'' = Locale.activate_declarations (loc, morph) ctxt; in (i + 1, insts', ctxt'') end; - fun prep_elem insts raw_elem (elems, ctxt) = + fun prep_elem insts raw_elem ctxt = let - val ctxt' = declare_elem prep_vars_elem raw_elem ctxt; - val elems' = elems @ [parse_elem parse_typ parse_prop ctxt' raw_elem]; - val (_, _, _, ctxt'' (* FIXME not used *) ) = check_autofix insts elems' [] ctxt'; + val ctxt' = ctxt + |> Context_Position.set_visible false + |> declare_elem prep_vars_elem raw_elem + |> Context_Position.restore_visible ctxt; + val elems' = parse_elem parse_typ parse_prop ctxt' raw_elem; in (elems', ctxt') end; fun prep_concl raw_concl (insts, elems, ctxt) = @@ -388,7 +390,7 @@ commas_quote (map (Syntax.string_of_term ctxt3 o Free) (rev frees)))); val ctxt4 = init_body ctxt3; - val (elems, ctxt5) = fold (prep_elem insts') raw_elems ([], ctxt4); + val (elems, ctxt5) = fold_map (prep_elem insts') raw_elems ctxt4; val (insts, elems', concl, ctxt6) = prep_concl raw_concl (insts', elems, ctxt5); (* Retrieve parameter types *)