Skip to content

Commit 27a4a43

Browse files
committed
wip
1 parent 7b07ba2 commit 27a4a43

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/ml/FStarC_Parser_ParseIt.ml

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,17 @@ let _ = FStarC_Parser_AST_Util.register_extension_lang_parser "fstar" parse_fsta
527527

528528
type lang_opts = string option
529529

530+
let rec insert_use_lang lang decls =
531+
match decls with
532+
| [] -> []
533+
| { FStarC_Parser_AST.d = FStarC_Parser_AST.TopLevelModule _ } as d ::ds ->
534+
let use_lang =
535+
{ d with FStarC_Parser_AST.d = FStarC_Parser_AST.UseLangDecls lang; }
536+
in
537+
d :: use_lang :: ds
538+
| d::ds ->
539+
d :: insert_use_lang lang ds
540+
530541
let parse_lang lang fn =
531542
let s =
532543
match fn with
@@ -547,9 +558,11 @@ let parse_lang lang fn =
547558
let frag_pos = FStarC_Range.mk_pos s.frag_line s.frag_col in
548559
let rng = FStarC_Range.mk_range s.frag_fname frag_pos frag_pos in
549560
let decls = FStarC_Parser_AST_Util.parse_extension_lang lang s.frag_text rng in
561+
let decls = insert_use_lang lang decls in
550562
let comments = FStarC_Parser_Util.flush_comments () in
551563
let frag = match fn with
552-
| Filename _ | Toplevel _ -> FStarC_Parser_AST.as_frag decls
564+
| Filename _ | Toplevel _ ->
565+
FStarC_Parser_AST.as_frag decls
553566
| _ -> FStar_Pervasives.Inr decls
554567
in
555568
ASTFragment (frag, comments)
@@ -630,7 +643,9 @@ let parse (lang_opt:lang_opts) fn =
630643
| Some lang, _ -> parse_lang lang fn
631644
| None, Filename fn' -> begin
632645
match take_lang_extension fn' with
633-
| Some lang -> parse_lang lang fn
646+
| Some lang ->
647+
print_endline ("{\"kind\":\"message\",\"level\":\"info\",\"contents\":\"got lang " ^ lang ^ "\"}");
648+
parse_lang lang fn
634649
| None -> parse_no_lang fn
635650
end
636651
| None, Toplevel fn' -> begin
@@ -639,6 +654,11 @@ let parse (lang_opt:lang_opts) fn =
639654
| None -> parse_no_lang fn
640655
end
641656
| _, _ -> parse_no_lang fn
657+
(*
658+
../.vscode/settings.json
659+
660+
{"kind":"message","query-id":"2","level":"info","contents":"Parsed 7 declarations\n"}
661+
*)
642662

643663

644664
(** Parsing of command-line error/warning/silent flags. *)

0 commit comments

Comments
 (0)