# mod.ts
/** doc1 */
export let a = (0);
/** doc2 */
export const b = a++;
/** doc3 */
export const c = <string> 1;
/** doc4 */
export const d = 1 as string;
/** doc5 */
export const e = await 1;
/** doc6 */
export const f = true ? "a" : 1;
/** doc7 */
export const g = (true ? "a" : null)!;
/** doc8 */
export const h = null!;
/** doc9 */
export const i = 1 == "bar";
/** doc10 */
export const j = 1 >> 1;
/** doc11 */
export const k = (value: string) => 1;

# diagnostics
error[missing-return-type]: exported function is missing an explicit return type annotation
  --> /mod.ts:22:14
   | 
22 | export const k = (value: string) => 1;
   |              ^

# output.txt
Defined in file:///mod.ts:21:14

function k(value: string)
  doc11

Defined in file:///mod.ts:1:12

let a: number
  doc1

Defined in file:///mod.ts:3:14

const b: number
  doc2

Defined in file:///mod.ts:5:14

const c: string
  doc3

Defined in file:///mod.ts:7:14

const d: string
  doc4

Defined in file:///mod.ts:9:14

const e: 1
  doc5

Defined in file:///mod.ts:11:14

const f: "a" | 1
  doc6

Defined in file:///mod.ts:13:14

const g: "a"
  doc7

Defined in file:///mod.ts:15:14

const h: never
  doc8

Defined in file:///mod.ts:17:14

const i: boolean
  doc9

Defined in file:///mod.ts:19:14

const j: number
  doc10


# output.json
{
  "symbols": [
    {
      "name": "a",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 1,
            "col": 11,
            "byteIndex": 23
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc1"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "number",
              "kind": "keyword",
              "value": "number"
            },
            "kind": "let"
          }
        }
      ]
    },
    {
      "name": "b",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 3,
            "col": 13,
            "byteIndex": 57
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc2"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "number",
              "kind": "keyword",
              "value": "number"
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "c",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 5,
            "col": 13,
            "byteIndex": 91
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc3"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "string",
              "kind": "keyword",
              "value": "string"
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "d",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 7,
            "col": 13,
            "byteIndex": 132
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc4"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "string",
              "kind": "keyword",
              "value": "string"
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "e",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 9,
            "col": 13,
            "byteIndex": 174
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc5"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "1",
              "kind": "literal",
              "value": {
                "kind": "number",
                "number": 1.0
              }
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "f",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 11,
            "col": 13,
            "byteIndex": 212
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc6"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "kind": "union",
              "value": [
                {
                  "repr": "a",
                  "kind": "literal",
                  "value": {
                    "kind": "string",
                    "string": "a"
                  }
                },
                {
                  "repr": "1",
                  "kind": "literal",
                  "value": {
                    "kind": "number",
                    "number": 1.0
                  }
                }
              ]
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "g",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 13,
            "col": 13,
            "byteIndex": 257
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc7"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "a",
              "kind": "literal",
              "value": {
                "kind": "string",
                "string": "a"
              }
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "h",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 15,
            "col": 13,
            "byteIndex": 308
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc8"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "never",
              "kind": "keyword",
              "value": "never"
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "i",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 17,
            "col": 13,
            "byteIndex": 344
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc9"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "boolean",
              "kind": "keyword",
              "value": "boolean"
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "j",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 19,
            "col": 13,
            "byteIndex": 386
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc10"
          },
          "kind": "variable",
          "def": {
            "tsType": {
              "repr": "number",
              "kind": "keyword",
              "value": "number"
            },
            "kind": "const"
          }
        }
      ]
    },
    {
      "name": "k",
      "declarations": [
        {
          "location": {
            "filename": "file:///mod.ts",
            "line": 21,
            "col": 13,
            "byteIndex": 424
          },
          "declarationKind": "export",
          "jsDoc": {
            "doc": "doc11"
          },
          "kind": "function",
          "def": {
            "params": [
              {
                "kind": "identifier",
                "name": "value",
                "optional": false,
                "tsType": {
                  "repr": "string",
                  "kind": "keyword",
                  "value": "string"
                }
              }
            ],
            "hasBody": true
          }
        }
      ]
    }
  ]
}
