From c0491ef9557b2d0fa2daad6979d48c35ee8dfe4e Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Sat, 5 Aug 2023 16:21:03 -0300 Subject: [PATCH 1/4] dont emit object keys in uppercase as namespace --- analysis/src/SemanticTokens.ml | 13 ++++++++++--- analysis/tests/src/Highlight.res | 2 ++ analysis/tests/src/expected/Highlight.res.txt | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/analysis/src/SemanticTokens.ml b/analysis/src/SemanticTokens.ml index bb1f0d822..fc46fd9eb 100644 --- a/analysis/src/SemanticTokens.ml +++ b/analysis/src/SemanticTokens.ml @@ -115,8 +115,8 @@ let emitFromLoc ~loc ~type_ emitter = let emitLongident ?(backwards = false) ?(jsx = false) ?(lowerCaseToken = if jsx then Token.JsxLowercase else Token.Variable) - ?(upperCaseToken = Token.Namespace) ?(lastToken = None) ?(posEnd = None) ~pos - ~lid ~debug emitter = + ?(upperCaseToken = Token.Namespace) ?(lastToken = None) ?(posEnd = None) + ~pos ~lid ~debug emitter = let rec flatten acc lid = match lid with | Longident.Lident txt -> txt :: acc @@ -309,7 +309,14 @@ let command ~debug ~emitter ~path = Ast_iterator.default_iterator.expr iterator e | Pexp_record (cases, _) -> cases - |> List.iter (fun (label, _) -> emitter |> emitRecordLabel ~label ~debug); + |> List.filter_map (fun ((label : Longident.t Location.loc), _) -> + match label.txt with + | Longident.Lident s + when String.length s > 0 + && not (Char.equal s.[0] (Char.uppercase_ascii s.[0])) -> + Some label + | _ -> None) + |> List.iter (fun label -> emitter |> emitRecordLabel ~label ~debug); Ast_iterator.default_iterator.expr iterator e | Pexp_field (_, label) | Pexp_setfield (_, label, _) -> emitter |> emitRecordLabel ~label ~debug; diff --git a/analysis/tests/src/Highlight.res b/analysis/tests/src/Highlight.res index 3baebefbd..225f0c48a 100644 --- a/analysis/tests/src/Highlight.res +++ b/analysis/tests/src/Highlight.res @@ -132,3 +132,5 @@ let _ = 3 == 3 || 3 === 3 let _ = (~_type_ as _) => () let _ = {"abc": 34} + +let _ = {"Key": 2} diff --git a/analysis/tests/src/expected/Highlight.res.txt b/analysis/tests/src/expected/Highlight.res.txt index 23362420d..a4ab8e142 100644 --- a/analysis/tests/src/expected/Highlight.res.txt +++ b/analysis/tests/src/expected/Highlight.res.txt @@ -1,5 +1,5 @@ Highlight src/Highlight.res -structure items:38 diagnostics:0 +structure items:39 diagnostics:0 Lident: M 0:7 Namespace Lident: C 1:9 Namespace Lident: Component 1:13 Namespace From a2a958aeec5fcfd562be078e18ad5bcc7d6db5e2 Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Sat, 5 Aug 2023 16:24:00 -0300 Subject: [PATCH 2/4] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40ca6a0b3..d4a4217ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ #### :bug: Bug Fix - Fix invalid range for `definition`. https://github.com/rescript-lang/rescript-vscode/pull/781 +- Don't emit object keys in uppercase as namespace. https://github.com/rescript-lang/rescript-vscode/pull/798 ## 1.18.0 From a0fe27d16ee2c412acc416c2cf69cc338f01e864 Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Tue, 8 Aug 2023 20:23:25 -0300 Subject: [PATCH 3/4] move function to Utils module --- analysis/src/SemanticTokens.ml | 4 +--- analysis/src/Utils.ml | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/analysis/src/SemanticTokens.ml b/analysis/src/SemanticTokens.ml index fc46fd9eb..550abe56a 100644 --- a/analysis/src/SemanticTokens.ml +++ b/analysis/src/SemanticTokens.ml @@ -311,9 +311,7 @@ let command ~debug ~emitter ~path = cases |> List.filter_map (fun ((label : Longident.t Location.loc), _) -> match label.txt with - | Longident.Lident s - when String.length s > 0 - && not (Char.equal s.[0] (Char.uppercase_ascii s.[0])) -> + | Longident.Lident s when Utils.isFirstCharUppercase s -> Some label | _ -> None) |> List.iter (fun label -> emitter |> emitRecordLabel ~label ~debug); diff --git a/analysis/src/Utils.ml b/analysis/src/Utils.ml index 0ef9e3c7e..b4f9b1d27 100644 --- a/analysis/src/Utils.ml +++ b/analysis/src/Utils.ml @@ -15,6 +15,9 @@ let endsWith s suffix = let l = String.length s in p <= String.length s && String.sub s (l - p) p = suffix +let isFirstCharUppercase s = + String.length s > 0 && not (Char.equal s.[0] (Char.uppercase_ascii s.[0])) + let cmtPosToPosition {Lexing.pos_lnum; pos_cnum; pos_bol} = Protocol.{line = pos_lnum - 1; character = pos_cnum - pos_bol} From 7a24abdd9c202ed0e0f286844b60f47f2aa22f7c Mon Sep 17 00:00:00 2001 From: Pedro Castro Date: Tue, 8 Aug 2023 20:26:46 -0300 Subject: [PATCH 4/4] fix code --- analysis/src/SemanticTokens.ml | 2 +- analysis/src/Utils.ml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/analysis/src/SemanticTokens.ml b/analysis/src/SemanticTokens.ml index 550abe56a..41fb70353 100644 --- a/analysis/src/SemanticTokens.ml +++ b/analysis/src/SemanticTokens.ml @@ -311,7 +311,7 @@ let command ~debug ~emitter ~path = cases |> List.filter_map (fun ((label : Longident.t Location.loc), _) -> match label.txt with - | Longident.Lident s when Utils.isFirstCharUppercase s -> + | Longident.Lident s when not (Utils.isFirstCharUppercase s) -> Some label | _ -> None) |> List.iter (fun label -> emitter |> emitRecordLabel ~label ~debug); diff --git a/analysis/src/Utils.ml b/analysis/src/Utils.ml index b4f9b1d27..e548457f2 100644 --- a/analysis/src/Utils.ml +++ b/analysis/src/Utils.ml @@ -16,7 +16,7 @@ let endsWith s suffix = p <= String.length s && String.sub s (l - p) p = suffix let isFirstCharUppercase s = - String.length s > 0 && not (Char.equal s.[0] (Char.uppercase_ascii s.[0])) + String.length s > 0 && Char.equal s.[0] (Char.uppercase_ascii s.[0]) let cmtPosToPosition {Lexing.pos_lnum; pos_cnum; pos_bol} = Protocol.{line = pos_lnum - 1; character = pos_cnum - pos_bol}