diff --git a/CHANGELOG.md b/CHANGELOG.md index 6285dbc69..d2f0743c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ #### :bug: Bug fix - Fix bug where type args stopped working in some completions when passed through inline records. https://github.com/rescript-lang/rescript-vscode/pull/1064 +- Fix bug where objects weren't actually iterated on, making completions inside of them not work. https://github.com/rescript-lang/rescript-vscode/pull/1065 ## 1.60.0 diff --git a/analysis/src/CompletionFrontEnd.ml b/analysis/src/CompletionFrontEnd.ml index 00cd2cb66..ec3b5566f 100644 --- a/analysis/src/CompletionFrontEnd.ml +++ b/analysis/src/CompletionFrontEnd.ml @@ -1106,6 +1106,8 @@ let completionWithParser1 ~currentFile ~debug ~offset ~path ~posCursor if expr.pexp_loc |> Loc.hasPos ~pos:posNoWhite && !result = None then ( setFound (); match expr.pexp_desc with + | Pexp_extension ({txt = "obj"}, PStr [str_item]) -> + Ast_iterator.default_iterator.structure_item iterator str_item | Pexp_extension ({txt}, _) -> setResult (CextensionNode txt) | Pexp_constant _ -> setResult Cnone | Pexp_ident lid -> diff --git a/analysis/tests/src/CompletionObjects.res b/analysis/tests/src/CompletionObjects.res new file mode 100644 index 000000000..6de39bd1a --- /dev/null +++ b/analysis/tests/src/CompletionObjects.res @@ -0,0 +1,10 @@ +let x = Some(true) + +let _ff = { + "one": switch x { + | Some(true) => "hello" + // | + // ^com + | _ => "" + }, +} diff --git a/analysis/tests/src/expected/CompletionObjects.res.txt b/analysis/tests/src/expected/CompletionObjects.res.txt new file mode 100644 index 000000000..8d8c555a9 --- /dev/null +++ b/analysis/tests/src/expected/CompletionObjects.res.txt @@ -0,0 +1,38 @@ +Complete src/CompletionObjects.res 5:7 +posCursor:[5:7] posNoWhite:[5:5] Found expr:[2:10->9:1] +posCursor:[5:7] posNoWhite:[5:5] Found expr:[2:10->9:1] +posCursor:[5:7] posNoWhite:[5:5] Found pattern:__ghost__[0:-1->7:5] +posCursor:[5:7] posNoWhite:[5:5] Found pattern:__ghost__[0:-1->7:5] +Completable: Cpattern Value[x] +Package opens Pervasives.JsxModules.place holder +Resolved opens 1 pervasives +ContextPath Value[x] +Path x +[{ + "label": "None", + "kind": 12, + "tags": [], + "detail": "bool", + "documentation": null + }, { + "label": "Some(_)", + "kind": 12, + "tags": [], + "detail": "bool", + "documentation": null, + "insertText": "Some(${1:_})", + "insertTextFormat": 2 + }, { + "label": "Some(true)", + "kind": 4, + "tags": [], + "detail": "bool", + "documentation": null + }, { + "label": "Some(false)", + "kind": 4, + "tags": [], + "detail": "bool", + "documentation": null + }] +