Skip to content

Commit f17669e

Browse files
committed
Tweak column numbers in IDE digest computation
1 parent ccaefe6 commit f17669e

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

src/interactive/FStarC.Interactive.Ide.fst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ let run_segment (st: repl_state) (code: string) =
533533
// Unfortunately, frag_fname is a special case in the interactive mode,
534534
// while in LSP, it is the only mode. To cope with this difference,
535535
// pass a frag_fname that is expected by the Interactive mode.
536-
let frag = { frag_fname = "<input>"; frag_text = code; frag_line = 1; frag_col = 0 } in
536+
let frag = { frag_fname = "<input>"; frag_text = code; frag_line = 1; frag_col = 1 } in
537537

538538
let collect_decls () =
539539
match Parser.Driver.parse_fragment None frag with

src/ml/FStarC_Parser_ParseIt.ml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,18 +186,19 @@ let parse_incremental_decls
186186
in
187187
parse []
188188

189-
let contents_at contents =
189+
let contents_at (contents : string) : Range.t -> code_fragment =
190190
let lines = U.splitlines contents in
191191
let split_line_at_col line col =
192-
if col > 0
192+
(* NB: columns are 1-based *)
193+
if col > 1
193194
then (
194195
(* Don't index directly into the string, since this is a UTF-8 string.
195196
Convert first to a list of characters, index into that, and then convert
196197
back to a string *)
197198
let chars = FStar_String.list_of_string line in
198-
if col <= List.length chars
199+
if col <= List.length chars + 1
199200
then (
200-
let prefix, suffix = FStarC_Util.first_N (Z.of_int col) chars in
201+
let prefix, suffix = FStarC_Util.first_N (Z.of_int (col - 1)) chars in
201202
Some (FStar_String.string_of_list prefix,
202203
FStar_String.string_of_list suffix)
203204
)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
{"kind": "protocol-info", "rest": "[...]"}
2-
{"kind": "response", "query-id": "1", "response": {"decls": [{"def_range": {"beg": [1, 0], "end": [1, 15], "fname": "<input>"}}, {"def_range": {"beg": [2, 0], "end": [2, 13], "fname": "<input>"}}, {"def_range": {"beg": [3, 0], "end": [3, 14], "fname": "<input>"}}, {"def_range": {"beg": [6, 0], "end": [6, 22], "fname": "<input>"}}, {"def_range": {"beg": [9, 0], "end": [12, 16], "fname": "<input>"}}, {"def_range": {"beg": [15, 0], "end": [17, 20], "fname": "<input>"}}, {"def_range": {"beg": [20, 0], "end": [20, 47], "fname": "<input>"}}, {"def_range": {"beg": [21, 0], "end": [21, 73], "fname": "<input>"}}, {"def_range": {"beg": [23, 0], "end": [23, 55], "fname": "<input>"}}, {"def_range": {"beg": [24, 0], "end": [24, 93], "fname": "<input>"}}, {"def_range": {"beg": [27, 0], "end": [27, 29], "fname": "<input>"}}, {"def_range": {"beg": [28, 0], "end": [28, 27], "fname": "<input>"}}, {"def_range": {"beg": [29, 0], "end": [29, 29], "fname": "<input>"}}, {"def_range": {"beg": [32, 0], "end": [32, 36], "fname": "<input>"}}, {"def_range": {"beg": [33, 0], "end": [37, 20], "fname": "<input>"}}, {"def_range": {"beg": [41, 0], "end": [41, 21], "fname": "<input>"}}, {"def_range": {"beg": [42, 0], "end": [42, 39], "fname": "<input>"}}, {"def_range": {"beg": [43, 0], "end": [44, 49], "fname": "<input>"}}, {"def_range": {"beg": [47, 7], "end": [47, 55], "fname": "<input>"}}, {"def_range": {"beg": [54, 0], "end": [59, 28], "fname": "<input>"}}, {"def_range": {"beg": [61, 0], "end": [61, 48], "fname": "<input>"}}]}, "status": "success"}
2+
{"kind": "response", "query-id": "1", "response": {"decls": [{"def_range": {"beg": [1, 1], "end": [1, 16], "fname": "<input>"}}, {"def_range": {"beg": [2, 0], "end": [2, 13], "fname": "<input>"}}, {"def_range": {"beg": [3, 0], "end": [3, 14], "fname": "<input>"}}, {"def_range": {"beg": [6, 0], "end": [6, 22], "fname": "<input>"}}, {"def_range": {"beg": [9, 0], "end": [12, 16], "fname": "<input>"}}, {"def_range": {"beg": [15, 0], "end": [17, 20], "fname": "<input>"}}, {"def_range": {"beg": [20, 0], "end": [20, 47], "fname": "<input>"}}, {"def_range": {"beg": [21, 0], "end": [21, 73], "fname": "<input>"}}, {"def_range": {"beg": [23, 0], "end": [23, 55], "fname": "<input>"}}, {"def_range": {"beg": [24, 0], "end": [24, 93], "fname": "<input>"}}, {"def_range": {"beg": [27, 0], "end": [27, 29], "fname": "<input>"}}, {"def_range": {"beg": [28, 0], "end": [28, 27], "fname": "<input>"}}, {"def_range": {"beg": [29, 0], "end": [29, 29], "fname": "<input>"}}, {"def_range": {"beg": [32, 0], "end": [32, 36], "fname": "<input>"}}, {"def_range": {"beg": [33, 0], "end": [37, 20], "fname": "<input>"}}, {"def_range": {"beg": [41, 0], "end": [41, 21], "fname": "<input>"}}, {"def_range": {"beg": [42, 0], "end": [42, 39], "fname": "<input>"}}, {"def_range": {"beg": [43, 0], "end": [44, 49], "fname": "<input>"}}, {"def_range": {"beg": [47, 7], "end": [47, 55], "fname": "<input>"}}, {"def_range": {"beg": [54, 0], "end": [59, 28], "fname": "<input>"}}, {"def_range": {"beg": [61, 0], "end": [61, 48], "fname": "<input>"}}]}, "status": "success"}

0 commit comments

Comments
 (0)