--^ sync
def foo1(bar : Nat) : Bool := true
                     --^ textDocument/documentHighlight

#eval foo1 2
#eval foo1 3
     --^ textDocument/documentHighlight

def foo2 : Nat :=
  let bar := 2
  bar + 3
 --^ textDocument/documentHighlight

structure Baz where
  bar : Nat
  bar' : Nat
 --^ textDocument/documentHighlight

def foo3 (baz : Baz) : Nat :=
  baz.bar
     --^ textDocument/documentHighlight

def foo4 (bar : Nat) : Baz :=
  { bar := bar, bar' := bar }
   --^ textDocument/documentHighlight
          --^ textDocument/documentHighlight

example : Nat := Id.run do
  let mut x := 1
  x := 2
  x
--^ textDocument/documentHighlight

example : Nat := Id.run do
  let mut y : Nat := 0
  for x in [0] do
    y := y + x
  if true then
    y := y + 1
  else
    return y
  pure y
     --^ textDocument/documentHighlight

example : Nat := Id.run do
  let mut y := 0
  if true then
    y := 1
  return y  -- TODO: definition should be first `y`
       --^ textDocument/documentHighlight

example (x : Option Nat) : Nat :=
  match x with
  | some x => 1
       --^ textDocument/documentHighlight
  | none   => 0

/-!
A helper term info node accidentally led to this highlight including `by` (and "go to definition"
jumping to `rfl` in full projects).
-/
example : True := by
  simp
--^ textDocument/documentHighlight
