Complete src/Completion.res 1:11
posCursor:[1:11] posNoWhite:[1:10] Found expr:[1:3->1:11]
Pexp_ident MyList.m:[1:3->1:11]
Completable: Cpath Value[MyList, m]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[MyList, m]
Path MyList.m
[{
    "label": "mapReverse",
    "kind": 12,
    "tags": [],
    "detail": "(list<'a>, 'a => 'b) => list<'b>",
    "documentation": {"kind": "markdown", "value": "\n`mapReverse(list, f)` is equivalent to `map` function.\n\n## Examples\n\n```rescript\nlet f = x => x * x\nlet l = list{3, 4, 5}\n\nlet withMap = List.map(l, f)->List.reverse\nlet withMapReverse = l->List.mapReverse(f)\n\nConsole.log(withMap == withMapReverse) // true\n```\n"}
  }, {
    "label": "mapReverse2",
    "kind": 12,
    "tags": [],
    "detail": "(list<'a>, list<'b>, ('a, 'b) => 'c) => list<'c>",
    "documentation": {"kind": "markdown", "value": "\n`mapReverse2(list1, list2, f)` is equivalent to `List.zipBy(list1, list2, f)->List.reverse`.\n\n## Examples\n\n```rescript\nList.mapReverse2(list{1, 2, 3}, list{1, 2}, (a, b) => a + b) == list{4, 2}\n```\n"}
  }, {
    "label": "make",
    "kind": 12,
    "tags": [],
    "detail": "(~length: int, 'a) => list<'a>",
    "documentation": {"kind": "markdown", "value": "\n`make(length, value)` returns a list of length `length` with each element filled\nwith `value`. Returns an empty list if `value` is negative.\n\n## Examples\n\n```rescript\nList.make(~length=3, 1) == list{1, 1, 1}\n```\n"}
  }, {
    "label": "mapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(list<'a>, ('a, int) => 'b) => list<'b>",
    "documentation": {"kind": "markdown", "value": "\n`mapWithIndex(list, f)` applies `f` to each element of `list`. Function `f`\ntakes two arguments: the index starting from 0 and the element from `list`, in\nthat order.\n\n## Examples\n\n```rescript\nlist{1, 2, 3}->List.mapWithIndex((x, index) => index + x) == list{1, 3, 5}\n```\n"}
  }, {
    "label": "map",
    "kind": 12,
    "tags": [],
    "detail": "(list<'a>, 'a => 'b) => list<'b>",
    "documentation": {"kind": "markdown", "value": "\n`map(list, f)` returns a new list with `f` applied to each element of `list`.\n\n## Examples\n\n```rescript\nlist{1, 2}->List.map(x => x + 1) == list{2, 3}\n```\n"}
  }]

Complete src/Completion.res 3:9
posCursor:[3:9] posNoWhite:[3:8] Found expr:[3:3->3:9]
Pexp_ident Array.:[3:3->3:9]
Completable: Cpath Value[Array, ""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Array, ""]
Path Array.
[{
    "label": "splice",
    "kind": 12,
    "tags": [],
    "detail": "(\n  array<'a>,\n  ~start: int,\n  ~remove: int,\n  ~insert: array<'a>,\n) => unit",
    "documentation": {"kind": "markdown", "value": "\n`splice(array, ~start, ~remove, ~insert)` removes `remove` items starting at `start` and inserts the values from `insert`.\n\nBeware this will *mutate* the array.\n\nSee [`Array.splice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) on MDN.\n\n## Examples\n\n```rescript\nlet items = [\"a\", \"b\", \"c\"]\nitems->Array.splice(~start=1, ~remove=1, ~insert=[\"x\"])\nitems == [\"a\", \"x\", \"c\"]\n```\n"}
  }, {
    "label": "concat",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<'a>) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`concat(array1, array2)` concatenates the two arrays, creating a new array.\n\nSee [`Array.concat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) on MDN.\n\n## Examples\n\n```rescript\nlet array1 = [\"hi\", \"hello\"]\nlet array2 = [\"yay\", \"wehoo\"]\n\nlet someArray = array1->Array.concat(array2)\n\nsomeArray == [\"hi\", \"hello\", \"yay\", \"wehoo\"]\n```\n"}
  }, {
    "label": "filterMap",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => option<'b>) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`filterMap(array, fn)`\n\nCalls `fn` for each element and returns a new array containing results of the `fn` calls which are not `None`.\n\n## Examples\n\n```rescript\n[\"Hello\", \"Hi\", \"Good bye\"]->Array.filterMap(item =>\n  switch item {\n  | \"Hello\" => Some(item->String.length)\n  | _ => None\n  }\n) == [5]\n\n[1, 2, 3, 4, 5, 6]->Array.filterMap(n => mod(n, 2) == 0 ? Some(n * n) : None) == [4, 16, 36]\n\nArray.filterMap([1, 2, 3, 4, 5, 6], _ => None) == []\n\nArray.filterMap([], n => mod(n, 2) == 0 ? Some(n * n) : None) == []\n```\n"}
  }, {
    "label": "findLastWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`findLastWithIndex(array, checker)` returns the last element of `array` where the provided `checker` function returns true.\n\nSee [`Array.findLast`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLast) on MDN.\n\n## Examples\n\n```rescript\nlet array = [1, 2, 3]\n\narray->Array.findLastWithIndex((item, index) => index < 2 && item > 0) == Some(2)\n```\n"}
  }, {
    "label": "findLast",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`findLast(array, checker)` returns the last element of `array` where the provided `checker` function returns true.\n\nSee [`Array.findLast`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLast) on MDN.\n\n## Examples\n\n```rescript\nlet array = [1, 2, 3]\n\narray->Array.findLast(item => item > 0) == Some(3)\n```\n"}
  }, {
    "label": "shift",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`shift(array)` removes the first item in the array, and returns it.\n\nBeware this will *mutate* the array.\n\nSee [`Array.shift`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\n\nsomeArray->Array.shift == Some(\"hi\")\n\nsomeArray == [\"hello\"] // Notice first item is gone.\n```\n"}
  }, {
    "label": "findMap",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => option<'b>) => option<'b>",
    "documentation": {"kind": "markdown", "value": "\n`findMap(arr, fn)`\n\nCalls `fn` for each element and returns the first value from `fn` that is `Some(_)`.\nOtherwise returns `None`\n\n## Examples\n\n```rescript\nArray.findMap([1, 2, 3], n => mod(n, 2) == 0 ? Some(n - 2) : None) == Some(0)\n\nArray.findMap([1, 2, 3, 4, 5, 6], n => mod(n, 2) == 0 ? Some(n - 8) : None) == Some(-6)\n\nArray.findMap([1, 2, 3, 4, 5, 6], _ => None) == None\n\nArray.findMap([], n => mod(n, 2) == 0 ? Some(n * n) : None) == None\n```\n"}
  }, {
    "label": "concatMany",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<array<'a>>) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`concatMany(array1, arrays)` concatenates array1 with several other arrays, creating a new array.\n\nSee [`Array.concat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) on MDN.\n\n## Examples\n```rescript\nlet array1 = [\"hi\", \"hello\"]\nlet array2 = [\"yay\"]\nlet array3 = [\"wehoo\"]\n\nlet someArray = array1->Array.concatMany([array2, array3])\n\nConsole.log(someArray) // [\"hi\", \"hello\", \"yay\", \"wehoo\"]\n```\n"}
  }, {
    "label": "joinWith",
    "kind": 12,
    "tags": [1],
    "detail": "(array<string>, string) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`joinWith(array, separator)` produces a string where all items of `array` are printed, separated by `separator`. Array items must be strings, to join number or other arrays, use `joinWithUnsafe`. Under the hood this will run JavaScript's `toString` on all the array items.\n\n## Examples\n\n```rescript\n[\"One\", \"Two\", \"Three\"]->Array.joinWith(\" -- \") == \"One -- Two -- Three\"\n```\n"}
  }, {
    "label": "joinWithUnsafe",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, string) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`joinWithUnsafe(array, separator)` produces a string where all items of `array` are printed, separated by `separator`. Under the hood this will run JavaScript's `toString` on all the array items.\n\n## Examples\n\n```rescript\n[1, 2, 3]->Array.joinWithUnsafe(\" -- \") == \"1 -- 2 -- 3\"\n```\n"}
  }, {
    "label": "reduceRight",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'b, ('b, 'a) => 'b) => 'b",
    "documentation": {"kind": "markdown", "value": "\n`reduceRight(xs, init, fn)`\n\nWorks like `Array.reduce`; except that function `fn` is applied to each item of `xs` from the last back to the first.\n\n## Examples\n\n```rescript\nArray.reduceRight([\"a\", \"b\", \"c\", \"d\"], \"\", (a, b) => a ++ b) == \"dcba\"\n\nArray.reduceRight([1, 2, 3], list{}, List.add) == list{1, 2, 3}\n\nArray.reduceRight([], list{}, List.add) == list{}\n```\n"}
  }, {
    "label": "reduceRightWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'b, ('b, 'a, int) => 'b) => 'b",
    "documentation": {"kind": "markdown", "value": "\n`reduceRightWithIndex(xs, init, fn)`\n\nLike `reduceRight`, but with an additional index argument on the callback function.\n\n## Examples\n\n```rescript\nArray.reduceRightWithIndex([1, 2, 3, 4], 0, (acc, x, i) => acc + x + i) == 16\n\nArray.reduceRightWithIndex([], list{}, (acc, v, i) => list{v + i, ...acc}) == list{}\n```\n"}
  }, {
    "label": "toShuffled",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`toShuffled(array)` returns a new array with all items in `array` in a random order.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet shuffledArray = array->Array.toShuffled\nConsole.log(shuffledArray)\n\nArray.toShuffled([1, 2, 3])->Array.length == 3\n```\n"}
  }, {
    "label": "getSymbol",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, Symbol.t) => option<'b>",
    "documentation": {"kind": "markdown", "value": "\n`getSymbol(array, key)` retrieves the value stored under the symbol `key`, if present.\n\nSee [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) on MDN for more details about symbol keys.\n\n## Examples\n\n```rescript\nlet key = Symbol.make(\"meta\")\nlet items = []\nitems->Array.setSymbol(key, \"hello\")\nArray.getSymbol(items, key) == Some(\"hello\")\n```\n"}
  }, {
    "label": "getSymbolUnsafe",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, Symbol.t) => 'b",
    "documentation": {"kind": "markdown", "value": "\n`getSymbolUnsafe(array, key)` retrieves the value stored under the symbol `key` without any safety checks.\n\nSee [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) on MDN.\n\n## Examples\n\n```rescript\nlet key = Symbol.make(\"meta\")\nlet items = []\nitems->Array.setSymbol(key, \"hello\")\nArray.getSymbolUnsafe(items, key) == \"hello\"\n```\n"}
  }, {
    "label": "findIndexOpt",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => option<int>",
    "documentation": {"kind": "markdown", "value": "\n`findIndexOpt(array, checker)` returns the index of the first element of `array` where the provided `checker` function returns true.\n\nReturns `None` if no item matches.\n\nSee [`Array.findIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, TypeScript, JavaScript]\n\narray->Array.findIndexOpt(item => item == ReScript) == Some(0)\n```\n"}
  }, {
    "label": "shuffle",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => unit",
    "documentation": {"kind": "markdown", "value": "\n`shuffle(array)` randomizes the position of all items in `array`.\n\nBeware this will *mutate* the array.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\narray->Array.shuffle\nConsole.log(array)\n\nlet array2 = [1, 2, 3]\narray2->Array.shuffle\n\narray2->Array.length == 3\n```\n"}
  }, {
    "label": "copy",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`copy(array)` makes a copy of the array with the items in it, but does not make copies of the items themselves.\n\n## Examples\n\n```rescript\nlet myArray = [1, 2, 3]\nlet copyOfMyArray = myArray->Array.copy\n\ncopyOfMyArray == [1, 2, 3]\n(myArray === copyOfMyArray) == false\n```\n"}
  }, {
    "label": "setUnsafe",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int, 'a) => unit",
    "documentation": {"kind": "markdown", "value": "\n`setUnsafe(array, index, item)` sets the provided `item` at `index` of `array`.\n\nBeware this will *mutate* the array, and is *unsafe*.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\narray->Array.setUnsafe(1, \"Hello\")\n\narray[1] == Some(\"Hello\")\n```\n"}
  }, {
    "label": "findIndexWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => int",
    "documentation": {"kind": "markdown", "value": "\n`findIndexWithIndex(array, checker)` returns the index of the first element of `array` where the provided `checker` function returns true.\n\nReturns `-1` if the item does not exist. Consider using `Array.findIndexOpt` if you want an option instead (where `-1` would be `None`).\n\nSee [`Array.findIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, JavaScript]\n\nlet isReScriptFirst =\n  array->Array.findIndexWithIndex((item, index) => index === 0 && item == ReScript)\nlet isTypeScriptFirst =\n  array->Array.findIndexWithIndex((item, index) => index === 0 && item == TypeScript)\n\nisReScriptFirst == 0\nisTypeScriptFirst == -1\n```\n"}
  }, {
    "label": "someWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => bool",
    "documentation": {"kind": "markdown", "value": "\n`someWithIndex(array, checker)` returns true if running the provided `checker` function on any element in `array` returns true.\n\nSee [`Array.some`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\n\narray->Array.someWithIndex((greeting, index) => greeting === \"Hello\" && index === 0) == true\n```\n"}
  }, {
    "label": "slice",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ~start: int=?, ~end: int=?) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`slice(array, ~start, ~end)` creates a new array of items copied from `array` from `start` until (but not including) `end`.\n\nSee [`Array.slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.slice(~start=1, ~end=3) == [2, 3]\n[1, 2, 3, 4]->Array.slice(~start=1) == [2, 3, 4]\n[1, 2, 3, 4]->Array.slice == [1, 2, 3, 4]\n```\n"}
  }, {
    "label": "zip",
    "kind": 12,
    "tags": [],
    "detail": "(t<'a>, array<'b>) => array<('a, 'b)>",
    "documentation": {"kind": "markdown", "value": "\n`zip(a, b)` create an array of pairs from corresponding elements of a and b.\nStop with the shorter array.\n\n## Examples\n\n```rescript\nArray.zip([1, 2], [3, 4, 5]) == [(1, 3), (2, 4)]\n```\n"}
  }, {
    "label": "fillToEnd",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, 'a, ~start: int) => unit",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`fillToEnd(array, value, ~start)` fills `array` with `value` from the `start` index.\n\nBeware this will *mutate* the array.\n\nSee [`Array.fill`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill) on MDN.\n\n## Examples\n\n```rescript\nlet myArray = [1, 2, 3, 4]\nmyArray->Array.fillToEnd(9, ~start=1)\nmyArray == [1, 9, 9, 9]\n```\n"}
  }, {
    "label": "includes",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a) => bool",
    "documentation": {"kind": "markdown", "value": "\n`includes(array, item)` checks whether `array` includes `item`, by doing a [strict check for equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality).\n\nSee [`Array.includes`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) on MDN.\n\n## Examples\n\n```rescript\n[1, 2]->Array.includes(1) == true\n[1, 2]->Array.includes(3) == false\n\n[{\"language\": \"ReScript\"}]->Array.includes({\"language\": \"ReScript\"}) == false // false, because of strict equality\n```\n"}
  }, {
    "label": "findLastIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => int",
    "documentation": {"kind": "markdown", "value": "\n`findLastIndex(array, checker)` returns the index of the last element of `array` where the provided `checker` function returns true.\n\nReturns `-1` if the item does not exist. Consider using `Array.findLastIndexOpt` if you want an option instead (where `-1` would be `None`).\n\nSee [`Array.findLastIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLastIndex) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, JavaScript, ReScript]\n\narray->Array.findLastIndex(item => item == ReScript) == 2\n\narray->Array.findLastIndex(item => item == TypeScript) == -1\n```\n"}
  }, {
    "label": "fromInitializer",
    "kind": 12,
    "tags": [],
    "detail": "(~length: int, int => 'a) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`fromInitializer(~length, f)`\n\nCreates an array of length `length` initialized with the value returned from `f ` for each index.\n\n## Examples\n\n```rescript\nArray.fromInitializer(~length=3, i => i + 3) == [3, 4, 5]\n\nArray.fromInitializer(~length=7, i => i + 3) == [3, 4, 5, 6, 7, 8, 9]\n```\n"}
  }, {
    "label": "find",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`find(array, checker)` returns the first element of `array` where the provided `checker` function returns true.\n\nSee [`Array.find`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, TypeScript, JavaScript]\n\narray->Array.find(item => item == ReScript) == Some(ReScript)\n```\n"}
  }, {
    "label": "make",
    "kind": 12,
    "tags": [],
    "detail": "(~length: int, 'a) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`make(~length, init)` creates an array of length `length` initialized with the value of `init`.\n\n## Examples\n\n```rescript\nArray.make(~length=3, #apple) == [#apple, #apple, #apple]\nArray.make(~length=6, 7) == [7, 7, 7, 7, 7, 7]\n```\n"}
  }, {
    "label": "lastIndexOfFrom",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, 'a, int) => int",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n"}
  }, {
    "label": "toLocaleString",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => string",
    "documentation": {"kind": "markdown", "value": "\n`toLocaleString(array)` converts each element to a locale-aware string and joins them with commas.\n\nSee [`Array.toLocaleString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toLocaleString) on MDN.\n\n## Examples\n\n```rescript\n[\"apple\", \"banana\"]->Array.toLocaleString == \"apple,banana\"\n```\n"}
  }, {
    "label": "toSpliced",
    "kind": 12,
    "tags": [],
    "detail": "(\n  array<'a>,\n  ~start: int,\n  ~remove: int,\n  ~insert: array<'a>,\n) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`toSpliced(array, ~start, ~remove, ~insert)` returns a new array with the same edits that `splice` would perform, leaving the original unchanged.\n\nSee [`Array.toSpliced`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSpliced) on MDN.\n\n## Examples\n\n```rescript\nlet original = [1, 2, 3]\nlet updated = original->Array.toSpliced(~start=1, ~remove=1, ~insert=[10])\nupdated == [1, 10, 3]\noriginal == [1, 2, 3]\n```\n"}
  }, {
    "label": "sort",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, 'a) => Ordering.t) => unit",
    "documentation": {"kind": "markdown", "value": "\n`sort(array, comparator)` sorts `array` in-place using the `comparator` function.\n\nBeware this will *mutate* the array.\n\nSee [`Array.sort`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) on MDN.\n\n## Examples\n\n```rescript\nlet array = [3, 2, 1]\narray->Array.sort((a, b) => float(a - b))\narray == [1, 2, 3]\n```\n"}
  }, {
    "label": "filterMapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => option<'b>) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`filterMapWithIndex(array, fn)`\n\nCalls `fn` for each element and returns a new array containing results of the `fn` calls which are not `None`.\n\n## Examples\n\n```rescript\n[\"Hello\", \"Hi\", \"Good bye\"]->Array.filterMapWithIndex((item, index) =>\n  switch item {\n  | \"Hello\" => Some(index)\n  | _ => None\n  }\n) == [0]\n```\n"}
  }, {
    "label": "length",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => int",
    "documentation": {"kind": "markdown", "value": "\n`length(array)` returns the length of (i.e. number of items in) the array.\n\nSee [`Array.length`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\n\nsomeArray->Array.length == 2\n```\n"}
  }, {
    "label": "every",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => bool",
    "documentation": {"kind": "markdown", "value": "\n`every(array, predicate)` returns true if `predicate` returns true for all items in `array`.\n\nSee [`Array.every`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every) on MDN.\n\n## Examples\n\n```rescript\nlet array = [1, 2, 3, 4]\n\narray->Array.every(num => num <= 4) == true\n\narray->Array.every(num => num === 1) == false\n```\n"}
  }, {
    "label": "flat",
    "kind": 12,
    "tags": [],
    "detail": "array<array<'a>> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`flat(arrays)` concatenates an array of arrays into a single array.\n\nSee [`Array.flat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat) on MDN.\n\n## Examples\n\n```rescript\n[[1], [2], [3, 4]]->Array.flat == [1, 2, 3, 4]\n```\n"}
  }, {
    "label": "map",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`map(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray = array->Array.map(greeting => greeting ++ \" to you\")\n\nmappedArray == [\"Hello to you\", \"Hi to you\", \"Good bye to you\"]\n```\n"}
  }, {
    "label": "zipBy",
    "kind": 12,
    "tags": [],
    "detail": "(t<'a>, array<'b>, ('a, 'b) => 'c) => array<'c>",
    "documentation": {"kind": "markdown", "value": "\n`zipBy(xs, ys, f)` create an array by applying `f` to corresponding elements of\n`xs` and `ys`. Stops with shorter array.\n\nEquivalent to `map(zip(xs, ys), ((a, b)) => f(a, b))`\n\n## Examples\n\n```rescript\nArray.zipBy([1, 2, 3], [4, 5], (a, b) => 2 * a + b) == [6, 9]\n```\n"}
  }, {
    "label": "with",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int, 'a) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`with(array, index, value)` returns a copy of `array` where the element at `index` is replaced with `value`.\n\nSee [`Array.with`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/with) on MDN.\n\n## Examples\n\n```rescript\nlet original = [\"a\", \"b\", \"c\"]\nlet replaced = original->Array.with(1, \"x\")\nreplaced == [\"a\", \"x\", \"c\"]\noriginal == [\"a\", \"b\", \"c\"]\n```\n"}
  }, {
    "label": "lastIndexOfOpt",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a) => option<int>",
    "documentation": null
  }, {
    "label": "toReversed",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`toReversed(array)` creates a new array with all items from `array` in reversed order.\n\nSee [`Array.toReversed`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toReversed) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\nlet reversed = someArray->Array.toReversed\n\nreversed == [\"hello\", \"hi\"]\nsomeArray == [\"hi\", \"hello\"] // Original unchanged\n```\n"}
  }, {
    "label": "copyWithin",
    "kind": 12,
    "tags": [],
    "detail": "(\n  array<'a>,\n  ~target: int,\n  ~start: int,\n  ~end: int=?,\n) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`copyWithin(array, ~target, ~start, ~end)` copies starting at element `start` in the given array up to but not including `end` to the designated `target` position, returning the resulting array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.copyWithin`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin) on MDN.\n\n## Examples\n\n```rescript\nlet arr = [100, 101, 102, 103, 104, 105]\narr->Array.copyWithin(~target=1, ~start=2, ~end=5) == [100, 102, 103, 104, 104, 105]\narr == [100, 102, 103, 104, 104, 105]\n```\n"}
  }, {
    "label": "toString",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => string",
    "documentation": {"kind": "markdown", "value": "\n`toString(array)` stringifies `array` by running `toString` on all of the array elements and joining them with \",\".\n\nSee [`Array.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.toString == \"1,2,3,4\"\n```\n"}
  }, {
    "label": "everyWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => bool",
    "documentation": {"kind": "markdown", "value": "\n`everyWithIndex(array, checker)` returns true if all items in `array` returns true when running the provided `checker` function.\n\nSee [`Array.every`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every) on MDN.\n\n## Examples\n\n```rescript\nlet array = [1, 2, 3, 4]\n\narray->Array.everyWithIndex((num, index) => index < 5 && num <= 4) == true\n\narray->Array.everyWithIndex((num, index) => index < 2 && num >= 2) == false\n```\n"}
  }, {
    "label": "fill",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a, ~start: int=?, ~end: int=?) => unit",
    "documentation": {"kind": "markdown", "value": "\n`fill(array, value, ~start, ~end)` fills `array` with `value` from `start` to `end`.\n\nBeware this will *mutate* the array.\n\nSee [`Array.fill`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill) on MDN.\n\n## Examples\n\n```rescript\nlet myArray = [1, 2, 3, 4]\n\nmyArray->Array.fill(9)\nmyArray == [9, 9, 9, 9]\n\nmyArray->Array.fill(0, ~start=1)\nmyArray == [9, 0, 0, 0]\n\nmyArray->Array.fill(5, ~start=1, ~end=3)\nmyArray == [9, 5, 5, 0]\n```\n"}
  }, {
    "label": "findWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`findWithIndex(array, checker)` returns the first element of `array` where the provided `checker` function returns true.\n\nSee [`Array.find`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [TypeScript, JavaScript, ReScript]\n\narray->Array.findWithIndex((item, index) => index > 1 && item == ReScript) == Some(ReScript)\n```\n"}
  }, {
    "label": "reverse",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => unit",
    "documentation": {"kind": "markdown", "value": "\n`reverse(array)` reverses the order of the items in `array`.\n\nBeware this will *mutate* the array.\n\nSee [`Array.reverse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\nsomeArray->Array.reverse\n\nsomeArray == [\"hello\", \"hi\"]\n```\n"}
  }, {
    "label": "fromString",
    "kind": 12,
    "tags": [],
    "detail": "string => array<string>",
    "documentation": {"kind": "markdown", "value": "\n`fromString(str)` creates an array of each character as a separate string from the provided `str`.\n\n## Examples\n\n```rescript\nArray.fromString(\"abcde\") == [\"a\", \"b\", \"c\", \"d\", \"e\"]\n```\n"}
  }, {
    "label": "findLastIndexWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => int",
    "documentation": {"kind": "markdown", "value": "\n`findLastIndexWithIndex(array, checker)` returns the index of the last element of `array` where the provided `checker` function returns true.\n\nReturns `-1` if the item does not exist. Consider using `Array.findLastIndexOpt` if you want an option instead (where `-1` would be `None`).\n\nSee [`Array.findLastIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLastIndex) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, JavaScript, JavaScript, ReScript]\n\nlet isReScriptLast =\n  array->Array.findLastIndexWithIndex((item, index) => index === 3 && item == ReScript)\nlet isTypeScriptLast =\n  array->Array.findLastIndexWithIndex((item, index) => index === 3 && item == TypeScript)\n\nisReScriptLast == 3\nisTypeScriptLast == -1\n```\n"}
  }, {
    "label": "getUnsafe",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int) => 'a",
    "documentation": {"kind": "markdown", "value": "\n`getUnsafe(array, index)` returns the element at `index` of `array`.\n\nThis is _unsafe_, meaning it will return `undefined` value if `index` does not exist in `array`.\n\nUse `Array.getUnsafe` only when you are sure the `index` exists (i.e. when using for-loop).\n\n## Examples\n```rescript\nlet array = [1, 2, 3]\nfor index in 0 to array->Array.length - 1 {\n  let value = array->Array.getUnsafe(index)\n  Console.log(value)\n}\n```\n"}
  }, {
    "label": "entries",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => Iterator.t<(int, 'a)>",
    "documentation": {"kind": "markdown", "value": "\n`entries(array)` returns a new array iterator object that contains the key/value pairs for each index in the array.\n\nSee [Array.prototype.entries](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries) on MDN.\n\n## Examples\n\n```rescript\nlet array = [5, 6, 7]\nlet iterator: Iterator.t<(int, int)> = array->Array.entries\niterator->Iterator.next == {done: false, value: Some((0, 5))}\niterator->Iterator.next == {done: false, value: Some((1, 6))}\n```\n"}
  }, {
    "label": "unshiftMany",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<'a>) => unit",
    "documentation": {"kind": "markdown", "value": "\n`unshiftMany(array, itemsArray)` inserts many new items to the start of the array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.push`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\nsomeArray->Array.unshiftMany([\"yay\", \"wehoo\"])\nsomeArray == [\"yay\", \"wehoo\", \"hi\", \"hello\"]\n```\n"}
  }, {
    "label": "lastIndexOf",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a, ~from: int=?) => int",
    "documentation": {"kind": "markdown", "value": "\n`lastIndexOf(array, item, ~from)` returns the last index of the provided `item` in `array`, searching backwards from `from`. Uses [strict check for equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality) when comparing items.\n\nReturns `-1` if the item isn't found. Check out `Array.lastIndexOfOpt` for a version that returns `None` instead of `-1` if the item does not exist.\n\nSee [`Array.lastIndexOf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 1, 2]->Array.lastIndexOf(2) == 3\n[1, 2]->Array.lastIndexOf(3) == -1\n[1, 2, 1, 2]->Array.lastIndexOf(2, ~from=2) == 1\n\n[{\"language\": \"ReScript\"}]->Array.lastIndexOf({\"language\": \"ReScript\"}) == -1 // -1, because of strict equality\n```\n"}
  }, {
    "label": "filter",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`filter(array, checker)` returns a new array containing all elements from `array` for which the provided `checker` function returns true.\n\nSee [`Array.filter`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.filter(num => num > 2) == [3, 4]\n```\n"}
  }, {
    "label": "compare",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<'a>, ('a, 'a) => Ordering.t) => Ordering.t",
    "documentation": {"kind": "markdown", "value": "\n`compare(left, right, comparator)` compares two arrays element by element using `comparator` and returns an `Ordering`.\n\n## Examples\n\n```rescript\nArray.compare([1, 3], [1, 2], Int.compare) == Ordering.greater\nArray.compare([1, 2], [1, 2], Int.compare) == Ordering.equal\n```\n"}
  }, {
    "label": "join",
    "kind": 12,
    "tags": [],
    "detail": "(array<string>, string) => string",
    "documentation": {"kind": "markdown", "value": "\n`join(array, separator)` produces a string where all items of `array` are printed, separated by `separator`. Array items must be strings, to join number or other arrays, use `joinUnsafe`. Under the hood this will run JavaScript's `toString` on all the array items.\n\nSee [Array.join](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join)\n\n## Examples\n\n```rescript\n[\"One\", \"Two\", \"Three\"]->Array.join(\" -- \") == \"One -- Two -- Three\"\n```\n"}
  }, {
    "label": "last",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`last(array)` returns the last element of `array`.\n\nReturns `None` if the array is empty.\n\n## Examples\n\n```rescript\n[\"Hello\", \"Hi\", \"Good bye\"]->Array.last == Some(\"Good bye\")\n\n[]->Array.last == None\n```\n"}
  }, {
    "label": "ignore",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => unit",
    "documentation": {"kind": "markdown", "value": "\n  `ignore(array)` ignores the provided array and returns unit.\n\n  This helper is useful when you want to discard a value (for example, the result of an operation with side effects)\n  without having to store or process it further.\n"}
  }, {
    "label": "isArray",
    "kind": 12,
    "tags": [],
    "detail": "'a => bool",
    "documentation": {"kind": "markdown", "value": "\n`isArray(value)` returns `true` when `value` is a JavaScript array and `false` otherwise.\n\nSee [`Array.isArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) on MDN.\n\n## Examples\n\n```rescript\nArray.isArray([1, 2, 3]) == true\nArray.isArray(\"not an array\") == false\n```\n"}
  }, {
    "label": "values",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => Iterator.t<'a>",
    "documentation": {"kind": "markdown", "value": "\n`values(array)` returns a new array iterator object that contains the values for each index in the array.\n\nSee [Array.prototype.values](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values) on MDN.\n\n## Examples\n\n```rescript\nlet array = [5, 6, 7]\nlet iterator: Iterator.t<int> = array->Array.values\niterator->Iterator.next == {done: false, value: Some(5)}\niterator->Iterator.next == {done: false, value: Some(6)}\n```\n "}
  }, {
    "label": "indexOfOpt",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a) => option<int>",
    "documentation": {"kind": "markdown", "value": "\n`indexOfOpt(array, item)` returns an option of the index of the provided `item` in `array`. Uses [strict check for equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality) when comparing items.\n\nSee [`Array.indexOf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) on MDN.\n\n## Examples\n\n```rescript\n[1, 2]->Array.indexOfOpt(2) == Some(1)\n[1, 2]->Array.indexOfOpt(3) == None\n[{\"language\": \"ReScript\"}]->Array.indexOfOpt({\"language\": \"ReScript\"}) == None // None, because of strict equality\n```\n"}
  }, {
    "label": "forEachWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => unit) => unit",
    "documentation": {"kind": "markdown", "value": "\n`forEachWithIndex(array, fn)` runs the provided `fn` on every element of `array`.\n\nSee [`Array.forEach`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\n\narray->Array.forEachWithIndex((item, index) => {\n  Console.log(\"At item \" ++ Int.toString(index) ++ \": \" ++ item)\n})\n```\n"}
  }, {
    "label": "reduce",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'b, ('b, 'a) => 'b) => 'b",
    "documentation": {"kind": "markdown", "value": "\n`reduce(xs, init, fn)`\n\nApplies `fn` to each element of `xs` from beginning to end. Function `fn` has two parameters: the item from the list and an \"accumulator\"; which starts with a value of `init`. `reduce` returns the final value of the accumulator.\n\n## Examples\n\n```rescript\nArray.reduce([2, 3, 4], 1, (a, b) => a + b) == 10\n\nArray.reduce([\"a\", \"b\", \"c\", \"d\"], \"\", (a, b) => a ++ b) == \"abcd\"\n\n[1, 2, 3]->Array.reduce(list{}, List.add) == list{3, 2, 1}\n\nArray.reduce([], list{}, List.add) == list{}\n```\n"}
  }, {
    "label": "sliceToEnd",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, ~start: int) => array<'a>",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`sliceToEnd(array, start)` creates a new array from `array`, with all items from `array` starting from `start`.\n\nSee [`Array.slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.sliceToEnd(~start=1) == [2, 3, 4]\n```\n"}
  }, {
    "label": "fromArrayLikeWithMap",
    "kind": 12,
    "tags": [],
    "detail": "(arrayLike<'a>, 'a => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`fromArrayLikeWithMap(source, map)` converts an array-like value into an array and applies `map` to every element.\n\nSee [`Array.from`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) on MDN.\n\n## Examples\n\n```rescript\nlet source: Array.arrayLike<int> = %raw(`{0: 1, 1: 2, length: 2}`)\nArray.fromArrayLikeWithMap(source, x => x * 10) == [10, 20]\n```\n"}
  }, {
    "label": "fillAll",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, 'a) => unit",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`fillAll(array, value)` fills the entire `array` with `value`.\n\nBeware this will *mutate* the array.\n\nSee [`Array.fill`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill) on MDN.\n\n## Examples\n\n```rescript\nlet myArray = [1, 2, 3, 4]\nmyArray->Array.fillAll(9)\nmyArray == [9, 9, 9, 9]\n```\n"}
  }, {
    "label": "set",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int, 'a) => unit",
    "documentation": {"kind": "markdown", "value": "\n`set(array, index, item)` sets the provided `item` at `index` of `array`.\n\nBeware this will *mutate* the array.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\narray->Array.set(1, \"Hello\")\n\narray[1] == Some(\"Hello\")\n```\n"}
  }, {
    "label": "isEmpty",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => bool",
    "documentation": {"kind": "markdown", "value": "\n`isEmpty(array)` returns `true` if the array is empty (has length 0), `false` otherwise.\n\n## Examples\n\n```rescript\n[]->Array.isEmpty->assertEqual(true)\n[1, 2, 3]->Array.isEmpty->assertEqual(false)\n\nlet emptyArray = []\nemptyArray->Array.isEmpty->assertEqual(true)\n\nlet nonEmptyArray = [\"hello\"]\nnonEmptyArray->Array.isEmpty->assertEqual(false)\n```\n"}
  }, {
    "label": "filterWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => bool) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`filterWithIndex(array, checker)` returns a new array containing all elements from `array` for which the provided `checker` function returns true.\n\nSee [`Array.filter`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) on MDN.\n\n## Examples\n\n```rescript\n[1, 2, 3, 4]->Array.filterWithIndex((num, index) => index === 0 || num === 2) == [1, 2]\n```\n"}
  }, {
    "label": "findIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => int",
    "documentation": {"kind": "markdown", "value": "\n`findIndex(array, checker)` returns the index of the first element of `array` where the provided `checker` function returns true.\n\nReturns `-1` if the item does not exist. Consider using `Array.findIndexOpt` if you want an option instead (where `-1` would be `None`).\n\nSee [`Array.findIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) on MDN.\n\n## Examples\n\n```rescript\ntype languages = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, JavaScript]\n\narray->Array.findIndex(item => item == ReScript) == 0\n\narray->Array.findIndex(item => item == TypeScript) == -1\n```\n"}
  }, {
    "label": "setSymbol",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, Symbol.t, 'b) => unit",
    "documentation": {"kind": "markdown", "value": "\n`setSymbol(array, key, value)` stores `value` under the symbol `key` on `array`.\n\nBeware this will *mutate* the array.\n\nSee [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) on MDN.\n\n## Examples\n\n```rescript\nlet key = Symbol.make(\"count\")\nlet items = []\nitems->Array.setSymbol(key, 5)\nArray.getSymbol(items, key) == Some(5)\n```\n"}
  }, {
    "label": "equal",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<'a>, ('a, 'a) => bool) => bool",
    "documentation": {"kind": "markdown", "value": "\n`equal(left, right, predicate)` checks if the two arrays contain the same elements according to the equality `predicate`.\n\n## Examples\n\n```rescript\nArray.equal([1, 2, 3], [1, 2, 3], Int.equal) == true\nArray.equal([1, 2, 3], [1, 3, 2], Int.equal) == false\n```\n"}
  }, {
    "label": "joinUnsafe",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, string) => string",
    "documentation": {"kind": "markdown", "value": "\n`joinUnsafe(array, separator)` produces a string where all items of `array` are printed, separated by `separator`. Under the hood this will run JavaScript's `toString` on all the array items.\n\nSee [Array.join](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join)\n\n## Examples\n\n```rescript\n[1, 2, 3]->Array.joinUnsafe(\" -- \") == \"1 -- 2 -- 3\"\n```\n"}
  }, {
    "label": "mapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`mapWithIndex(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray =\n  array->Array.mapWithIndex((greeting, index) => greeting ++ \" at position \" ++ Int.toString(index))\n\nmappedArray == [\"Hello at position 0\", \"Hi at position 1\", \"Good bye at position 2\"]\n```\n"}
  }, {
    "label": "flatMapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => array<'b>) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`flatMapWithIndex(array, mapper)` returns a new array concatenating the arrays returned from running `mapper` on all items in `array`.\n\n## Examples\n\n```rescript\ntype language = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, TypeScript, JavaScript]\n\narray->Array.flatMapWithIndex((item, index) =>\n  switch item {\n  | ReScript => [index]\n  | TypeScript => [index, index + 1]\n  | JavaScript => [index, index + 1, index + 2]\n  }\n) == [0, 1, 2, 2, 3, 4]\n```\n"}
  }, {
    "label": "copyWithinToEnd",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, ~target: int, ~start: int) => array<'a>",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`copyWithinToEnd(array, ~target, ~start)` copies starting at element `start` in the given array to the designated `target` position, returning the resulting array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.copyWithin`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin) on MDN.\n\n## Examples\n\n```rescript\nlet arr = [100, 101, 102, 103, 104]\narr->Array.copyWithinToEnd(~target=0, ~start=2) == [102, 103, 104, 103, 104]\narr == [102, 103, 104, 103, 104]\n```\n"}
  }, {
    "label": "unshift",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a) => unit",
    "documentation": {"kind": "markdown", "value": "\n`unshift(array, item)` inserts a new item at the start of the array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.unshift`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\nsomeArray->Array.unshift(\"yay\")\nsomeArray == [\"yay\", \"hi\", \"hello\"]\n```\n"}
  }, {
    "label": "indexOf",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a, ~from: int=?) => int",
    "documentation": {"kind": "markdown", "value": "\n`indexOf(array, item, ~from)` returns the index of the provided `item` in `array`, starting the search at `from`. Uses [strict check for equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality) when comparing items.\n\nReturns `-1` if the item isn't found. Check out `Array.indexOfOpt` for a version that returns `None` instead of `-1` if the item does not exist.\n\nSee [`Array.indexOf`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) on MDN.\n\n## Examples\n\n```rescript\n[1, 2]->Array.indexOf(2) == 1\n[1, 2]->Array.indexOf(3) == -1\n[1, 2, 1, 2]->Array.indexOf(2, ~from=2) == 3\n\n[{\"language\": \"ReScript\"}]->Array.indexOf({\"language\": \"ReScript\"}) == -1 // -1, because of strict equality\n```\n"}
  }, {
    "label": "push",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a) => unit",
    "documentation": {"kind": "markdown", "value": "\n`push(array, item)` appends `item` to the end of `array`.\n\nBeware this will *mutate* the array.\n\nSee [`Array.push`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\n\nsomeArray->Array.push(\"yay\")\n\nsomeArray == [\"hi\", \"hello\", \"yay\"]\n```\n"}
  }, {
    "label": "toSorted",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, 'a) => Ordering.t) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`toSorted(array, comparator)` returns a new, sorted array from `array`, using the `comparator` function.\n\nSee [`Array.toSorted`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [3, 2, 1]\n\nsomeArray->Array.toSorted(Int.compare) == [1, 2, 3]\n\nsomeArray == [3, 2, 1] // Original unchanged\n```\n"}
  }, {
    "label": "reduceWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'b, ('b, 'a, int) => 'b) => 'b",
    "documentation": {"kind": "markdown", "value": "\n`reduceWithIndex(x, init, fn)`\n\nApplies `fn` to each element of `xs` from beginning to end. Function `fn` has three parameters: the item from the array and an \"accumulator\", which starts with a value of `init` and the index of each element. `reduceWithIndex` returns the final value of the accumulator.\n\n## Examples\n\n```rescript\nArray.reduceWithIndex([1, 2, 3, 4], 0, (acc, x, i) => acc + x + i) == 16\n\nArray.reduceWithIndex([1, 2, 3], list{}, (acc, v, i) => list{v + i, ...acc}) == list{5, 3, 1}\n\nArray.reduceWithIndex([], list{}, (acc, v, i) => list{v + i, ...acc}) == list{}\n```\n"}
  }, {
    "label": "some",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => bool",
    "documentation": {"kind": "markdown", "value": "\n`some(array, predicate)` returns true if `predicate` returns true for any element in `array`.\n\nSee [`Array.some`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\n\narray->Array.some(greeting => greeting === \"Hello\") == true\n```\n"}
  }, {
    "label": "unsafe_get",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, int) => 'a",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`unsafe_get(array, index)` returns the element at `index` of `array`.\n\nThis is _unsafe_, meaning it will return `undefined` value if `index` does not exist in `array`.\n\nUse `Array.unsafe_get` only when you are sure the `index` exists (i.e. when using for-loop).\n\n## Examples\n\n```rescript\nlet array = [1, 2, 3]\nfor index in 0 to array->Array.length - 1 {\n  let value = array->Array.unsafe_get(index)\n  Console.log(value)\n}\n```\n"}
  }, {
    "label": "partition",
    "kind": 12,
    "tags": [],
    "detail": "(t<'a>, 'a => bool) => (t<'a>, t<'a>)",
    "documentation": {"kind": "markdown", "value": "\n`partition(f, a)` split array into tuple of two arrays based on predicate `f`;\nfirst of tuple where predicate cause true, second where predicate cause false\n\n## Examples\n\n```rescript\nArray.partition([1, 2, 3, 4, 5], x => mod(x, 2) == 0) == ([2, 4], [1, 3, 5])\n\nArray.partition([1, 2, 3, 4, 5], x => mod(x, 2) != 0) == ([1, 3, 5], [2, 4])\n```\n"}
  }, {
    "label": "copyAllWithin",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, ~target: int) => array<'a>",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`isEmpty(array)` returns `true` if the array is empty (has length 0), `false` otherwise.\n\n## Examples\n\n```rescript\nlet arr = [100, 101, 102, 103, 104]\narr->Array.copyAllWithin(~target=2) == [100, 101, 100, 101, 102]\narr == [100, 101, 100, 101, 102]\n```\n"}
  }, {
    "label": "keepSome",
    "kind": 12,
    "tags": [],
    "detail": "array<option<'a>> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`keepSome(arr)`\n\nReturns a new array containing `value` for all elements that are `Some(value)`\nand ignoring every value that is `None`\n\n## Examples\n\n```rescript\nArray.keepSome([Some(1), None, Some(3)]) == [1, 3]\n\nArray.keepSome([Some(1), Some(2), Some(3)]) == [1, 2, 3]\n\nArray.keepSome([None, None, None]) == []\n\nArray.keepSome([]) == []\n```\n"}
  }, {
    "label": "at",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int) => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`at(array, index)`\n\nGet an element by its index. Negative indices count backwards from the last item.\n\n## Examples\n\n```rescript\n[\"a\", \"b\", \"c\"]->Array.at(0) == Some(\"a\")\n[\"a\", \"b\", \"c\"]->Array.at(2) == Some(\"c\")\n[\"a\", \"b\", \"c\"]->Array.at(3) == None\n[\"a\", \"b\", \"c\"]->Array.at(-1) == Some(\"c\")\n[\"a\", \"b\", \"c\"]->Array.at(-3) == Some(\"a\")\n[\"a\", \"b\", \"c\"]->Array.at(-4) == None\n```\n"}
  }, {
    "label": "pop",
    "kind": 12,
    "tags": [],
    "detail": "array<'a> => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`pop(array)` removes the last item from `array` and returns it.\n\nBeware this will *mutate* the array.\n\nSee [`Array.pop`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\n\nsomeArray->Array.pop == Some(\"hello\")\n\nsomeArray == [\"hi\"] // Notice last item is gone.\n```\n"}
  }, {
    "label": "get",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int) => option<'a>",
    "documentation": {"kind": "markdown", "value": "\n`get(array, index)` returns the element at `index` of `array`.\n\nReturns `None` if the index does not exist in the array. Equivalent to doing `array[index]` in JavaScript.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\n\narray->Array.get(0) == Some(\"Hello\")\n\narray->Array.get(3) == None\n```\n"}
  }, {
    "label": "removeInPlace",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, int) => unit",
    "documentation": {"kind": "markdown", "value": "\n`removeInPlace(array, index)` removes the item at the specified `index` from `array`.\n\nBeware this will *mutate* the array.\n\n## Examples\n\n```rescript\nlet array = []\narray->Array.removeInPlace(0)\narray == [] // Removing from an empty array does nothing\n\nlet array2 = [\"Hello\", \"Hi\", \"Good bye\"]\narray2->Array.removeInPlace(1)\narray2 == [\"Hello\", \"Good bye\"] // Removes the item at index 1\n```\n "}
  }, {
    "label": "findLastIndexOpt",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => bool) => option<int>",
    "documentation": {"kind": "markdown", "value": "\n`findIndexOpt(array, checker)` returns the index of the last element of `array` where the provided `checker` function returns true.\n\nReturns `None` if no item matches.\n\nSee [`Array.findLastIndex`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findLastIndex) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"hello\", \"world\", \"!\"]\n\narray->Array.findLastIndexOpt(item => item->String.includes(\"o\")) == Some(1)\n```\n"}
  }, {
    "label": "pushMany",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, array<'a>) => unit",
    "documentation": {"kind": "markdown", "value": "\n`pushMany(array, itemsArray)` appends many new items to the end of the array.\n\nBeware this will *mutate* the array.\n\nSee [`Array.push`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) on MDN.\n\n## Examples\n\n```rescript\nlet someArray = [\"hi\", \"hello\"]\n\nsomeArray->Array.pushMany([\"yay\", \"wehoo\"])\nsomeArray == [\"hi\", \"hello\", \"yay\", \"wehoo\"]\n```\n"}
  }, {
    "label": "unzip",
    "kind": 12,
    "tags": [],
    "detail": "array<('a, 'b)> => (t<'a>, array<'b>)",
    "documentation": {"kind": "markdown", "value": "\n`unzip(a)` takes an array of pairs and creates a pair of arrays. The first array\ncontains all the first items of the pairs; the second array contains all the\nsecond items.\n\n## Examples\n\n```rescript\nArray.unzip([(1, 2), (3, 4)]) == ([1, 3], [2, 4])\n\nArray.unzip([(1, 2), (3, 4), (5, 6), (7, 8)]) == ([1, 3, 5, 7], [2, 4, 6, 8])\n```\n"}
  }, {
    "label": "fromIterator",
    "kind": 12,
    "tags": [],
    "detail": "Iterator.t<'a> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`fromIterator(iterator)` creates an array from the provided `iterator`\n\n## Examples\n\n```rescript\nMap.fromArray([(\"foo\", 1), (\"bar\", 2)])\n->Map.values\n->Array.fromIterator == [1, 2]\n```\n"}
  }, {
    "label": "forEach",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => unit) => unit",
    "documentation": {"kind": "markdown", "value": "\n`forEach(array, fn)` runs the provided `fn` on every element of `array`.\n\nSee [`Array.forEach`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) on MDN.\n\n## Examples\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\n\narray->Array.forEach(item => {\n  Console.log(item)\n})\n```\n"}
  }, {
    "label": "flatMap",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => array<'b>) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`flatMap(array, mapper)` returns a new array concatenating the arrays returned from running `mapper` on all items in `array`.\n\n## Examples\n\n```rescript\ntype language = ReScript | TypeScript | JavaScript\n\nlet array = [ReScript, TypeScript, JavaScript]\n\narray->Array.flatMap(item =>\n  switch item {\n  | ReScript => [1, 2, 3]\n  | TypeScript => [4, 5, 6]\n  | JavaScript => [7, 8, 9]\n  }\n) == [1, 2, 3, 4, 5, 6, 7, 8, 9]\n```\n"}
  }, {
    "label": "fromArrayLike",
    "kind": 12,
    "tags": [],
    "detail": "arrayLike<'a> => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`fromArrayLike(source)` converts an array-like value (anything with indexed items and a `length`) into a regular array.\n\nSee [`Array.from`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) on MDN.\n\n## Examples\n\n```rescript\nlet source: Array.arrayLike<int> = %raw(`{0: 10, 1: 20, length: 2}`)\nArray.fromArrayLike(source) == [10, 20]\n```\n"}
  }, {
    "label": "indexOfFrom",
    "kind": 12,
    "tags": [1],
    "detail": "(array<'a>, 'a, int) => int",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n"}
  }]

Complete src/Completion.res 5:10
posCursor:[5:10] posNoWhite:[5:9] Found expr:[5:3->5:10]
Pexp_ident Array.m:[5:3->5:10]
Completable: Cpath Value[Array, m]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Array, m]
Path Array.m
[{
    "label": "make",
    "kind": 12,
    "tags": [],
    "detail": "(~length: int, 'a) => array<'a>",
    "documentation": {"kind": "markdown", "value": "\n`make(~length, init)` creates an array of length `length` initialized with the value of `init`.\n\n## Examples\n\n```rescript\nArray.make(~length=3, #apple) == [#apple, #apple, #apple]\nArray.make(~length=6, 7) == [7, 7, 7, 7, 7, 7]\n```\n"}
  }, {
    "label": "map",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`map(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray = array->Array.map(greeting => greeting ++ \" to you\")\n\nmappedArray == [\"Hello to you\", \"Hi to you\", \"Good bye to you\"]\n```\n"}
  }, {
    "label": "mapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`mapWithIndex(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray =\n  array->Array.mapWithIndex((greeting, index) => greeting ++ \" at position \" ++ Int.toString(index))\n\nmappedArray == [\"Hello at position 0\", \"Hi at position 1\", \"Good bye at position 2\"]\n```\n"}
  }]

Complete src/Completion.res 15:17
posCursor:[15:17] posNoWhite:[15:16] Found expr:[15:12->15:17]
Pexp_ident Dep.c:[15:12->15:17]
Completable: Cpath Value[Dep, c]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Dep, c]
Path Dep.c
[{
    "label": "customDouble",
    "kind": 12,
    "tags": [1],
    "detail": "int => int",
    "documentation": {"kind": "markdown", "value": "Deprecated: Use customDouble instead\n\nSome doc comment"}
  }]

Complete src/Completion.res 23:20
posCursor:[23:20] posNoWhite:[23:19] Found expr:[23:11->23:20]
Pexp_apply ...[23:11->23:18] ()
Completable: CnamedArg(Value[Lib, foo], "", [])
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Lib, foo]
Path Lib.foo
Found type for function (~age: int, ~name: string) => string
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 26:13
posCursor:[26:13] posNoWhite:[26:12] Found expr:[26:3->26:13]
Completable: Cpath array<int>->m
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath array<int>->m
ContextPath array<int>
Path Stdlib.Array.m
Path ArrayUtils.m
Path m
[{
    "label": "Array.map",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`map(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray = array->Array.map(greeting => greeting ++ \" to you\")\n\nmappedArray == [\"Hello to you\", \"Hi to you\", \"Good bye to you\"]\n```\n"}
  }, {
    "label": "Array.mapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`mapWithIndex(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray =\n  array->Array.mapWithIndex((greeting, index) => greeting ++ \" at position \" ++ Int.toString(index))\n\nmappedArray == [\"Hello at position 0\", \"Hi at position 1\", \"Good bye at position 2\"]\n```\n"}
  }]

Complete src/Completion.res 29:13
posCursor:[29:13] posNoWhite:[29:12] Found expr:[29:3->29:13]
Completable: Cpath string->toU
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath string->toU
ContextPath string
Path Stdlib.String.toU
Path toU
[{
    "label": "String.toUpperCase",
    "kind": 12,
    "tags": [],
    "detail": "string => string",
    "documentation": {"kind": "markdown", "value": "\n`toUpperCase(str)` converts `str` to upper case using the locale-insensitive\ncase mappings in the Unicode Character Database. Notice that the conversion can\nexpand the number of letters in the result, for example the German ß\ncapitalizes to two Ses in a row.\nSee [`String.toUpperCase`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) on MDN.\n\n## Examples\n\n```rescript\nString.toUpperCase(\"abc\") == \"ABC\"\nString.toUpperCase(`Straße`) == `STRASSE`\nString.toUpperCase(`πς`) == `ΠΣ`\n```\n"}
  }]

Complete src/Completion.res 34:8
posCursor:[34:8] posNoWhite:[34:7] Found expr:[34:3->34:8]
Completable: Cpath Value[op]->e
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[op]->e
ContextPath Value[op]
Path op
Path Stdlib.Option.e
Path e
[{
    "label": "Option.equal",
    "kind": 12,
    "tags": [],
    "detail": "(option<'a>, option<'b>, ('a, 'b) => bool) => bool",
    "documentation": {"kind": "markdown", "value": "\n`equal(opt1, opt2, f)` evaluates two optional values for equality with respect to a predicate function `f`. If both `opt1` and `opt2` are `None`, returns `true`.\nIf one of the arguments is `Some(value)` and the other is `None`, returns\n`false`.\nIf arguments are `Some(value1)` and `Some(value2)`, returns the result of\n`f(value1, value2)`, the predicate function `f` must return a bool.\n\n## Examples\n\n```rescript\nlet clockEqual = (a, b) => mod(a, 12) == mod(b, 12)\n\nopen Option\n\nequal(Some(3), Some(15), clockEqual) // true\nequal(Some(3), None, clockEqual) // false\nequal(None, Some(3), clockEqual) // false\nequal(None, None, clockEqual) // true\n```\n"}
  }]

Complete src/Completion.res 44:7
posCursor:[44:7] posNoWhite:[44:6] Found expr:[44:3->54:3]
Pexp_apply ...[50:9->50:10] (...[44:3->50:8], ...[51:2->54:3])
posCursor:[44:7] posNoWhite:[44:6] Found expr:[44:3->50:8]
Completable: Cpath Value[fa]->
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[fa]->
ContextPath Value[fa]
Path fa
CPPipe pathFromEnv:ForAuto found:true
Path ForAuto.
Path 
[{
    "label": "ForAuto.abc",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }, {
    "label": "ForAuto.abd",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }]

Complete src/Completion.res 47:21
XXX Not found!
[]

Complete src/Completion.res 59:30
posCursor:[59:30] posNoWhite:[59:29] Found expr:[59:14->59:30]
JSX <O.Comp:[59:15->59:21] second[59:22->59:28]=...[59:29->59:30]> _children:None
Completable: Cexpression CJsxPropValue [O, Comp] second=z
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath CJsxPropValue [O, Comp] second
Path O.Comp.make
[{
    "label": "zzz",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 62:23
posCursor:[62:23] posNoWhite:[62:22] Found expr:[62:14->62:23]
JSX <O.Comp:[62:15->62:21] z[62:22->62:23]=...[62:22->62:23]> _children:None
Completable: Cjsx([O, Comp], z, [z])
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
Path O.Comp.make
[{
    "label": "zoo",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }]

Complete src/Completion.res 65:8
Attribute id:reac:[65:3->65:8] label:reac
Completable: Cdecorator(reac)
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
[{
    "label": "react.component",
    "kind": 4,
    "tags": [],
    "detail": "",
    "documentation": {"kind": "markdown", "value": "The `@react.component` decorator is used to annotate functions that are RescriptReact components.\n\nYou will need this decorator whenever you want to use a ReScript / React component in ReScript JSX expressions.\n\nNote: The `@react.component` decorator requires the `jsx` config to be set in your `rescript.json` to enable the required React transformations.\n\n[Read more and see examples in the documentation](https://rescript-lang.org/syntax-lookup#react-component-decorator)."},
    "insertTextFormat": 2
  }, {
    "label": "react.componentWithProps",
    "kind": 4,
    "tags": [],
    "detail": "",
    "documentation": {"kind": "markdown", "value": "The `@react.componentWithProps` decorator is used to annotate functions that are RescriptReact components.\n\nYou will need this decorator whenever you want to use a ReScript / React component in ReScript JSX expressions.\n\nNote: The `@react.componentWithProps` decorator requires the `jsx` config to be set in your `rescript.json` to enable the required React transformations.\n\n[Read more and see examples in the documentation](https://rescript-lang.org/syntax-lookup#react-component-with-props-decorator)."},
    "insertTextFormat": 2
  }]

Complete src/Completion.res 68:10
posCursor:[68:10] posNoWhite:[68:9] Found expr:[0:-1->86:1]
Pexp_apply ...[80:6->80:7] (...[80:8->86:1])
Attribute id:react.let:[68:3->80:3] label:react.
Completable: Cdecorator(react.)
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
[{
    "label": "component",
    "kind": 4,
    "tags": [],
    "detail": "",
    "documentation": {"kind": "markdown", "value": "The `@react.component` decorator is used to annotate functions that are RescriptReact components.\n\nYou will need this decorator whenever you want to use a ReScript / React component in ReScript JSX expressions.\n\nNote: The `@react.component` decorator requires the `jsx` config to be set in your `rescript.json` to enable the required React transformations.\n\n[Read more and see examples in the documentation](https://rescript-lang.org/syntax-lookup#react-component-decorator)."},
    "insertTextFormat": 2
  }, {
    "label": "componentWithProps",
    "kind": 4,
    "tags": [],
    "detail": "",
    "documentation": {"kind": "markdown", "value": "The `@react.componentWithProps` decorator is used to annotate functions that are RescriptReact components.\n\nYou will need this decorator whenever you want to use a ReScript / React component in ReScript JSX expressions.\n\nNote: The `@react.componentWithProps` decorator requires the `jsx` config to be set in your `rescript.json` to enable the required React transformations.\n\n[Read more and see examples in the documentation](https://rescript-lang.org/syntax-lookup#react-component-with-props-decorator)."},
    "insertTextFormat": 2
  }]

Complete src/Completion.res 71:27
posCursor:[71:27] posNoWhite:[71:26] Found expr:[71:11->71:27]
Pexp_apply ...[71:11->71:18] (~name71:20->71:24=...[71:20->71:24])
Completable: CnamedArg(Value[Lib, foo], "", [name])
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Lib, foo]
Path Lib.foo
Found type for function (~age: int, ~name: string) => string
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 74:26
posCursor:[74:26] posNoWhite:[74:25] Found expr:[74:11->74:26]
Pexp_apply ...[74:11->74:18] (~age74:20->74:23=...[74:20->74:23])
Completable: CnamedArg(Value[Lib, foo], "", [age])
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Lib, foo]
Path Lib.foo
Found type for function (~age: int, ~name: string) => string
[{
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 77:32
posCursor:[77:32] posNoWhite:[77:31] Found expr:[77:11->77:32]
Pexp_apply ...[77:11->77:18] (~age77:20->77:23=...[77:25->77:28])
Completable: CnamedArg(Value[Lib, foo], "", [age])
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Lib, foo]
Path Lib.foo
Found type for function (~age: int, ~name: string) => string
[{
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 82:5
posCursor:[82:5] posNoWhite:[82:4] Found expr:[80:8->86:1]
Pexp_apply ...[80:8->80:15] (~age84:3->84:6=...[84:7->84:8], ~name85:3->85:7=...[85:8->85:10])
Completable: CnamedArg(Value[Lib, foo], "", [age, name])
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Lib, foo]
Path Lib.foo
Found type for function (~age: int, ~name: string) => string
[]

Complete src/Completion.res 90:13
posCursor:[90:13] posNoWhite:[90:12] Found expr:[90:3->93:18]
Pexp_send a[90:12->90:13] e:[90:3->90:10]
Completable: Cpath Value[someObj]["a"]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[someObj]["a"]
ContextPath Value[someObj]
Path someObj
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 95:24
posCursor:[95:24] posNoWhite:[95:23] Found expr:[95:3->99:6]
Pexp_send [95:24->95:24] e:[95:3->95:22]
Completable: Cpath Value[nestedObj]["x"]["y"][""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[nestedObj]["x"]["y"][""]
ContextPath Value[nestedObj]["x"]["y"]
ContextPath Value[nestedObj]["x"]
ContextPath Value[nestedObj]
Path nestedObj
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 99:7
posCursor:[99:7] posNoWhite:[99:6] Found expr:[99:3->102:20]
Pexp_send a[99:6->99:7] e:[99:3->99:4]
Completable: Cpath Value[o]["a"]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[o]["a"]
ContextPath Value[o]
Path o
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 104:17
posCursor:[104:17] posNoWhite:[104:16] Found expr:[104:3->125:19]
Pexp_send [104:17->104:17] e:[104:3->104:15]
Completable: Cpath Value[no]["x"]["y"][""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[no]["x"]["y"][""]
ContextPath Value[no]["x"]["y"]
ContextPath Value[no]["x"]
ContextPath Value[no]
Path no
[{
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }, {
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 110:5
posCursor:[110:5] posNoWhite:[110:4] Found expr:[110:3->110:5]
Pexp_field [110:3->110:4] _:[116:0->110:5]
Completable: Cpath Value[r].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[r].""
ContextPath Value[r]
Path r
ContextPath Value[r]->
ContextPath Value[r]
Path r
CPPipe pathFromEnv: found:true
Path Completion.
Path 
[{
    "label": "x",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nx: int\n```\n\n```rescript\ntype r = {x: int, y: string}\n```"}
  }, {
    "label": "y",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\ny: string\n```\n\n```rescript\ntype r = {x: int, y: string}\n```"}
  }]

Complete src/Completion.res 113:25
posCursor:[113:25] posNoWhite:[113:24] Found expr:[113:3->113:25]
Pexp_field [113:3->113:24] _:[116:0->113:25]
Completable: Cpath Value[Objects, Rec, recordVal].""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Objects, Rec, recordVal].""
ContextPath Value[Objects, Rec, recordVal]
Path Objects.Rec.recordVal
ContextPath Value[Objects, Rec, recordVal]->
ContextPath Value[Objects, Rec, recordVal]
Path Objects.Rec.recordVal
CPPipe pathFromEnv:Rec found:true
Path Objects.Rec.
Path 
[{
    "label": "xx",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nxx: int\n```\n\n```rescript\ntype recordt = {xx: int, ss: string}\n```"}
  }, {
    "label": "ss",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nss: string\n```\n\n```rescript\ntype recordt = {xx: int, ss: string}\n```"}
  }]

Complete src/Completion.res 120:7
posCursor:[120:7] posNoWhite:[120:6] Found expr:[119:11->123:1]
posCursor:[120:7] posNoWhite:[120:6] Found expr:[120:5->122:8]
posCursor:[120:7] posNoWhite:[120:6] Found expr:[120:5->120:7]
Pexp_ident my:[120:5->120:7]
Completable: Cpath Value[my]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[my]
Path my
[{
    "label": "myAmazingFunction",
    "kind": 12,
    "tags": [],
    "detail": "(int, int) => int",
    "documentation": null
  }]

Complete src/Completion.res 125:19
posCursor:[125:19] posNoWhite:[125:18] Found expr:[125:3->145:32]
Pexp_send [125:19->125:19] e:[125:3->125:17]
Completable: Cpath Value[Objects, object][""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Objects, object][""]
ContextPath Value[Objects, object]
Path Objects.object
[{
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }, {
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 151:6
posCursor:[151:6] posNoWhite:[151:5] Found expr:[151:3->151:6]
JSX <O.:__ghost__[0:-1->0:-1] > _children:None
[]

Complete src/Completion.res 157:8
posCursor:[157:8] posNoWhite:[157:7] Found expr:[157:3->157:8]
Pexp_field [157:3->157:7] _:[165:0->157:8]
Completable: Cpath Value[q].aa.""
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[q].aa.""
ContextPath Value[q].aa
ContextPath Value[q]
Path q
ContextPath Value[q]->aa
ContextPath Value[q]
Path q
CPPipe pathFromEnv: found:true
Path Completion.aa
Path aa
ContextPath Value[q].aa->
ContextPath Value[q].aa
ContextPath Value[q]
Path q
ContextPath Value[q]->aa
ContextPath Value[q]
Path q
CPPipe pathFromEnv: found:true
Path Completion.aa
Path aa
CPPipe pathFromEnv: found:true
Path Completion.
Path 
[{
    "label": "x",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nx: int\n```\n\n```rescript\ntype aa = {x: int, name: string}\n```"}
  }, {
    "label": "name",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nname: string\n```\n\n```rescript\ntype aa = {x: int, name: string}\n```"}
  }]

Complete src/Completion.res 159:9
posCursor:[159:9] posNoWhite:[159:8] Found expr:[159:3->159:9]
Pexp_field [159:3->159:7] n:[159:8->159:9]
Completable: Cpath Value[q].aa.n
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[q].aa.n
ContextPath Value[q].aa
ContextPath Value[q]
Path q
ContextPath Value[q]->aa
ContextPath Value[q]
Path q
CPPipe pathFromEnv: found:true
Path Completion.aa
Path aa
ContextPath Value[q].aa->n
ContextPath Value[q].aa
ContextPath Value[q]
Path q
ContextPath Value[q]->aa
ContextPath Value[q]
Path q
CPPipe pathFromEnv: found:true
Path Completion.aa
Path aa
CPPipe pathFromEnv: found:true
Path Completion.n
Path n
[{
    "label": "name",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nname: string\n```\n\n```rescript\ntype aa = {x: int, name: string}\n```"}
  }]

Complete src/Completion.res 162:6
posCursor:[162:6] posNoWhite:[162:5] Found expr:[162:3->162:6]
Pexp_construct Lis:[162:3->162:6] None
Completable: Cpath Value[Lis]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Lis]
Path Lis
[{
    "label": "List",
    "kind": 9,
    "tags": [],
    "detail": "module List",
    "documentation": null
  }]

Complete src/Completion.res 169:16
posCursor:[169:16] posNoWhite:[169:15] Found expr:[169:3->169:16]
JSX <WithChildren:[169:4->169:16] > _children:None
Completable: Cpath Module[WithChildren]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Module[WithChildren]
Path WithChildren
[{
    "label": "WithChildren",
    "kind": 9,
    "tags": [],
    "detail": "module WithChildren",
    "documentation": null
  }]

Complete src/Completion.res 172:17
posCursor:[172:17] posNoWhite:[172:16] Found type:[172:12->172:17]
Ptyp_constr Null.:[172:12->172:17]
Completable: Cpath Type[Null, ""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Type[Null, ""]
Path Null.
[{
    "label": "t",
    "kind": 22,
    "tags": [],
    "detail": "type t",
    "documentation": {"kind": "markdown", "value": "\nA type representing a value that can be either `'a` or `null`.\n\n\n```rescript\n@unboxed\ntype t<'a> = Primitive_js_extern.null<'a> =\n  | Value('a)\n  | @as(null) Null\n```"}
  }]

Complete src/Completion.res 174:20
posCursor:[174:20] posNoWhite:[174:19] Found type:[174:12->174:20]
Ptyp_constr ForAuto.:[174:12->174:20]
Completable: Cpath Type[ForAuto, ""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Type[ForAuto, ""]
Path ForAuto.
[{
    "label": "t",
    "kind": 22,
    "tags": [],
    "detail": "type t",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype t = int\n```"}
  }]

Complete src/Completion.res 179:13
posCursor:[179:13] posNoWhite:[179:12] Found expr:[179:11->179:13]
Pexp_construct As:[179:11->179:13] None
Completable: Cpath Value[As]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[As]
Path As
[{
    "label": "Asterix",
    "kind": 4,
    "tags": [],
    "detail": "Asterix",
    "documentation": {"kind": "markdown", "value": "```rescript\nAsterix\n```\n\n```rescript\ntype z = Allo | Asterix | Baba\n```"}
  }, {
    "label": "AsyncIterator",
    "kind": 9,
    "tags": [],
    "detail": "module AsyncIterator",
    "documentation": null
  }]

Complete src/Completion.res 182:17
Pmod_ident For:[182:14->182:17]
Completable: Cpath Module[For]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Module[For]
Path For
[{
    "label": "ForAuto",
    "kind": 9,
    "tags": [],
    "detail": "module ForAuto",
    "documentation": null
  }]

Complete src/Completion.res 190:11
posCursor:[190:11] posNoWhite:[190:10] Found expr:[190:3->190:11]
Pexp_ident Private.:[190:3->190:11]
Completable: Cpath Value[Private, ""]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[Private, ""]
Path Private.
[{
    "label": "b",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 202:6
posCursor:[202:6] posNoWhite:[202:5] Found expr:[202:3->202:6]
Pexp_ident sha:[202:3->202:6]
Completable: Cpath Value[sha]
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
ContextPath Value[sha]
Path sha
[]

Complete src/Completion.res 205:6
posCursor:[205:6] posNoWhite:[205:5] Found expr:[205:3->205:6]
Pexp_ident sha:[205:3->205:6]
Completable: Cpath Value[sha]
Raw opens: 1 Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 2 Stdlib Completion
ContextPath Value[sha]
Path sha
[{
    "label": "shadowed",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 208:6
posCursor:[208:6] posNoWhite:[208:5] Found expr:[208:3->208:6]
Pexp_ident sha:[208:3->208:6]
Completable: Cpath Value[sha]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[sha]
Path sha
[{
    "label": "shadowed",
    "kind": 12,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 221:22
posCursor:[221:22] posNoWhite:[221:21] Found expr:[221:3->224:22]
Pexp_send [221:22->221:22] e:[221:3->221:20]
Completable: Cpath Value[FAO, forAutoObject][""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[FAO, forAutoObject][""]
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "forAutoLabel",
    "kind": 4,
    "tags": [],
    "detail": "FAR.forAutoRecord",
    "documentation": null
  }]

Complete src/Completion.res 224:37
posCursor:[224:37] posNoWhite:[224:36] Found expr:[224:3->224:37]
Pexp_field [224:3->224:36] _:[233:0->224:37]
Completable: Cpath Value[FAO, forAutoObject]["forAutoLabel"].""
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[FAO, forAutoObject]["forAutoLabel"].""
ContextPath Value[FAO, forAutoObject]["forAutoLabel"]
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
ContextPath Value[FAO, forAutoObject]["forAutoLabel"]->
ContextPath Value[FAO, forAutoObject]["forAutoLabel"]
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
CPPipe pathFromEnv:FAR found:true
Path FAR.
Path 
[{
    "label": "forAuto",
    "kind": 5,
    "tags": [],
    "detail": "ForAuto.t",
    "documentation": {"kind": "markdown", "value": "```rescript\nforAuto: ForAuto.t\n```\n\n```rescript\ntype forAutoRecord = {\n  forAuto: ForAuto.t,\n  something: option<int>,\n}\n```"}
  }, {
    "label": "something",
    "kind": 5,
    "tags": [],
    "detail": "option<int>",
    "documentation": {"kind": "markdown", "value": "```rescript\nsomething: option<int>\n```\n\n```rescript\ntype forAutoRecord = {\n  forAuto: ForAuto.t,\n  something: option<int>,\n}\n```"}
  }]

Complete src/Completion.res 227:46
posCursor:[227:46] posNoWhite:[227:45] Found expr:[227:3->0:-1]
Completable: Cpath Value[FAO, forAutoObject]["forAutoLabel"].forAuto->
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[FAO, forAutoObject]["forAutoLabel"].forAuto->
ContextPath Value[FAO, forAutoObject]["forAutoLabel"].forAuto
ContextPath Value[FAO, forAutoObject]["forAutoLabel"]
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
ContextPath Value[FAO, forAutoObject]["forAutoLabel"]->forAuto
ContextPath Value[FAO, forAutoObject]["forAutoLabel"]
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
CPPipe pathFromEnv:FAR found:true
Path FAR.forAuto
Path forAuto
CPPipe pathFromEnv:ForAuto found:false
Path ForAuto.
Path 
[{
    "label": "ForAuto.abc",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }, {
    "label": "ForAuto.abd",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }, {
    "label": "myAmazingFunction",
    "kind": 12,
    "tags": [],
    "detail": "(int, int) => int",
    "documentation": null
  }]

Complete src/Completion.res 230:55
posCursor:[230:55] posNoWhite:[230:54] Found expr:[230:3->230:55]
posCursor:[230:55] posNoWhite:[230:54] Found expr:[230:46->230:55]
Pexp_ident ForAuto.a:[230:46->230:55]
Completable: Cpath Value[ForAuto, a]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ForAuto, a]
Path ForAuto.a
[{
    "label": "abc",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }, {
    "label": "abd",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }]

Complete src/Completion.res 234:34
posCursor:[234:34] posNoWhite:[234:33] Found expr:[234:18->234:36]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[234:18->234:34], ...[234:34->234:35])
posCursor:[234:34] posNoWhite:[234:33] Found expr:[234:18->234:34]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[234:18->234:30], ...[234:32->234:34])
posCursor:[234:34] posNoWhite:[234:33] Found expr:[234:32->234:34]
Pexp_ident na:[234:32->234:34]
Completable: Cpath Value[na]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[na]
Path na
[{
    "label": "name",
    "kind": 12,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 237:17
posCursor:[237:17] posNoWhite:[237:14] Found expr:[237:14->237:22]
Completable: Cnone
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
[]

Complete src/Completion.res 243:8
posCursor:[243:8] posNoWhite:[243:7] Found expr:[242:14->243:8]
Pexp_apply ...[243:3->243:4] (...[242:14->242:15], ...[243:5->243:8])
posCursor:[243:8] posNoWhite:[243:7] Found expr:[243:5->243:8]
Pexp_field [243:5->243:7] _:[245:0->243:8]
Completable: Cpath Value[_z].""
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[_z].""
ContextPath Value[_z]
Path _z
ContextPath Value[_z]->
ContextPath Value[_z]
Path _z
CPPipe pathFromEnv: found:true
Path Completion.
Path 
[{
    "label": "x",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nx: int\n```\n\n```rescript\ntype r = {x: int, y: string}\n```"}
  }, {
    "label": "y",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\ny: string\n```\n\n```rescript\ntype r = {x: int, y: string}\n```"}
  }]

Complete src/Completion.res 254:17
posCursor:[254:17] posNoWhite:[254:16] Found expr:[254:11->254:17]
Pexp_construct SomeLo:[254:11->254:17] None
Completable: Cpath Value[SomeLo]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[SomeLo]
Path SomeLo
[{
    "label": "SomeLocalModule",
    "kind": 9,
    "tags": [],
    "detail": "module SomeLocalModule",
    "documentation": null
  }]

Complete src/Completion.res 256:29
posCursor:[256:29] posNoWhite:[256:28] Found type:[256:13->256:29]
Ptyp_constr SomeLocalModule.:[256:13->256:29]
Completable: Cpath Type[SomeLocalModule, ""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[SomeLocalModule, ""]
Path SomeLocalModule.
[{
    "label": "zz",
    "kind": 22,
    "tags": [],
    "detail": "type zz",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype zz = int\n```"}
  }]

Complete src/Completion.res 261:33
posCursor:[261:33] posNoWhite:[261:32] Found type:[261:17->263:11]
Ptyp_constr SomeLocalModule.:[261:17->263:11]
Completable: Cpath Type[SomeLocalModule, ""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[SomeLocalModule, ""]
Path SomeLocalModule.
[{
    "label": "zz",
    "kind": 22,
    "tags": [],
    "detail": "type zz",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype zz = int\n```"}
  }]

Complete src/Completion.res 268:21
Ptype_variant unary SomeLocal:[268:12->268:21]
Completable: Cpath Value[SomeLocal]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[SomeLocal]
Path SomeLocal
[{
    "label": "SomeLocalVariantItem",
    "kind": 4,
    "tags": [],
    "detail": "SomeLocalVariantItem",
    "documentation": {"kind": "markdown", "value": "```rescript\nSomeLocalVariantItem\n```\n\n```rescript\ntype someLocalVariant = SomeLocalVariantItem\n```"}
  }, {
    "label": "SomeLocalModule",
    "kind": 9,
    "tags": [],
    "detail": "module SomeLocalModule",
    "documentation": null
  }]

Complete src/Completion.res 271:20
posCursor:[271:20] posNoWhite:[271:19] Found pattern:[271:7->274:3]
posCursor:[271:20] posNoWhite:[271:19] Found type:[271:11->274:3]
Ptyp_constr SomeLocal:[271:11->274:3]
Completable: Cpath Type[SomeLocal]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[SomeLocal]
Path SomeLocal
[{
    "label": "SomeLocalModule",
    "kind": 9,
    "tags": [],
    "detail": "module SomeLocalModule",
    "documentation": null
  }]

Complete src/Completion.res 275:15
posCursor:[275:15] posNoWhite:[275:14] Found expr:[274:11->278:1]
posCursor:[275:15] posNoWhite:[275:14] Found expr:[275:5->277:3]
posCursor:[275:15] posNoWhite:[275:14] Found expr:[275:13->275:15]
Pexp_ident _w:[275:13->275:15]
Completable: Cpath Value[_w]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[_w]
Path _w
[{
    "label": "_world",
    "kind": 12,
    "tags": [],
    "detail": "'a",
    "documentation": null
  }]

Complete src/Completion.res 281:22
posCursor:[281:22] posNoWhite:[281:21] Found type:[281:21->281:22]
Ptyp_constr s:[281:21->281:22]
Completable: Cpath Type[s]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[s]
Path s
[{
    "label": "someType",
    "kind": 22,
    "tags": [],
    "detail": "type someType",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype someType = {hello: string}\n```"}
  }, {
    "label": "someLocalVariant",
    "kind": 22,
    "tags": [],
    "detail": "type someLocalVariant",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype someLocalVariant = SomeLocalVariantItem\n```"}
  }]

Complete src/Completion.res 291:30
posCursor:[291:30] posNoWhite:[291:29] Found expr:[291:11->291:32]
Pexp_apply ...[291:11->291:28] ()
Completable: CnamedArg(Value[funRecord].someFun, "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[funRecord].someFun
ContextPath Value[funRecord]
Path funRecord
ContextPath Value[funRecord]->someFun
ContextPath Value[funRecord]
Path funRecord
CPPipe pathFromEnv: found:true
Path Completion.someFun
Path someFun
Found type for function (~name: string) => unit
[{
    "label": "name",
    "kind": 4,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 296:11
posCursor:[296:11] posNoWhite:[296:10] Found expr:[296:3->296:11]
Pexp_field [296:3->296:10] _:[299:0->296:11]
Completable: Cpath Value[retAA](Nolabel).""
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[retAA](Nolabel).""
ContextPath Value[retAA](Nolabel)
ContextPath Value[retAA]
Path retAA
ContextPath Value[retAA](Nolabel, Nolabel)->
ContextPath Value[retAA](Nolabel, Nolabel)
ContextPath Value[retAA]
Path retAA
CPPipe pathFromEnv: found:true
Path Completion.
Path 
[{
    "label": "x",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nx: int\n```\n\n```rescript\ntype aa = {x: int, name: string}\n```"}
  }, {
    "label": "name",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nname: string\n```\n\n```rescript\ntype aa = {x: int, name: string}\n```"}
  }]

Complete src/Completion.res 301:13
posCursor:[301:13] posNoWhite:[301:12] Found expr:[301:3->301:13]
Pexp_apply ...[301:3->301:11] ()
Completable: CnamedArg(Value[ff](~c), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff](~c)
ContextPath Value[ff]
Path ff
Found type for function (
  ~opt1: int=?,
  ~a: int,
  ~b: int,
  unit,
  ~opt2: int=?,
  unit,
) => int
[{
    "label": "opt1",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }, {
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "opt2",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }]

Complete src/Completion.res 304:15
posCursor:[304:15] posNoWhite:[304:14] Found expr:[304:3->304:15]
Pexp_apply ...[304:3->304:13] ()
Completable: CnamedArg(Value[ff](~c)(Nolabel), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff](~c)(Nolabel)
ContextPath Value[ff](~c)
ContextPath Value[ff]
Path ff
Found type for function (~a: int, ~b: int, ~opt2: int=?, unit) => int
[{
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "opt2",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }]

Complete src/Completion.res 307:17
posCursor:[307:17] posNoWhite:[307:16] Found expr:[307:3->307:17]
Pexp_apply ...[307:3->307:15] ()
Completable: CnamedArg(Value[ff](~c, Nolabel), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff](~c, Nolabel)
ContextPath Value[ff]
Path ff
Found type for function (~a: int, ~b: int, ~opt2: int=?, unit) => int
[{
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "opt2",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }]

Complete src/Completion.res 310:21
posCursor:[310:21] posNoWhite:[310:20] Found expr:[310:3->310:21]
Pexp_apply ...[310:3->310:19] ()
Completable: CnamedArg(Value[ff](~c, Nolabel, Nolabel), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff](~c, Nolabel, Nolabel)
ContextPath Value[ff]
Path ff
Found type for function (~a: int, ~b: int) => int
[{
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 313:23
posCursor:[313:23] posNoWhite:[313:22] Found expr:[313:3->313:23]
Pexp_apply ...[313:3->313:21] ()
Completable: CnamedArg(Value[ff](~c, Nolabel, ~b), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff](~c, Nolabel, ~b)
ContextPath Value[ff]
Path ff
Found type for function (~a: int, ~opt2: int=?, unit) => int
[{
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "opt2",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }]

Complete src/Completion.res 316:16
posCursor:[316:16] posNoWhite:[316:15] Found expr:[316:3->316:16]
Pexp_apply ...[316:3->316:14] ()
Completable: CnamedArg(Value[ff](~opt2), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff](~opt2)
ContextPath Value[ff]
Path ff
Found type for function (~opt1: int=?, ~a: int, ~b: int, unit, unit, ~c: int) => int
[{
    "label": "opt1",
    "kind": 4,
    "tags": [],
    "detail": "option<int>",
    "documentation": null
  }, {
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "c",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 326:17
posCursor:[326:17] posNoWhite:[326:16] Found expr:[326:3->326:17]
Pexp_apply ...[326:3->326:15] ()
Completable: CnamedArg(Value[withCallback], "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[withCallback]
Path withCallback
Found type for function (~b: int) => callback
[{
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 329:21
posCursor:[329:21] posNoWhite:[329:20] Found expr:[329:3->329:21]
Pexp_apply ...[329:3->329:19] ()
Completable: CnamedArg(Value[withCallback](~a), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[withCallback](~a)
ContextPath Value[withCallback]
Path withCallback
Found type for function (~b: int) => callback
[{
    "label": "b",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 332:21
posCursor:[332:21] posNoWhite:[332:20] Found expr:[332:3->332:21]
Pexp_apply ...[332:3->332:19] ()
Completable: CnamedArg(Value[withCallback](~b), "", [])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[withCallback](~b)
ContextPath Value[withCallback]
Path withCallback
Found type for function callback
[{
    "label": "a",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 339:26
posCursor:[339:26] posNoWhite:[339:25] Found expr:[336:2->349:23]
JSX <div:[336:3->336:6] onClick[337:4->337:11]=...[337:13->349:23]> _children:None
posCursor:[339:26] posNoWhite:[339:25] Found expr:[337:13->349:23]
posCursor:[339:26] posNoWhite:[339:25] Found expr:[337:13->341:6]
posCursor:[339:26] posNoWhite:[339:25] Found expr:[338:6->341:5]
posCursor:[339:26] posNoWhite:[339:25] Found expr:[339:16->341:5]
posCursor:[339:26] posNoWhite:[339:25] Found pattern:[339:20->341:5]
posCursor:[339:26] posNoWhite:[339:25] Found type:[339:23->341:5]
Ptyp_constr Res:[339:23->341:5]
posCursor:[339:26] posNoWhite:[339:25] Found pattern:[339:20->341:5]
posCursor:[339:26] posNoWhite:[339:25] Found type:[339:23->341:5]
Ptyp_constr Res:[339:23->341:5]
Completable: Cpath Type[Res]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[Res]
Path Res
[{
    "label": "Result",
    "kind": 9,
    "tags": [],
    "detail": "module Result",
    "documentation": null
  }, {
    "label": "RescriptTools",
    "kind": 9,
    "tags": [],
    "detail": "module RescriptTools",
    "documentation": null,
    "data": {
      "modulePath": "RescriptTools",
      "filePath": "src/Completion.res"
    }
  }, {
    "label": "RescriptTools_Docgen",
    "kind": 9,
    "tags": [],
    "detail": "module RescriptTools_Docgen",
    "documentation": null,
    "data": {
      "modulePath": "RescriptTools_Docgen",
      "filePath": "src/Completion.res"
    }
  }, {
    "label": "RescriptTools_ExtractCodeBlocks",
    "kind": 9,
    "tags": [],
    "detail": "module RescriptTools_ExtractCodeBlocks",
    "documentation": null,
    "data": {
      "modulePath": "RescriptTools_ExtractCodeBlocks",
      "filePath": "src/Completion.res"
    }
  }]

Complete src/Completion.res 346:57
posCursor:[346:57] posNoWhite:[346:56] Found expr:[346:53->349:23]
posCursor:[346:57] posNoWhite:[346:56] Found expr:[346:53->346:57]
Pexp_ident this:[346:53->346:57]
Completable: Cpath Value[this]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[this]
Path this
[{
    "label": "thisIsNotSaved",
    "kind": 12,
    "tags": [],
    "detail": "\\\"Type Not Known\"",
    "documentation": null
  }]

Hover src/Completion.res 349:14
{"contents": {"kind": "markdown", "value": "```rescript\nJsxDOM.domProps\n```\n\n---\n\n```\n \n```\n```rescript\ntype JsxDOM.domProps = {\n  key?: string,\n  children?: Jsx.element,\n  ref?: domRef,\n  allow?: string,\n  ariaCurrent?: [\n    | #date\n    | #\"false\"\n    | #location\n    | #page\n    | #step\n    | #time\n    | #\"true\"\n  ],\n  ariaDetails?: string,\n  ariaDisabled?: bool,\n  ariaHidden?: bool,\n  ariaInvalid?: [#\"false\" | #grammar | #spelling | #\"true\"],\n  ariaKeyshortcuts?: string,\n  ariaLabel?: string,\n  ariaRoledescription?: string,\n  ariaAutocomplete?: [#both | #inline | #list | #none],\n  ariaChecked?: [#\"false\" | #mixed | #\"true\"],\n  ariaExpanded?: bool,\n  ariaHaspopup?: [\n    | #dialog\n    | #\"false\"\n    | #grid\n    | #listbox\n    | #menu\n    | #tree\n    | #\"true\"\n  ],\n  ariaLevel?: int,\n  ariaModal?: bool,\n  ariaMultiline?: bool,\n  ariaMultiselectable?: bool,\n  ariaOrientation?: [#horizontal | #undefined | #vertical],\n  ariaPlaceholder?: string,\n  ariaPressed?: [#\"false\" | #mixed | #\"true\"],\n  ariaReadonly?: bool,\n  ariaRequired?: bool,\n  ariaSelected?: bool,\n  ariaSort?: string,\n  ariaValuemax?: float,\n  ariaValuemin?: float,\n  ariaValuenow?: float,\n  ariaValuetext?: string,\n  ariaAtomic?: bool,\n  ariaBusy?: bool,\n  ariaLive?: [#assertive | #off | #polite | #rude],\n  ariaRelevant?: string,\n  ariaDropeffect?: [\n    | #copy\n    | #execute\n    | #link\n    | #move\n    | #none\n    | #popup\n  ],\n  ariaGrabbed?: bool,\n  ariaActivedescendant?: string,\n  ariaColcount?: int,\n  ariaColindex?: int,\n  ariaColspan?: int,\n  ariaControls?: string,\n  ariaDescribedby?: string,\n  ariaErrormessage?: string,\n  ariaFlowto?: string,\n  ariaLabelledby?: string,\n  ariaOwns?: string,\n  ariaPosinset?: int,\n  ariaRowcount?: int,\n  ariaRowindex?: int,\n  ariaRowspan?: int,\n  ariaSetsize?: int,\n  defaultChecked?: bool,\n  defaultValue?: string,\n  accessKey?: string,\n  capture?: [#environment | #user],\n  className?: string,\n  contentEditable?: bool,\n  contextMenu?: string,\n  dataTestId?: string,\n  dir?: string,\n  draggable?: bool,\n  hidden?: bool,\n  id?: string,\n  inert?: bool,\n  lang?: string,\n  popover?: popover,\n  popoverTarget?: string,\n  popoverTargetAction?: popoverTargetAction,\n  role?: string,\n  style?: style,\n  spellCheck?: bool,\n  tabIndex?: int,\n  title?: string,\n  itemID?: string,\n  itemProp?: string,\n  itemRef?: string,\n  itemScope?: bool,\n  itemType?: string,\n  accept?: string,\n  acceptCharset?: string,\n  action?: string,\n  allowFullScreen?: bool,\n  alt?: string,\n  as_?: string,\n  async?: bool,\n  autoComplete?: string,\n  autoCapitalize?: string,\n  autoFocus?: bool,\n  autoPlay?: bool,\n  challenge?: string,\n  charSet?: string,\n  checked?: bool,\n  cite?: string,\n  crossOrigin?: string,\n  cols?: int,\n  colSpan?: int,\n  content?: string,\n  controls?: bool,\n  coords?: string,\n  data?: string,\n  dateTime?: string,\n  default?: bool,\n  defer?: bool,\n  disabled?: bool,\n  download?: string,\n  encType?: string,\n  form?: string,\n  formAction?: string,\n  formTarget?: string,\n  formMethod?: string,\n  frameBorder?: int,\n  headers?: string,\n  height?: string,\n  high?: int,\n  href?: string,\n  hrefLang?: string,\n  htmlFor?: string,\n  httpEquiv?: string,\n  icon?: string,\n  inputMode?: string,\n  integrity?: string,\n  keyType?: string,\n  kind?: string,\n  label?: string,\n  list?: string,\n  loading?: [#eager | #lazy],\n  loop?: bool,\n  low?: int,\n  manifest?: string,\n  max?: string,\n  maxLength?: int,\n  media?: string,\n  mediaGroup?: string,\n  method?: string,\n  min?: string,\n  minLength?: int,\n  multiple?: bool,\n  muted?: bool,\n  name?: string,\n  nonce?: string,\n  noValidate?: bool,\n  open_?: bool,\n  optimum?: int,\n  pattern?: string,\n  placeholder?: string,\n  playsInline?: bool,\n  poster?: string,\n  preload?: string,\n  radioGroup?: string,\n  readOnly?: bool,\n  rel?: string,\n  required?: bool,\n  reversed?: bool,\n  rows?: int,\n  rowSpan?: int,\n  sandbox?: string,\n  scope?: string,\n  scoped?: bool,\n  scrolling?: string,\n  selected?: bool,\n  shape?: string,\n  size?: int,\n  sizes?: string,\n  span?: int,\n  src?: string,\n  srcDoc?: string,\n  srcLang?: string,\n  srcSet?: string,\n  start?: int,\n  step?: float,\n  summary?: string,\n  target?: string,\n  type_?: string,\n  useMap?: string,\n  value?: string,\n  width?: string,\n  wrap?: string,\n  onCopy?: JsxEvent.Clipboard.t => unit,\n  onCut?: JsxEvent.Clipboard.t => unit,\n  onPaste?: JsxEvent.Clipboard.t => unit,\n  onCompositionEnd?: JsxEvent.Composition.t => unit,\n  onCompositionStart?: JsxEvent.Composition.t => unit,\n  onCompositionUpdate?: JsxEvent.Composition.t => unit,\n  onKeyDown?: JsxEvent.Keyboard.t => unit,\n  onKeyPress?: JsxEvent.Keyboard.t => unit,\n  onKeyUp?: JsxEvent.Keyboard.t => unit,\n  onFocus?: JsxEvent.Focus.t => unit,\n  onBlur?: JsxEvent.Focus.t => unit,\n  onBeforeInput?: JsxEvent.Form.t => unit,\n  onChange?: JsxEvent.Form.t => unit,\n  onInput?: JsxEvent.Form.t => unit,\n  onReset?: JsxEvent.Form.t => unit,\n  onSubmit?: JsxEvent.Form.t => unit,\n  onInvalid?: JsxEvent.Form.t => unit,\n  onClick?: JsxEvent.Mouse.t => unit,\n  onContextMenu?: JsxEvent.Mouse.t => unit,\n  onDoubleClick?: JsxEvent.Mouse.t => unit,\n  onDrag?: JsxEvent.Mouse.t => unit,\n  onDragEnd?: JsxEvent.Mouse.t => unit,\n  onDragEnter?: JsxEvent.Mouse.t => unit,\n  onDragExit?: JsxEvent.Mouse.t => unit,\n  onDragLeave?: JsxEvent.Mouse.t => unit,\n  onDragOver?: JsxEvent.Mouse.t => unit,\n  onDragStart?: JsxEvent.Mouse.t => unit,\n  onDrop?: JsxEvent.Mouse.t => unit,\n  onMouseDown?: JsxEvent.Mouse.t => unit,\n  onMouseEnter?: JsxEvent.Mouse.t => unit,\n  onMouseLeave?: JsxEvent.Mouse.t => unit,\n  onMouseMove?: JsxEvent.Mouse.t => unit,\n  onMouseOut?: JsxEvent.Mouse.t => unit,\n  onMouseOver?: JsxEvent.Mouse.t => unit,\n  onMouseUp?: JsxEvent.Mouse.t => unit,\n  onSelect?: JsxEvent.Selection.t => unit,\n  onTouchCancel?: JsxEvent.Touch.t => unit,\n  onTouchEnd?: JsxEvent.Touch.t => unit,\n  onTouchMove?: JsxEvent.Touch.t => unit,\n  onTouchStart?: JsxEvent.Touch.t => unit,\n  onPointerOver?: JsxEvent.Pointer.t => unit,\n  onPointerEnter?: JsxEvent.Pointer.t => unit,\n  onPointerDown?: JsxEvent.Pointer.t => unit,\n  onPointerMove?: JsxEvent.Pointer.t => unit,\n  onPointerUp?: JsxEvent.Pointer.t => unit,\n  onPointerCancel?: JsxEvent.Pointer.t => unit,\n  onPointerOut?: JsxEvent.Pointer.t => unit,\n  onPointerLeave?: JsxEvent.Pointer.t => unit,\n  onGotPointerCapture?: JsxEvent.Pointer.t => unit,\n  onLostPointerCapture?: JsxEvent.Pointer.t => unit,\n  onScroll?: JsxEvent.UI.t => unit,\n  onWheel?: JsxEvent.Wheel.t => unit,\n  onAbort?: JsxEvent.Media.t => unit,\n  onCanPlay?: JsxEvent.Media.t => unit,\n  onCanPlayThrough?: JsxEvent.Media.t => unit,\n  onDurationChange?: JsxEvent.Media.t => unit,\n  onEmptied?: JsxEvent.Media.t => unit,\n  onEncrypted?: JsxEvent.Media.t => unit,\n  onEnded?: JsxEvent.Media.t => unit,\n  onError?: JsxEvent.Media.t => unit,\n  onLoadedData?: JsxEvent.Media.t => unit,\n  onLoadedMetadata?: JsxEvent.Media.t => unit,\n  onLoadStart?: JsxEvent.Media.t => unit,\n  onPause?: JsxEvent.Media.t => unit,\n  onPlay?: JsxEvent.Media.t => unit,\n  onPlaying?: JsxEvent.Media.t => unit,\n  onProgress?: JsxEvent.Media.t => unit,\n  onRateChange?: JsxEvent.Media.t => unit,\n  onSeeked?: JsxEvent.Media.t => unit,\n  onSeeking?: JsxEvent.Media.t => unit,\n  onStalled?: JsxEvent.Media.t => unit,\n  onSuspend?: JsxEvent.Media.t => unit,\n  onTimeUpdate?: JsxEvent.Media.t => unit,\n  onVolumeChange?: JsxEvent.Media.t => unit,\n  onWaiting?: JsxEvent.Media.t => unit,\n  onLoad?: JsxEvent.Image.t => unit,\n  onAnimationStart?: JsxEvent.Animation.t => unit,\n  onAnimationEnd?: JsxEvent.Animation.t => unit,\n  onAnimationIteration?: JsxEvent.Animation.t => unit,\n  onTransitionEnd?: JsxEvent.Transition.t => unit,\n  accentHeight?: string,\n  accumulate?: string,\n  additive?: string,\n  alignmentBaseline?: string,\n  allowReorder?: string,\n  alphabetic?: string,\n  amplitude?: string,\n  arabicForm?: string,\n  ascent?: string,\n  attributeName?: string,\n  attributeType?: string,\n  autoReverse?: string,\n  azimuth?: string,\n  baseFrequency?: string,\n  baseProfile?: string,\n  baselineShift?: string,\n  bbox?: string,\n  begin?: string,\n  begin_?: string,\n  bias?: string,\n  by?: string,\n  calcMode?: string,\n  capHeight?: string,\n  clip?: string,\n  clipPath?: string,\n  clipPathUnits?: string,\n  clipRule?: string,\n  colorInterpolation?: string,\n  colorInterpolationFilters?: string,\n  colorProfile?: string,\n  colorRendering?: string,\n  contentScriptType?: string,\n  contentStyleType?: string,\n  cursor?: string,\n  cx?: string,\n  cy?: string,\n  d?: string,\n  decelerate?: string,\n  descent?: string,\n  diffuseConstant?: string,\n  direction?: string,\n  display?: string,\n  divisor?: string,\n  dominantBaseline?: string,\n  dur?: string,\n  dx?: string,\n  dy?: string,\n  edgeMode?: string,\n  elevation?: string,\n  enableBackground?: string,\n  end?: string,\n  end_?: string,\n  exponent?: string,\n  externalResourcesRequired?: string,\n  fill?: string,\n  fillOpacity?: string,\n  fillRule?: string,\n  filter?: string,\n  filterRes?: string,\n  filterUnits?: string,\n  floodColor?: string,\n  floodOpacity?: string,\n  focusable?: string,\n  fontFamily?: string,\n  fontSize?: string,\n  fontSizeAdjust?: string,\n  fontStretch?: string,\n  fontStyle?: string,\n  fontVariant?: string,\n  fontWeight?: string,\n  fomat?: string,\n  from?: string,\n  fx?: string,\n  fy?: string,\n  g1?: string,\n  g2?: string,\n  glyphName?: string,\n  glyphOrientationHorizontal?: string,\n  glyphOrientationVertical?: string,\n  glyphRef?: string,\n  gradientTransform?: string,\n  gradientUnits?: string,\n  hanging?: string,\n  horizAdvX?: string,\n  horizOriginX?: string,\n  ideographic?: string,\n  imageRendering?: string,\n  in_?: string,\n  in2?: string,\n  intercept?: string,\n  k?: string,\n  k1?: string,\n  k2?: string,\n  k3?: string,\n  k4?: string,\n  kernelMatrix?: string,\n  kernelUnitLength?: string,\n  kerning?: string,\n  keyPoints?: string,\n  keySplines?: string,\n  keyTimes?: string,\n  lengthAdjust?: string,\n  letterSpacing?: string,\n  lightingColor?: string,\n  limitingConeAngle?: string,\n  local?: string,\n  markerEnd?: string,\n  markerHeight?: string,\n  markerMid?: string,\n  markerStart?: string,\n  markerUnits?: string,\n  markerWidth?: string,\n  mask?: string,\n  maskContentUnits?: string,\n  maskUnits?: string,\n  mathematical?: string,\n  mode?: string,\n  numOctaves?: string,\n  offset?: string,\n  opacity?: string,\n  operator?: string,\n  order?: string,\n  orient?: string,\n  orientation?: string,\n  origin?: string,\n  overflow?: string,\n  overflowX?: string,\n  overflowY?: string,\n  overlinePosition?: string,\n  overlineThickness?: string,\n  paintOrder?: string,\n  panose1?: string,\n  pathLength?: string,\n  patternContentUnits?: string,\n  patternTransform?: string,\n  patternUnits?: string,\n  pointerEvents?: string,\n  points?: string,\n  pointsAtX?: string,\n  pointsAtY?: string,\n  pointsAtZ?: string,\n  preserveAlpha?: string,\n  preserveAspectRatio?: string,\n  primitiveUnits?: string,\n  r?: string,\n  radius?: string,\n  referrerPolicy?: string,\n  refX?: string,\n  refY?: string,\n  renderingIntent?: string,\n  repeatCount?: string,\n  repeatDur?: string,\n  requiredExtensions?: string,\n  requiredFeatures?: string,\n  restart?: string,\n  result?: string,\n  rotate?: string,\n  rx?: string,\n  ry?: string,\n  scale?: string,\n  seed?: string,\n  shapeRendering?: string,\n  slope?: string,\n  slot?: string,\n  spacing?: string,\n  specularConstant?: string,\n  specularExponent?: string,\n  speed?: string,\n  spreadMethod?: string,\n  startOffset?: string,\n  stdDeviation?: string,\n  stemh?: string,\n  stemv?: string,\n  stitchTiles?: string,\n  stopColor?: string,\n  stopOpacity?: string,\n  strikethroughPosition?: string,\n  strikethroughThickness?: string,\n  string?: string,\n  stroke?: string,\n  strokeDasharray?: string,\n  strokeDashoffset?: string,\n  strokeLinecap?: string,\n  strokeLinejoin?: string,\n  strokeMiterlimit?: string,\n  strokeOpacity?: string,\n  strokeWidth?: string,\n  surfaceScale?: string,\n  systemLanguage?: string,\n  tableValues?: string,\n  targetX?: string,\n  targetY?: string,\n  textAnchor?: string,\n  textDecoration?: string,\n  textLength?: string,\n  textRendering?: string,\n  to?: string,\n  to_?: string,\n  transform?: string,\n  u1?: string,\n  u2?: string,\n  underlinePosition?: string,\n  underlineThickness?: string,\n  unicode?: string,\n  unicodeBidi?: string,\n  unicodeRange?: string,\n  unitsPerEm?: string,\n  vAlphabetic?: string,\n  vHanging?: string,\n  vIdeographic?: string,\n  vMathematical?: string,\n  values?: string,\n  vectorEffect?: string,\n  version?: string,\n  vertAdvX?: string,\n  vertAdvY?: string,\n  vertOriginX?: string,\n  vertOriginY?: string,\n  viewBox?: string,\n  viewTarget?: string,\n  visibility?: string,\n  widths?: string,\n  wordSpacing?: string,\n  writingMode?: string,\n  x?: string,\n  x1?: string,\n  x2?: string,\n  xChannelSelector?: string,\n  xHeight?: string,\n  xlinkActuate?: string,\n  xlinkArcrole?: string,\n  xlinkHref?: string,\n  xlinkRole?: string,\n  xlinkShow?: string,\n  xlinkTitle?: string,\n  xlinkType?: string,\n  xmlns?: string,\n  xmlnsXlink?: string,\n  xmlBase?: string,\n  xmlLang?: string,\n  xmlSpace?: string,\n  y?: string,\n  y1?: string,\n  y2?: string,\n  yChannelSelector?: string,\n  z?: string,\n  zoomAndPan?: string,\n  about?: string,\n  datatype?: string,\n  inlist?: string,\n  prefix?: string,\n  property?: string,\n  resource?: string,\n  typeof?: string,\n  vocab?: string,\n  dangerouslySetInnerHTML?: {\"__html\": string},\n  suppressContentEditableWarning?: bool,\n}\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxDOM.res%22%2C20%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype Jsx.element\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22Jsx.res%22%2C7%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype domRef\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxDOM.res%22%2C7%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype popover =\n  | @as(\"auto\") Auto\n  | @as(\"manual\") Manual\n  | @as(\"hint\") Hint\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxDOM.res%22%2C11%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype popoverTargetAction =\n  | @as(\"toggle\") Toggle\n  | @as(\"show\") Show\n  | @as(\"hide\") Hide\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxDOM.res%22%2C15%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype style = JsxDOMStyle.t\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxDOM.res%22%2C6%2C0%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Clipboard.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C77%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Composition.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C87%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Keyboard.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C96%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Focus.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C118%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Form.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C128%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Mouse.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C135%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Selection.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C212%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Touch.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C219%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Pointer.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C164%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.UI.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C242%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Wheel.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C253%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Media.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C265%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Image.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C272%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Animation.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C279%2C2%5D)\n\n\n---\n\n```\n \n```\n```rescript\ntype JsxEvent.Transition.t = synthetic<tag>\n```\nGo to: [Type definition](command:rescript-vscode.go_to_location?%5B%22JsxEvent.res%22%2C290%2C2%5D)\n"}}

Hover src/Completion.res 352:17
Nothing at that position. Now trying to use completion.
posCursor:[352:17] posNoWhite:[352:16] Found expr:[352:11->352:35]
Pexp_send age[352:30->352:33] e:[352:11->352:28]
posCursor:[352:17] posNoWhite:[352:16] Found expr:[352:11->352:28]
Pexp_ident FAO.forAutoObject:[352:11->352:28]
Completable: Cpath Value[FAO, forAutoObject]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 1 Stdlib
{"contents": {"kind": "markdown", "value": "```rescript\n{\"age\": int, \"forAutoLabel\": FAR.forAutoRecord}\n```"}}

Hover src/Completion.res 355:17
Nothing at that position. Now trying to use completion.
posCursor:[355:17] posNoWhite:[355:16] Found expr:[355:11->355:22]
Pexp_apply ...[355:11->355:13] (~opt1355:15->355:19=...[355:20->355:21])
Completable: CnamedArg(Value[ff], opt1, [opt1])
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ff]
Path ff
Found type for function (
  ~opt1: int=?,
  ~a: int,
  ~b: int,
  unit,
  ~opt2: int=?,
  unit,
  ~c: int,
) => int
{"contents": {"kind": "markdown", "value": "```rescript\noption<int>\n```"}}

Complete src/Completion.res 358:23
posCursor:[358:23] posNoWhite:[358:22] Found expr:[0:-1->358:23]
posCursor:[358:23] posNoWhite:[358:22] Found expr:[358:12->358:23]
[]

Complete src/Completion.res 365:8
posCursor:[365:8] posNoWhite:[365:7] Found expr:[363:8->368:3]
posCursor:[365:8] posNoWhite:[365:7] Found pattern:[365:7->367:5]
posCursor:[365:8] posNoWhite:[365:7] Found pattern:[365:7->365:8]
Ppat_construct T:[365:7->365:8]
Completable: Cpattern Value[x]=T
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[x]
Path x
Completable: Cpath Value[T]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[T]
Path T
[{
    "label": "That",
    "kind": 4,
    "tags": [],
    "detail": "That",
    "documentation": {"kind": "markdown", "value": "```rescript\nThat\n```\n\n```rescript\ntype v = This | That\n```"}
  }, {
    "label": "This",
    "kind": 4,
    "tags": [],
    "detail": "This",
    "documentation": {"kind": "markdown", "value": "```rescript\nThis\n```\n\n```rescript\ntype v = This | That\n```"}
  }, {
    "label": "TypedArray",
    "kind": 9,
    "tags": [],
    "detail": "module TypedArray",
    "documentation": null
  }, {
    "label": "TimeoutId",
    "kind": 9,
    "tags": [],
    "detail": "module TimeoutId",
    "documentation": null
  }, {
    "label": "Type",
    "kind": 9,
    "tags": [],
    "detail": "module Type",
    "documentation": null
  }, {
    "label": "TableclothMap",
    "kind": 9,
    "tags": [],
    "detail": "module TableclothMap",
    "documentation": null,
    "data": {
      "modulePath": "TableclothMap",
      "filePath": "src/Completion.res"
    }
  }, {
    "label": "TypeArgCtx",
    "kind": 9,
    "tags": [],
    "detail": "module TypeArgCtx",
    "documentation": null,
    "data": {
      "modulePath": "TypeArgCtx",
      "filePath": "src/Completion.res"
    }
  }, {
    "label": "TypeAtPosCompletion",
    "kind": 9,
    "tags": [],
    "detail": "module TypeAtPosCompletion",
    "documentation": null,
    "data": {
      "modulePath": "TypeAtPosCompletion",
      "filePath": "src/Completion.res"
    }
  }, {
    "label": "TypeConstraint",
    "kind": 9,
    "tags": [],
    "detail": "module TypeConstraint",
    "documentation": null,
    "data": {
      "modulePath": "TypeConstraint",
      "filePath": "src/Completion.res"
    }
  }, {
    "label": "TypeDefinition",
    "kind": 9,
    "tags": [],
    "detail": "module TypeDefinition",
    "documentation": null,
    "data": {
      "modulePath": "TypeDefinition",
      "filePath": "src/Completion.res"
    }
  }]

Complete src/Completion.res 376:21
posCursor:[376:21] posNoWhite:[376:20] Found expr:[374:8->379:3]
posCursor:[376:21] posNoWhite:[376:20] Found pattern:[376:7->378:5]
posCursor:[376:21] posNoWhite:[376:20] Found pattern:[376:7->376:21]
Ppat_construct AndThatOther.T:[376:7->376:21]
Completable: Cpath Value[AndThatOther, T]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[AndThatOther, T]
Path AndThatOther.T
[{
    "label": "ThatOther",
    "kind": 4,
    "tags": [],
    "detail": "ThatOther",
    "documentation": {"kind": "markdown", "value": "```rescript\nThatOther\n```\n\n```rescript\ntype v = And | ThatOther\n```"}
  }]

Complete src/Completion.res 381:24
posCursor:[381:24] posNoWhite:[381:23] Found expr:[381:12->381:26]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[381:12->381:24], ...[381:24->381:25])
posCursor:[381:24] posNoWhite:[381:23] Found expr:[381:12->381:24]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[381:12->381:14], ...[381:16->381:24])
posCursor:[381:24] posNoWhite:[381:23] Found expr:[381:16->381:24]
Pexp_ident ForAuto.:[381:16->381:24]
Completable: Cpath Value[ForAuto, ""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ForAuto, ""]
Path ForAuto.
[{
    "label": "abc",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }, {
    "label": "abd",
    "kind": 12,
    "tags": [],
    "detail": "(t, int) => t",
    "documentation": null
  }]

Complete src/Completion.res 384:38
posCursor:[384:38] posNoWhite:[384:37] Found expr:[384:12->384:41]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[384:12->384:39], ...[384:39->384:40])
posCursor:[384:38] posNoWhite:[384:37] Found expr:[384:12->384:39]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[384:12->384:17], ...[384:19->384:39])
posCursor:[384:38] posNoWhite:[384:37] Found expr:[384:19->384:39]
Pexp_send [384:38->384:38] e:[384:19->384:36]
Completable: Cpath Value[FAO, forAutoObject][""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[FAO, forAutoObject][""]
ContextPath Value[FAO, forAutoObject]
Path FAO.forAutoObject
[{
    "label": "age",
    "kind": 4,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "forAutoLabel",
    "kind": 4,
    "tags": [],
    "detail": "FAR.forAutoRecord",
    "documentation": null
  }]

Complete src/Completion.res 387:24
posCursor:[387:24] posNoWhite:[387:23] Found expr:[387:11->387:26]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[387:11->387:24], ...[387:24->387:25])
posCursor:[387:24] posNoWhite:[387:23] Found expr:[387:11->387:24]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[387:11->387:12], ...[387:14->387:24])
posCursor:[387:24] posNoWhite:[387:23] Found expr:[387:14->387:24]
Pexp_field [387:14->387:23] _:[387:24->387:24]
Completable: Cpath Value[funRecord].""
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[funRecord].""
ContextPath Value[funRecord]
Path funRecord
ContextPath Value[funRecord]->
ContextPath Value[funRecord]
Path funRecord
CPPipe pathFromEnv: found:true
Path Completion.
Path 
[{
    "label": "someFun",
    "kind": 5,
    "tags": [],
    "detail": "(~name: string) => unit",
    "documentation": {"kind": "markdown", "value": "```rescript\nsomeFun: (~name: string) => unit\n```\n\n```rescript\ntype funRecord = {\n  someFun: (~name: string) => unit,\n  stuff: string,\n}\n```"}
  }, {
    "label": "stuff",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nstuff: string\n```\n\n```rescript\ntype funRecord = {\n  someFun: (~name: string) => unit,\n  stuff: string,\n}\n```"}
  }]

Complete src/Completion.res 391:12
posCursor:[391:12] posNoWhite:[391:11] Found expr:[390:8->394:1]
posCursor:[391:12] posNoWhite:[391:11] Found expr:[391:6->393:4]
posCursor:[391:12] posNoWhite:[391:11] Found expr:[391:6->391:12]
Completable: Cpath array->ma
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath array->ma
ContextPath array
Path Stdlib.Array.ma
Path ArrayUtils.ma
Path ma
[{
    "label": "Array.map",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, 'a => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`map(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray = array->Array.map(greeting => greeting ++ \" to you\")\n\nmappedArray == [\"Hello to you\", \"Hi to you\", \"Good bye to you\"]\n```\n"}
  }, {
    "label": "Array.mapWithIndex",
    "kind": 12,
    "tags": [],
    "detail": "(array<'a>, ('a, int) => 'b) => array<'b>",
    "documentation": {"kind": "markdown", "value": "\n`mapWithIndex(array, fn)` returns a new array with all elements from `array`, each element transformed using the provided `fn`.\n\nSee [`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) on MDN.\n\n## Examples\n\n```rescript\nlet array = [\"Hello\", \"Hi\", \"Good bye\"]\nlet mappedArray =\n  array->Array.mapWithIndex((greeting, index) => greeting ++ \" at position \" ++ Int.toString(index))\n\nmappedArray == [\"Hello at position 0\", \"Hi at position 1\", \"Good bye at position 2\"]\n```\n"}
  }]

Complete src/Completion.res 399:14
posCursor:[399:14] posNoWhite:[399:13] Found expr:[398:14->399:20]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[398:14->399:16], ...[399:16->399:19])
posCursor:[399:14] posNoWhite:[399:13] Found expr:[398:14->399:16]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[398:14->399:11], ...[399:13->399:16])
posCursor:[399:14] posNoWhite:[399:13] Found expr:[399:13->399:16]
Pexp_ident red:[399:13->399:16]
Completable: Cpath Value[red]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[red]
Path red
[{
    "label": "red",
    "kind": 12,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 404:25
posCursor:[404:25] posNoWhite:[404:24] Found expr:[402:14->404:31]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[402:14->404:27], ...[404:27->404:30])
posCursor:[404:25] posNoWhite:[404:24] Found expr:[402:14->404:27]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[402:14->404:22], ...[404:24->404:27])
posCursor:[404:25] posNoWhite:[404:24] Found expr:[404:24->404:27]
Pexp_ident red:[404:24->404:27]
Completable: Cpath Value[red]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[red]
Path red
[{
    "label": "red",
    "kind": 12,
    "tags": [],
    "detail": "string",
    "documentation": null
  }]

Complete src/Completion.res 407:22
posCursor:[407:22] posNoWhite:[407:21] Found expr:[407:11->485:0]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[407:11->425:17], ...[430:0->485:0])
posCursor:[407:22] posNoWhite:[407:21] Found expr:[407:11->425:17]
Pexp_apply ...__ghost__[0:-1->0:-1] (...[407:11->407:19], ...[407:21->425:17])
posCursor:[407:22] posNoWhite:[407:21] Found expr:[407:21->425:17]
posCursor:[407:22] posNoWhite:[407:21] Found expr:[407:21->407:22]
Pexp_ident r:[407:21->407:22]
Completable: Cpath Value[r]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[r]
Path r
[{
    "label": "red",
    "kind": 12,
    "tags": [],
    "detail": "string",
    "documentation": null
  }, {
    "label": "retAA",
    "kind": 12,
    "tags": [],
    "detail": "unit => aa",
    "documentation": null
  }, {
    "label": "r",
    "kind": 12,
    "tags": [],
    "detail": "rAlias",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype r = {x: int, y: string}\n```"}
  }]

Complete src/Completion.res 411:21
posCursor:[411:21] posNoWhite:[411:20] Found expr:[410:14->417:1]
posCursor:[411:21] posNoWhite:[411:20] Found expr:[411:5->416:22]
posCursor:[411:21] posNoWhite:[411:20] Found expr:[411:5->413:42]
posCursor:[411:21] posNoWhite:[411:20] Found expr:[411:5->413:5]
Pexp_ident SomeLocalModule.:[411:5->413:5]
Completable: Cpath Value[SomeLocalModule, ""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[SomeLocalModule, ""]
Path SomeLocalModule.
[{
    "label": "bb",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "aa",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 414:21
posCursor:[414:21] posNoWhite:[414:20] Found expr:[410:14->417:1]
posCursor:[414:21] posNoWhite:[414:20] Found expr:[413:2->416:22]
posCursor:[414:21] posNoWhite:[414:20] Found expr:[414:5->416:22]
Pexp_apply ...[414:5->416:13] (...[416:14->416:21])
posCursor:[414:21] posNoWhite:[414:20] Found expr:[414:5->416:13]
Pexp_ident SomeLocalModule.:[414:5->416:13]
Completable: Cpath Value[SomeLocalModule, ""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[SomeLocalModule, ""]
Path SomeLocalModule.
[{
    "label": "bb",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }, {
    "label": "aa",
    "kind": 12,
    "tags": [],
    "detail": "int",
    "documentation": null
  }]

Complete src/Completion.res 419:17
posCursor:[419:17] posNoWhite:[419:16] Found expr:[419:11->419:17]
Completable: Cpath int->t
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath int->t
ContextPath int
Path Stdlib.Int.t
Path t
[{
    "label": "Int.toStringWithRadix",
    "kind": 12,
    "tags": [1],
    "detail": "(int, ~radix: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toStringWithRadix(n, ~radix)` return a `string` representing the given value.\n`~radix` specifies the radix base to use for the formatted number.\nSee [`Number.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString)\non MDN.\n\n## Examples\n\n```rescript\nInt.toStringWithRadix(6, ~radix=2) // \"110\"\nInt.toStringWithRadix(373592855, ~radix=16) // \"16449317\"\nInt.toStringWithRadix(123456, ~radix=36) // \"2n9c\"\n```\n\n## Exceptions\n\n`RangeError`: if `radix` is less than 2 or greater than 36.\n"}
  }, {
    "label": "Int.toExponentialWithPrecision",
    "kind": 12,
    "tags": [1],
    "detail": "(int, ~digits: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toExponential(n, ~digits)` return a `string` representing the given value in\nexponential notation. `digits` specifies how many digits should appear after\nthe decimal point. See [`Number.toExponential`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential)\non MDN.\n\n## Examples\n\n```rescript\nInt.toExponentialWithPrecision(77, ~digits=2) // \"7.70e+1\"\nInt.toExponentialWithPrecision(5678, ~digits=2) // \"5.68e+3\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` less than 0 or greater than 10.\n"}
  }, {
    "label": "Int.toFixedWithPrecision",
    "kind": 12,
    "tags": [1],
    "detail": "(int, ~digits: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toFixedWithPrecision(n, ~digits)` return a `string` representing the given\nvalue using fixed-point notation. `digits` specifies how many digits should\nappear after the decimal point. See [`Number.toFixed`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)\non MDN.\n\n## Examples\n\n```rescript\nInt.toFixedWithPrecision(300, ~digits=4) // \"300.0000\"\nInt.toFixedWithPrecision(300, ~digits=1) // \"300.0\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is less than 0 or larger than 100.\n"}
  }, {
    "label": "Int.toPrecisionWithPrecision",
    "kind": 12,
    "tags": [1],
    "detail": "(int, ~digits: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toPrecisionWithPrecision(n, ~digits)` return a `string` representing the giver value with\nprecision. `digits` specifies the number of significant digits. See [`Number.toPrecision`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision) on MDN.\n\n## Examples\n\n```rescript\nInt.toPrecisionWithPrecision(100, ~digits=2) // \"1.0e+2\"\nInt.toPrecisionWithPrecision(1, ~digits=2) // \"1.0\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is not between 1 and 100 (inclusive).\n  Implementations are allowed to support larger and smaller values as well.\n  ECMA-262 only requires a precision of up to 21 significant digits.\n"}
  }, {
    "label": "Int.toPrecision",
    "kind": 12,
    "tags": [],
    "detail": "(int, ~digits: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toPrecision(n, ~digits=?)` return a `string` representing the giver value with\nprecision. `digits` specifies the number of significant digits. See [`Number.toPrecision`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision) on MDN.\n\n## Examples\n\n```rescript\nInt.toPrecision(100) // \"100\"\nInt.toPrecision(1) // \"1\"\nInt.toPrecision(100, ~digits=2) // \"1.0e+2\"\nInt.toPrecision(1, ~digits=2) // \"1.0\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is not between 1 and 100 (inclusive).\n  Implementations are allowed to support larger and smaller values as well.\n  ECMA-262 only requires a precision of up to 21 significant digits.\n"}
  }, {
    "label": "Int.toString",
    "kind": 12,
    "tags": [],
    "detail": "(int, ~radix: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toString(n, ~radix=?)` return a `string` representing the given value.\n`~radix` specifies the radix base to use for the formatted number.\nSee [`Number.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString)\non MDN.\n\n## Examples\n\n```rescript\nInt.toString(1000) // \"1000\"\nInt.toString(-1000) // \"-1000\"\nInt.toString(6, ~radix=2) // \"110\"\nInt.toString(373592855, ~radix=16) // \"16449317\"\nInt.toString(123456, ~radix=36) // \"2n9c\"\n```\n\n## Exceptions\n\n`RangeError`: if `radix` is less than 2 or greater than 36.\n"}
  }, {
    "label": "Int.toFloat",
    "kind": 12,
    "tags": [],
    "detail": "int => float",
    "documentation": {"kind": "markdown", "value": "\n`toFloat(n)` return a `float` representing the given value.\n\n## Examples\n\n```rescript\nInt.toFloat(100) == 100.0\nInt.toFloat(2) == 2.0\n```\n"}
  }, {
    "label": "Int.toLocaleString",
    "kind": 12,
    "tags": [],
    "detail": "int => string",
    "documentation": {"kind": "markdown", "value": "\n`toLocaleString(n)` return a `string` with language-sensitive representing the\ngiven value. See [`Number.toLocaleString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString) on MDN.\n\n## Examples\n\n```rescript\n// If the application uses English as the default language\nInt.toLocaleString(1000) // \"1,000\"\n\n// If the application uses Portuguese Brazil as the default language\nInt.toLocaleString(1000) // \"1.000\"\n```\n"}
  }, {
    "label": "Int.toExponential",
    "kind": 12,
    "tags": [],
    "detail": "(int, ~digits: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toExponential(n, ~digits=?)` return a `string` representing the given value in\nexponential notation. `digits` specifies how many digits should appear after\nthe decimal point. See [`Number.toExponential`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential)\n\n## Examples\n\n```rescript\nInt.toExponential(1000) // \"1e+3\"\nInt.toExponential(-1000) // \"-1e+3\"\nInt.toExponential(77, ~digits=2) // \"7.70e+1\"\nInt.toExponential(5678, ~digits=2) // \"5.68e+3\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` less than 0 or greater than 10.\n"}
  }, {
    "label": "Int.toFixed",
    "kind": 12,
    "tags": [],
    "detail": "(int, ~digits: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toFixed(n, ~digits=?)` return a `string` representing the given\nvalue using fixed-point notation. `digits` specifies how many digits should\nappear after the decimal point. See [`Number.toFixed`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)\non MDN.\n\n## Examples\n\n```rescript\nInt.toFixed(123456) // \"123456.00\"\nInt.toFixed(10) // \"10.00\"\nInt.toFixed(300, ~digits=4) // \"300.0000\"\nInt.toFixed(300, ~digits=1) // \"300.0\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is less than 0 or larger than 100.\n"}
  }]

Complete src/Completion.res 422:19
posCursor:[422:19] posNoWhite:[422:18] Found expr:[422:11->422:19]
Completable: Cpath float->t
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath float->t
ContextPath float
Path Stdlib.Float.t
Path t
[{
    "label": "Float.toStringWithRadix",
    "kind": 12,
    "tags": [1],
    "detail": "(float, ~radix: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toStringWithRadix(v, ~radix)` return a `string` representing the given value.\n`~radix` specifies the radix base to use for the formatted number.\nSee [`Number.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) on MDN.\n\n## Examples\n\n```rescript\nFloat.toStringWithRadix(6.0, ~radix=2) == \"110\"\nFloat.toStringWithRadix(3735928559.0, ~radix=16) == \"deadbeef\"\nFloat.toStringWithRadix(123456.0, ~radix=36) == \"2n9c\"\n```\n\n## Exceptions\n\n`RangeError`: if `radix` is less than 2 or greater than 36.\n"}
  }, {
    "label": "Float.toExponentialWithPrecision",
    "kind": 12,
    "tags": [1],
    "detail": "(float, ~digits: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toExponential(v, ~digits)` return a `string` representing the given value in\nexponential notation. `digits` specifies how many digits should appear after\nthe decimal point.\nSee [`Number.toExponential`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential) on MDN.\n\n## Examples\n\n```rescript\nFloat.toExponentialWithPrecision(77.0, ~digits=2) == \"7.70e+1\"\nFloat.toExponentialWithPrecision(5678.0, ~digits=2) == \"5.68e+3\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` less than 0 or greater than 10.\n"}
  }, {
    "label": "Float.toInt",
    "kind": 12,
    "tags": [],
    "detail": "float => int",
    "documentation": {"kind": "markdown", "value": "\n`toInt(v)` returns an int to given float `v`.\n\n## Examples\n\n```rescript\nFloat.toInt(2.0) == 2\nFloat.toInt(1.0) == 1\nFloat.toInt(1.1) == 1\nFloat.toInt(1.6) == 1\n```\n"}
  }, {
    "label": "Float.toFixedWithPrecision",
    "kind": 12,
    "tags": [1],
    "detail": "(float, ~digits: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toFixedWithPrecision(v, ~digits)` return a `string` representing the given\nvalue using fixed-point notation. `digits` specifies how many digits should\nappear after the decimal point.\nSee [`Number.toFixed`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) on MDN.\n\n## Examples\n\n```rescript\nFloat.toFixedWithPrecision(300.0, ~digits=4) == \"300.0000\"\nFloat.toFixedWithPrecision(300.0, ~digits=1) == \"300.0\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is less than 0 or larger than 100.\n"}
  }, {
    "label": "Float.toPrecisionWithPrecision",
    "kind": 12,
    "tags": [1],
    "detail": "(float, ~digits: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toPrecisionWithPrecision(v, ~digits)` return a `string` representing the giver value with\nprecision. `digits` specifies the number of significant digits.\nSee [`Number.toPrecision`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision) on MDN.\n\n## Examples\n\n```rescript\nFloat.toPrecisionWithPrecision(100.0, ~digits=2) == \"1.0e+2\"\nFloat.toPrecisionWithPrecision(1.0, ~digits=1) == \"1\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is not between 1 and 100 (inclusive).\n  Implementations are allowed to support larger and smaller values as well.\n  ECMA-262 only requires a precision of up to 21 significant digits.\n  \n"}
  }, {
    "label": "Float.toPrecision",
    "kind": 12,
    "tags": [],
    "detail": "(float, ~digits: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toPrecision(v, ~digits=?)` return a `string` representing the giver value with\nprecision. `digits` specifies the number of significant digits.\nSee [`Number.toPrecision`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision) on MDN.\n\n## Examples\n\n```rescript\nFloat.toPrecision(100.0) == \"100\"\nFloat.toPrecision(1.0) == \"1\"\nFloat.toPrecision(100.0, ~digits=2) == \"1.0e+2\"\nFloat.toPrecision(1.0, ~digits=1) == \"1\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is not between 1 and 100 (inclusive).\n  Implementations are allowed to support larger and smaller values as well.\n  ECMA-262 only requires a precision of up to 21 significant digits.\n"}
  }, {
    "label": "Float.toString",
    "kind": 12,
    "tags": [],
    "detail": "(float, ~radix: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toString(v)` return a `string` representing the given value.\nSee [`Number.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) on MDN.\n\n## Examples\n\n```rescript\nFloat.toString(1000.0) == \"1000\"\nFloat.toString(-1000.0) == \"-1000\"\n```\n"}
  }, {
    "label": "Float.toLocaleString",
    "kind": 12,
    "tags": [],
    "detail": "float => string",
    "documentation": {"kind": "markdown", "value": "\n`toLocaleString(v)` return a `string` with language-sensitive representing the\ngiven value.\nSee [`Number.toLocaleString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString) on MDN.\n\n## Examples\n\n```rescript\n// If the application uses English as the default language\nFloat.toLocaleString(1000.0) // \"1,000\"\n\n// If the application uses Portuguese Brazil as the default language\nFloat.toLocaleString(1000.0) // \"1.000\"\n```\n"}
  }, {
    "label": "Float.toExponential",
    "kind": 12,
    "tags": [],
    "detail": "(float, ~digits: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toExponential(v, ~digits=?)` return a `string` representing the given value in\nexponential notation. `digits` specifies how many digits should appear after\nthe decimal point.\nSee [`Number.toExponential`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential) on MDN.\n\n## Examples\n\n```rescript\nFloat.toExponential(1000.0) == \"1e+3\"\nFloat.toExponential(-1000.0) == \"-1e+3\"\nFloat.toExponential(77.0, ~digits=2) == \"7.70e+1\"\nFloat.toExponential(5678.0, ~digits=2) == \"5.68e+3\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` less than 0 or greater than 10.\n"}
  }, {
    "label": "Float.toFixed",
    "kind": 12,
    "tags": [],
    "detail": "(float, ~digits: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toFixed(v, ~digits=?)` return a `string` representing the given\nvalue using fixed-point notation. `digits` specifies how many digits should\nappear after the decimal point.\nSee [`Number.toFixed`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) on MDN.\n\n## Examples\n\n```rescript\nFloat.toFixed(123456.0) == \"123456\"\nFloat.toFixed(10.0) == \"10\"\nFloat.toFixed(300.0, ~digits=4) == \"300.0000\"\nFloat.toFixed(300.0, ~digits=1) == \"300.0\"\n```\n\n## Exceptions\n\n- `RangeError`: If `digits` is less than 0 or larger than 100.\n"}
  }]

Complete src/Completion.res 427:8
posCursor:[427:8] posNoWhite:[427:7] Found expr:[427:3->427:8]
Completable: Cpath Value[ok]->g
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[ok]->g
ContextPath Value[ok]
Path ok
Path Stdlib.Result.g
Path g
[{
    "label": "Result.getExn",
    "kind": 12,
    "tags": [1],
    "detail": "(result<'a, 'b>, ~message: string=?) => 'a",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n  `getExn(res, ~message=?)` returns `n` if `res` is `Ok(n)`, otherwise throws an exception with the message provided, or a generic message if no message was provided.\n\n  ```res example\n  Result.getExn(Result.Ok(42)) == 42\n  \n  switch Result.getExn(Error(\"Invalid data\")) {\n  | exception _ => true\n  | _ => false\n  } == true\n\n  switch Result.getExn(Error(\"Invalid data\"), ~message=\"was Error!\") {\n  | exception _ => true // Throws a JsError with the message \"was Error!\"\n  | _ => false\n  } == true\n  ```\n"}
  }, {
    "label": "Result.getOrThrow",
    "kind": 12,
    "tags": [],
    "detail": "(result<'a, 'b>, ~message: string=?) => 'a",
    "documentation": {"kind": "markdown", "value": "\n  `getOrThrow(res, ~message=?)` returns `n` if `res` is `Ok(n)`, otherwise throws an exception with the message provided, or a generic message if no message was provided.\n\n  ```res example\n  Result.getOrThrow(Result.Ok(42)) == 42\n  \n  switch Result.getOrThrow(Error(\"Invalid data\")) {\n  | exception _ => true\n  | _ => false\n  } == true\n\n  switch Result.getOrThrow(Error(\"Invalid data\"), ~message=\"was Error!\") {\n  | exception _ => true // Throws a JsError with the message \"was Error!\"\n  | _ => false\n  } == true\n  ```\n"}
  }, {
    "label": "Result.getOr",
    "kind": 12,
    "tags": [],
    "detail": "(result<'a, 'b>, 'a) => 'a",
    "documentation": {"kind": "markdown", "value": "\n`getOr(res, defaultValue)`: If `res` is `Ok(n)`, returns `n`, otherwise `default`\n\n## Examples\n\n```rescript\nResult.getOr(Ok(42), 0) == 42\n\nResult.getOr(Error(\"Invalid Data\"), 0) == 0\n```\n"}
  }, {
    "label": "Result.getWithDefault",
    "kind": 12,
    "tags": [1],
    "detail": "(result<'a, 'b>, 'a) => 'a",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n"}
  }]

Complete src/Completion.res 445:15
posCursor:[445:15] posNoWhite:[445:14] Found expr:[445:3->445:15]
Pexp_field [445:3->445:12] so:[445:13->445:15]
Completable: Cpath Value[rWithDepr].so
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[rWithDepr].so
ContextPath Value[rWithDepr]
Path rWithDepr
ContextPath Value[rWithDepr]->so
ContextPath Value[rWithDepr]
Path rWithDepr
CPPipe pathFromEnv: found:true
Path Completion.so
Path so
[{
    "label": "someInt",
    "kind": 5,
    "tags": [1],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n```rescript\nsomeInt: int\n```\n\n```rescript\ntype someRecordWithDeprecatedField = {\n  name: string,\n  someInt: int,\n  someFloat: float,\n}\n```"}
  }, {
    "label": "someFloat",
    "kind": 5,
    "tags": [1],
    "detail": "float",
    "documentation": {"kind": "markdown", "value": "Deprecated: Use 'someInt'.\n\n```rescript\nsomeFloat: float\n```\n\n```rescript\ntype someRecordWithDeprecatedField = {\n  name: string,\n  someInt: int,\n  someFloat: float,\n}\n```"}
  }]

Complete src/Completion.res 452:37
XXX Not found!
Completable: Cexpression Type[someVariantWithDeprecated]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[someVariantWithDeprecated]
Path someVariantWithDeprecated
[{
    "label": "DoNotUseMe",
    "kind": 4,
    "tags": [1],
    "detail": "DoNotUseMe",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n```rescript\nDoNotUseMe\n```\n\n```rescript\ntype someVariantWithDeprecated =\n  | DoNotUseMe\n  | UseMeInstead\n  | AndNotMe\n```"},
    "insertText": "DoNotUseMe",
    "insertTextFormat": 2
  }, {
    "label": "UseMeInstead",
    "kind": 4,
    "tags": [],
    "detail": "UseMeInstead",
    "documentation": {"kind": "markdown", "value": "```rescript\nUseMeInstead\n```\n\n```rescript\ntype someVariantWithDeprecated =\n  | DoNotUseMe\n  | UseMeInstead\n  | AndNotMe\n```"},
    "insertText": "UseMeInstead",
    "insertTextFormat": 2
  }, {
    "label": "AndNotMe",
    "kind": 4,
    "tags": [1],
    "detail": "AndNotMe",
    "documentation": {"kind": "markdown", "value": "Deprecated: Use 'UseMeInstead'\n\n```rescript\nAndNotMe\n```\n\n```rescript\ntype someVariantWithDeprecated =\n  | DoNotUseMe\n  | UseMeInstead\n  | AndNotMe\n```"},
    "insertText": "AndNotMe",
    "insertTextFormat": 2
  }]

Complete src/Completion.res 457:28
posCursor:[457:28] posNoWhite:[457:27] Found expr:[457:11->457:28]
Completable: Cpath Value[uncurried](Nolabel)->toS
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Value[uncurried](Nolabel)->toS
ContextPath Value[uncurried](Nolabel)
ContextPath Value[uncurried]
Path uncurried
Path Stdlib.Int.toS
Path toS
[{
    "label": "Int.toStringWithRadix",
    "kind": 12,
    "tags": [1],
    "detail": "(int, ~radix: int) => string",
    "documentation": {"kind": "markdown", "value": "Deprecated: \n\n\n`toStringWithRadix(n, ~radix)` return a `string` representing the given value.\n`~radix` specifies the radix base to use for the formatted number.\nSee [`Number.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString)\non MDN.\n\n## Examples\n\n```rescript\nInt.toStringWithRadix(6, ~radix=2) // \"110\"\nInt.toStringWithRadix(373592855, ~radix=16) // \"16449317\"\nInt.toStringWithRadix(123456, ~radix=36) // \"2n9c\"\n```\n\n## Exceptions\n\n`RangeError`: if `radix` is less than 2 or greater than 36.\n"}
  }, {
    "label": "Int.toString",
    "kind": 12,
    "tags": [],
    "detail": "(int, ~radix: int=?) => string",
    "documentation": {"kind": "markdown", "value": "\n`toString(n, ~radix=?)` return a `string` representing the given value.\n`~radix` specifies the radix base to use for the formatted number.\nSee [`Number.toString`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString)\non MDN.\n\n## Examples\n\n```rescript\nInt.toString(1000) // \"1000\"\nInt.toString(-1000) // \"-1000\"\nInt.toString(6, ~radix=2) // \"110\"\nInt.toString(373592855, ~radix=16) // \"16449317\"\nInt.toString(123456, ~radix=36) // \"2n9c\"\n```\n\n## Exceptions\n\n`RangeError`: if `radix` is less than 2 or greater than 36.\n"}
  }]

Complete src/Completion.res 462:30
XXX Not found!
Completable: Cexpression Type[withUncurried]->recordField(fn)
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[withUncurried]
Path withUncurried
[{
    "label": "v => v",
    "kind": 12,
    "tags": [],
    "detail": "int => unit",
    "documentation": null,
    "sortText": "A",
    "insertText": "${1:v} => ${0:v}",
    "insertTextFormat": 2
  }]

Complete src/Completion.res 465:26
posCursor:[465:26] posNoWhite:[465:25] Found expr:[465:22->465:26]
Pexp_ident FAR.:[465:22->465:26]
Completable: Cpath ValueOrField[FAR, ""]
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath ValueOrField[FAR, ""]
Path FAR.
[{
    "label": "forAutoRecord",
    "kind": 12,
    "tags": [],
    "detail": "forAutoRecord",
    "documentation": {"kind": "markdown", "value": "```rescript\ntype forAutoRecord = {\n  forAuto: ForAuto.t,\n  something: option<int>,\n}\n```"}
  }, {
    "label": "forAuto",
    "kind": 5,
    "tags": [],
    "detail": "ForAuto.t",
    "documentation": {"kind": "markdown", "value": "```rescript\nforAuto: ForAuto.t\n```\n\n```rescript\ntype forAutoRecord = {\n  forAuto: ForAuto.t,\n  something: option<int>,\n}\n```"}
  }, {
    "label": "something",
    "kind": 5,
    "tags": [],
    "detail": "option<int>",
    "documentation": {"kind": "markdown", "value": "```rescript\nsomething: option<int>\n```\n\n```rescript\ntype forAutoRecord = {\n  forAuto: ForAuto.t,\n  something: option<int>,\n}\n```"}
  }]

Complete src/Completion.res 471:45
XXX Not found!
Completable: Cexpression Type[someVariantWithRecord]->variantPayload::HasRecord($0), recordBody
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[someVariantWithRecord]
Path someVariantWithRecord
[{
    "label": "field1",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield1: string\n```\n\n```rescript\ntype someRecord = {field1: string, field2: int}\n```"}
  }, {
    "label": "field2",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield2: int\n```\n\n```rescript\ntype someRecord = {field1: string, field2: int}\n```"}
  }]

Complete src/Completion.res 474:48
XXX Not found!
Completable: Cexpression Type[someVariantWithRecord]=fie->variantPayload::HasRecord($0), recordBody
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[someVariantWithRecord]
Path someVariantWithRecord
[{
    "label": "field1",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield1: string\n```\n\n```rescript\ntype someRecord = {field1: string, field2: int}\n```"}
  }, {
    "label": "field2",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield2: int\n```\n\n```rescript\ntype someRecord = {field1: string, field2: int}\n```"}
  }]

Complete src/Completion.res 479:57
XXX Not found!
Completable: Cexpression Type[someVariantWithInlineRecord]->variantPayload::HasInlineRecord($0), recordBody
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[someVariantWithInlineRecord]
Path someVariantWithInlineRecord
[{
    "label": "field1",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield1: string\n```\n\n```rescript\n{field1: string, field2: int}\n```"}
  }, {
    "label": "field2",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield2: int\n```\n\n```rescript\n{field1: string, field2: int}\n```"}
  }]

Complete src/Completion.res 482:60
XXX Not found!
Completable: Cexpression Type[someVariantWithInlineRecord]=fie->variantPayload::HasInlineRecord($0), recordBody
Raw opens: 2 Shadow.B.place holder ... Shadow.A.place holder
Package opens Stdlib.place holder Pervasives.JsxModules.place holder
Resolved opens 3 Stdlib Completion Completion
ContextPath Type[someVariantWithInlineRecord]
Path someVariantWithInlineRecord
[{
    "label": "field1",
    "kind": 5,
    "tags": [],
    "detail": "string",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield1: string\n```\n\n```rescript\n{field1: string, field2: int}\n```"}
  }, {
    "label": "field2",
    "kind": 5,
    "tags": [],
    "detail": "int",
    "documentation": {"kind": "markdown", "value": "```rescript\nfield2: int\n```\n\n```rescript\n{field1: string, field2: int}\n```"}
  }]

