# mod.ts
/** Class doc */
export class A {
  /** @private */
  p = false;

  /**
   * Some leading documentation here.
   *
   * @param {string} name some comment
   * @param {string} a    some other comment that
   *                      spans two lines
   * @param {number} b    a number
   */
  constructor(name, a, b) {}

  /**
   * @returns {Promise<void>}
   */
  a() {}
}

# diagnostics
error[missing-jsdoc]: exported symbol is missing JSDoc documentation
 --> /mod.ts:4:3
  | 
4 |   p = false;
  |   ^


error[missing-jsdoc]: exported symbol is missing JSDoc documentation
  --> /mod.ts:19:3
   | 
19 |   a() {}
   |   ^

# output.txt
Defined in file:///mod.ts:2:1

class A
  Class doc

  constructor(name, a, b)
    Some leading documentation here.

    @param {string} name
        some comment

    @param {string} a
        some other comment that
        spans two lines

    @param {number} b
        a number

  p: boolean

    @private
  a(): void

    @return {Promise<void>}


# output.json
[
  {
    "name": "A",
    "isDefault": false,
    "location": {
      "filename": "file:///mod.ts",
      "line": 2,
      "col": 0,
      "byteIndex": 17
    },
    "declarationKind": "export",
    "jsDoc": {
      "doc": "Class doc"
    },
    "kind": "class",
    "classDef": {
      "isAbstract": false,
      "constructors": [
        {
          "jsDoc": {
            "doc": "Some leading documentation here.\n",
            "tags": [
              {
                "kind": "param",
                "name": "name",
                "type": "string",
                "doc": "some comment"
              },
              {
                "kind": "param",
                "name": "a",
                "type": "string",
                "doc": "some other comment that\nspans two lines"
              },
              {
                "kind": "param",
                "name": "b",
                "type": "number",
                "doc": "a number"
              }
            ]
          },
          "accessibility": null,
          "hasBody": true,
          "name": "constructor",
          "params": [
            {
              "kind": "identifier",
              "name": "name",
              "optional": false,
              "tsType": null
            },
            {
              "kind": "identifier",
              "name": "a",
              "optional": false,
              "tsType": null
            },
            {
              "kind": "identifier",
              "name": "b",
              "optional": false,
              "tsType": null
            }
          ],
          "location": {
            "filename": "file:///mod.ts",
            "line": 14,
            "col": 2,
            "byteIndex": 289
          }
        }
      ],
      "properties": [
        {
          "jsDoc": {
            "tags": [
              {
                "kind": "private"
              }
            ]
          },
          "tsType": {
            "repr": "boolean",
            "kind": "keyword",
            "keyword": "boolean"
          },
          "readonly": false,
          "accessibility": null,
          "optional": false,
          "isAbstract": false,
          "isStatic": false,
          "name": "p",
          "location": {
            "filename": "file:///mod.ts",
            "line": 4,
            "col": 2,
            "byteIndex": 54
          }
        }
      ],
      "indexSignatures": [],
      "methods": [
        {
          "jsDoc": {
            "tags": [
              {
                "kind": "return",
                "type": "Promise<void>"
              }
            ]
          },
          "accessibility": null,
          "optional": false,
          "isAbstract": false,
          "isStatic": false,
          "name": "a",
          "kind": "method",
          "functionDef": {
            "params": [],
            "returnType": {
              "repr": "void",
              "kind": "keyword",
              "keyword": "void"
            },
            "hasBody": true,
            "isAsync": false,
            "isGenerator": false,
            "typeParams": []
          },
          "location": {
            "filename": "file:///mod.ts",
            "line": 19,
            "col": 2,
            "byteIndex": 361
          }
        }
      ],
      "extends": null,
      "implements": [],
      "typeParams": [],
      "superTypeParams": []
    }
  }
]
