{
  "classes": [
    {
      "constants": [],
      "types": [
        {
          "lua_type": "type Position = {\n    line: number,\n    column: number,\n}",
          "name": "Position",
          "tags": [],
          "source": {
            "path": "",
            "line": 37
          },
          "fields": [
            {
              "lua_type": "line: number",
              "name": "line",
              "desc": ""
            },
            {
              "lua_type": "column: number",
              "name": "column",
              "desc": ""
            }
          ],
          "desc": "A position in source code (1-based line and column)."
        },
        {
          "lua_type": "type Location = {\n    start: Position,\n    end: Position,\n}",
          "name": "Location",
          "tags": [],
          "source": {
            "path": "",
            "line": 43
          },
          "fields": [
            {
              "lua_type": "start: Position",
              "name": "start",
              "desc": ""
            },
            {
              "lua_type": "end: Position",
              "name": "end",
              "desc": ""
            }
          ],
          "desc": "A span in source code, from a start [[Position]] to an end [[Position]]."
        },
        {
          "lua_type": "type ParseErrorInfo = {\n    message: string,\n    location: Location,\n}",
          "name": "ParseErrorInfo",
          "tags": [],
          "source": {
            "path": "",
            "line": 49
          },
          "fields": [
            {
              "lua_type": "message: string",
              "name": "message",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": "A parse error with its location in the source."
        },
        {
          "lua_type": "type CommentInfo = {\n    type: \"Comment\" | \"BlockComment\" | \"BrokenComment\",\n    location: Location,\n}",
          "name": "CommentInfo",
          "tags": [],
          "source": {
            "path": "",
            "line": 56
          },
          "fields": [
            {
              "lua_type": "type: \"Comment\" | \"BlockComment\" | \"BrokenComment\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": "A comment descriptor. Only present when `captureComments` is enabled\nin the [[ParseOptions]]."
        },
        {
          "lua_type": "type ParseOptions = {\n    captureComments: boolean?,\n}",
          "name": "ParseOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 62
          },
          "fields": [
            {
              "lua_type": "captureComments: boolean?",
              "name": "captureComments",
              "desc": ""
            }
          ],
          "desc": "Options for [[parse]]."
        },
        {
          "lua_type": "type TableAccess = \"Read\"\n    | \"Write\"\n    | \"ReadWrite\"",
          "name": "TableAccess",
          "tags": [],
          "source": {
            "path": "",
            "line": 66
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type AttrType = \"Checked\"\n    | \"Native\"\n    | \"Deprecated\"\n    | \"Unknown\"",
          "name": "AttrType",
          "tags": [],
          "source": {
            "path": "",
            "line": 68
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type AstAttr = {\n    type: AttrType,\n    location: Location,\n    name: string?,\n    args: { AstExpr },\n    deprecatedInfo: { deprecated: boolean, use: string?, reason: string? }?,\n}",
          "name": "AstAttr",
          "tags": [],
          "source": {
            "path": "",
            "line": 70
          },
          "fields": [
            {
              "lua_type": "type: AttrType",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "name: string?",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "args: { AstExpr }",
              "name": "args",
              "desc": ""
            },
            {
              "lua_type": "deprecatedInfo: { deprecated: boolean, use: string?, reason: string? }?",
              "name": "deprecatedInfo",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstGenericType = {\n    name: string,\n    location: Location,\n    default: AstType?,\n}",
          "name": "AstGenericType",
          "tags": [],
          "source": {
            "path": "",
            "line": 82
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "default: AstType?",
              "name": "default",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstGenericTypePack = {\n    name: string,\n    location: Location,\n    default: AstTypePack?,\n}",
          "name": "AstGenericTypePack",
          "tags": [],
          "source": {
            "path": "",
            "line": 88
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "default: AstTypePack?",
              "name": "default",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstTypeOrPack = {\n    kind: \"Type\" | \"TypePack\" | \"Unknown\",\n    value: AstType | AstTypePack?,\n}",
          "name": "AstTypeOrPack",
          "tags": [],
          "source": {
            "path": "",
            "line": 94
          },
          "fields": [
            {
              "lua_type": "kind: \"Type\" | \"TypePack\" | \"Unknown\"",
              "name": "kind",
              "desc": ""
            },
            {
              "lua_type": "value: AstType | AstTypePack?",
              "name": "value",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstTypeName = {\n    name: string,\n    location: Location,\n}",
          "name": "AstTypeName",
          "tags": [],
          "source": {
            "path": "",
            "line": 99
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstTypeList = {\n    types: { AstType },\n    tail: AstTypePack?,\n}",
          "name": "AstTypeList",
          "tags": [],
          "source": {
            "path": "",
            "line": 104
          },
          "fields": [
            {
              "lua_type": "types: { AstType }",
              "name": "types",
              "desc": ""
            },
            {
              "lua_type": "tail: AstTypePack?",
              "name": "tail",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeReference = {\n    type: \"TypeReference\",\n    location: Location,\n    hasParameterList: boolean,\n    name: string,\n    nameLocation: Location,\n    prefix: string?,\n    prefixLocation: Location?,\n    parameters: { AstTypeOrPack }?,\n}",
          "name": "TypeReference",
          "tags": [],
          "source": {
            "path": "",
            "line": 113
          },
          "fields": [
            {
              "lua_type": "type: \"TypeReference\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasParameterList: boolean",
              "name": "hasParameterList",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "nameLocation: Location",
              "name": "nameLocation",
              "desc": ""
            },
            {
              "lua_type": "prefix: string?",
              "name": "prefix",
              "desc": ""
            },
            {
              "lua_type": "prefixLocation: Location?",
              "name": "prefixLocation",
              "desc": ""
            },
            {
              "lua_type": "parameters: { AstTypeOrPack }?",
              "name": "parameters",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeTableProp = {\n    name: string,\n    type: AstType,\n    location: Location,\n    access: TableAccess,\n    accessLocation: Location?,\n}",
          "name": "TypeTableProp",
          "tags": [],
          "source": {
            "path": "",
            "line": 124
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "type: AstType",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "access: TableAccess",
              "name": "access",
              "desc": ""
            },
            {
              "lua_type": "accessLocation: Location?",
              "name": "accessLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeTableIndexer = {\n    indexType: AstType,\n    resultType: AstType,\n    location: Location,\n    access: TableAccess,\n    accessLocation: Location?,\n}",
          "name": "TypeTableIndexer",
          "tags": [],
          "source": {
            "path": "",
            "line": 132
          },
          "fields": [
            {
              "lua_type": "indexType: AstType",
              "name": "indexType",
              "desc": ""
            },
            {
              "lua_type": "resultType: AstType",
              "name": "resultType",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "access: TableAccess",
              "name": "access",
              "desc": ""
            },
            {
              "lua_type": "accessLocation: Location?",
              "name": "accessLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeTable = {\n    type: \"TypeTable\",\n    location: Location,\n    props: { TypeTableProp },\n    indexer: TypeTableIndexer?,\n}",
          "name": "TypeTable",
          "tags": [],
          "source": {
            "path": "",
            "line": 140
          },
          "fields": [
            {
              "lua_type": "type: \"TypeTable\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "props: { TypeTableProp }",
              "name": "props",
              "desc": ""
            },
            {
              "lua_type": "indexer: TypeTableIndexer?",
              "name": "indexer",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeFunction = {\n    type: \"TypeFunction\",\n    location: Location,\n    attributes: { AstAttr }?,\n    generics: { AstGenericType }?,\n    genericPacks: { AstGenericTypePack }?,\n    argTypes: AstTypeList,\n    argNames: { AstTypeName? },\n    returnTypes: AstTypePack?,\n}",
          "name": "TypeFunction",
          "tags": [],
          "source": {
            "path": "",
            "line": 147
          },
          "fields": [
            {
              "lua_type": "type: \"TypeFunction\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "attributes: { AstAttr }?",
              "name": "attributes",
              "desc": ""
            },
            {
              "lua_type": "generics: { AstGenericType }?",
              "name": "generics",
              "desc": ""
            },
            {
              "lua_type": "genericPacks: { AstGenericTypePack }?",
              "name": "genericPacks",
              "desc": ""
            },
            {
              "lua_type": "argTypes: AstTypeList",
              "name": "argTypes",
              "desc": ""
            },
            {
              "lua_type": "argNames: { AstTypeName? }",
              "name": "argNames",
              "desc": ""
            },
            {
              "lua_type": "returnTypes: AstTypePack?",
              "name": "returnTypes",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeTypeof = {\n    type: \"TypeTypeof\",\n    location: Location,\n    expr: AstExpr,\n}",
          "name": "TypeTypeof",
          "tags": [],
          "source": {
            "path": "",
            "line": 158
          },
          "fields": [
            {
              "lua_type": "type: \"TypeTypeof\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeOptional = {\n    type: \"TypeOptional\",\n    location: Location,\n}",
          "name": "TypeOptional",
          "tags": [],
          "source": {
            "path": "",
            "line": 164
          },
          "fields": [
            {
              "lua_type": "type: \"TypeOptional\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeUnion = {\n    type: \"TypeUnion\",\n    location: Location,\n    types: { AstType },\n}",
          "name": "TypeUnion",
          "tags": [],
          "source": {
            "path": "",
            "line": 169
          },
          "fields": [
            {
              "lua_type": "type: \"TypeUnion\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "types: { AstType }",
              "name": "types",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeIntersection = {\n    type: \"TypeIntersection\",\n    location: Location,\n    types: { AstType },\n}",
          "name": "TypeIntersection",
          "tags": [],
          "source": {
            "path": "",
            "line": 175
          },
          "fields": [
            {
              "lua_type": "type: \"TypeIntersection\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "types: { AstType }",
              "name": "types",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeSingletonBool = {\n    type: \"TypeSingletonBool\",\n    location: Location,\n    value: boolean,\n}",
          "name": "TypeSingletonBool",
          "tags": [],
          "source": {
            "path": "",
            "line": 181
          },
          "fields": [
            {
              "lua_type": "type: \"TypeSingletonBool\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "value: boolean",
              "name": "value",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeSingletonString = {\n    type: \"TypeSingletonString\",\n    location: Location,\n    value: string,\n}",
          "name": "TypeSingletonString",
          "tags": [],
          "source": {
            "path": "",
            "line": 187
          },
          "fields": [
            {
              "lua_type": "type: \"TypeSingletonString\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "value: string",
              "name": "value",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeGroup = {\n    type: \"TypeGroup\",\n    location: Location,\n    inner: AstType,\n}",
          "name": "TypeGroup",
          "tags": [],
          "source": {
            "path": "",
            "line": 193
          },
          "fields": [
            {
              "lua_type": "type: \"TypeGroup\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "inner: AstType",
              "name": "inner",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeError = {\n    type: \"TypeError\",\n    location: Location,\n    types: { AstType },\n    isMissing: boolean,\n    messageIndex: number,\n}",
          "name": "TypeError",
          "tags": [],
          "source": {
            "path": "",
            "line": 199
          },
          "fields": [
            {
              "lua_type": "type: \"TypeError\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "types: { AstType }",
              "name": "types",
              "desc": ""
            },
            {
              "lua_type": "isMissing: boolean",
              "name": "isMissing",
              "desc": ""
            },
            {
              "lua_type": "messageIndex: number",
              "name": "messageIndex",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeUnknown = {\n    type: \"TypeUnknown\",\n    location: Location,\n}",
          "name": "TypeUnknown",
          "tags": [],
          "source": {
            "path": "",
            "line": 207
          },
          "fields": [
            {
              "lua_type": "type: \"TypeUnknown\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstType = TypeReference\n    | TypeTable\n    | TypeFunction\n    | TypeTypeof\n    | TypeOptional\n    | TypeUnion\n    | TypeIntersection\n    | TypeSingletonBool\n    | TypeSingletonString\n    | TypeGroup\n    | TypeError\n    | TypeUnknown",
          "name": "AstType",
          "tags": [],
          "source": {
            "path": "",
            "line": 213
          },
          "fields": [],
          "desc": "Union of all type annotation nodes."
        },
        {
          "lua_type": "type TypePackExplicit = {\n    type: \"TypePackExplicit\",\n    location: Location,\n    types: { AstType },\n    tail: AstTypePack?,\n}",
          "name": "TypePackExplicit",
          "tags": [],
          "source": {
            "path": "",
            "line": 231
          },
          "fields": [
            {
              "lua_type": "type: \"TypePackExplicit\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "types: { AstType }",
              "name": "types",
              "desc": ""
            },
            {
              "lua_type": "tail: AstTypePack?",
              "name": "tail",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypePackVariadic = {\n    type: \"TypePackVariadic\",\n    location: Location,\n    variadicType: AstType,\n}",
          "name": "TypePackVariadic",
          "tags": [],
          "source": {
            "path": "",
            "line": 238
          },
          "fields": [
            {
              "lua_type": "type: \"TypePackVariadic\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "variadicType: AstType",
              "name": "variadicType",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypePackGeneric = {\n    type: \"TypePackGeneric\",\n    location: Location,\n    name: string,\n}",
          "name": "TypePackGeneric",
          "tags": [],
          "source": {
            "path": "",
            "line": 244
          },
          "fields": [
            {
              "lua_type": "type: \"TypePackGeneric\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypePackUnknown = {\n    type: \"TypePackUnknown\",\n    location: Location,\n}",
          "name": "TypePackUnknown",
          "tags": [],
          "source": {
            "path": "",
            "line": 250
          },
          "fields": [
            {
              "lua_type": "type: \"TypePackUnknown\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstTypePack = TypePackExplicit\n    | TypePackVariadic\n    | TypePackGeneric\n    | TypePackUnknown",
          "name": "AstTypePack",
          "tags": [],
          "source": {
            "path": "",
            "line": 256
          },
          "fields": [],
          "desc": "Union of all type-pack nodes (used for return types and variadic packs)."
        },
        {
          "lua_type": "type AstLocal = {\n    name: string,\n    location: Location,\n    annotation: AstType?,\n    functionDepth: number,\n    loopDepth: number,\n    isConst: boolean,\n    shadow: { name: string, location: Location }?,\n}",
          "name": "AstLocal",
          "tags": [],
          "source": {
            "path": "",
            "line": 262
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "annotation: AstType?",
              "name": "annotation",
              "desc": ""
            },
            {
              "lua_type": "functionDepth: number",
              "name": "functionDepth",
              "desc": ""
            },
            {
              "lua_type": "loopDepth: number",
              "name": "loopDepth",
              "desc": ""
            },
            {
              "lua_type": "isConst: boolean",
              "name": "isConst",
              "desc": ""
            },
            {
              "lua_type": "shadow: { name: string, location: Location }?",
              "name": "shadow",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprGroup = {\n    type: \"ExprGroup\",\n    location: Location,\n    expr: AstExpr,\n}",
          "name": "ExprGroup",
          "tags": [],
          "source": {
            "path": "",
            "line": 279
          },
          "fields": [
            {
              "lua_type": "type: \"ExprGroup\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprConstantNil = {\n    type: \"ExprConstantNil\",\n    location: Location,\n}",
          "name": "ExprConstantNil",
          "tags": [],
          "source": {
            "path": "",
            "line": 285
          },
          "fields": [
            {
              "lua_type": "type: \"ExprConstantNil\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprConstantBool = {\n    type: \"ExprConstantBool\",\n    location: Location,\n    value: boolean,\n}",
          "name": "ExprConstantBool",
          "tags": [],
          "source": {
            "path": "",
            "line": 290
          },
          "fields": [
            {
              "lua_type": "type: \"ExprConstantBool\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "value: boolean",
              "name": "value",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprConstantNumber = {\n    type: \"ExprConstantNumber\",\n    location: Location,\n    value: number,\n    parseResult: \"Ok\" | \"Imprecise\" | \"Malformed\" | \"BinOverflow\" | \"HexOverflow\" | \"Unknown\",\n}",
          "name": "ExprConstantNumber",
          "tags": [],
          "source": {
            "path": "",
            "line": 296
          },
          "fields": [
            {
              "lua_type": "type: \"ExprConstantNumber\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "value: number",
              "name": "value",
              "desc": ""
            },
            {
              "lua_type": "parseResult: \"Ok\" | \"Imprecise\" | \"Malformed\" | \"BinOverflow\" | \"HexOverflow\" | \"Unknown\"",
              "name": "parseResult",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprConstantString = {\n    type: \"ExprConstantString\",\n    location: Location,\n    value: string,\n    quoteStyle: \"QuotedSimple\" | \"QuotedSingle\" | \"QuotedRaw\" | \"Unquoted\" | \"Unknown\",\n    isQuoted: boolean,\n}",
          "name": "ExprConstantString",
          "tags": [],
          "source": {
            "path": "",
            "line": 303
          },
          "fields": [
            {
              "lua_type": "type: \"ExprConstantString\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "value: string",
              "name": "value",
              "desc": ""
            },
            {
              "lua_type": "quoteStyle: \"QuotedSimple\" | \"QuotedSingle\" | \"QuotedRaw\" | \"Unquoted\" | \"Unknown\"",
              "name": "quoteStyle",
              "desc": ""
            },
            {
              "lua_type": "isQuoted: boolean",
              "name": "isQuoted",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprLocal = {\n    type: \"ExprLocal\",\n    location: Location,\n    local: AstLocal,\n    upvalue: boolean,\n}",
          "name": "ExprLocal",
          "tags": [],
          "source": {
            "path": "",
            "line": 311
          },
          "fields": [
            {
              "lua_type": "type: \"ExprLocal\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "local: AstLocal",
              "name": "local",
              "desc": ""
            },
            {
              "lua_type": "upvalue: boolean",
              "name": "upvalue",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprGlobal = {\n    type: \"ExprGlobal\",\n    location: Location,\n    name: string,\n}",
          "name": "ExprGlobal",
          "tags": [],
          "source": {
            "path": "",
            "line": 318
          },
          "fields": [
            {
              "lua_type": "type: \"ExprGlobal\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprVarargs = {\n    type: \"ExprVarargs\",\n    location: Location,\n}",
          "name": "ExprVarargs",
          "tags": [],
          "source": {
            "path": "",
            "line": 324
          },
          "fields": [
            {
              "lua_type": "type: \"ExprVarargs\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprCall = {\n    type: \"ExprCall\",\n    location: Location,\n    func: AstExpr,\n    typeArguments: { AstTypeOrPack }?,\n    args: { AstExpr },\n    self: boolean,\n    argLocation: Location,\n}",
          "name": "ExprCall",
          "tags": [],
          "source": {
            "path": "",
            "line": 329
          },
          "fields": [
            {
              "lua_type": "type: \"ExprCall\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "func: AstExpr",
              "name": "func",
              "desc": ""
            },
            {
              "lua_type": "typeArguments: { AstTypeOrPack }?",
              "name": "typeArguments",
              "desc": ""
            },
            {
              "lua_type": "args: { AstExpr }",
              "name": "args",
              "desc": ""
            },
            {
              "lua_type": "self: boolean",
              "name": "self",
              "desc": ""
            },
            {
              "lua_type": "argLocation: Location",
              "name": "argLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprIndexName = {\n    type: \"ExprIndexName\",\n    location: Location,\n    expr: AstExpr,\n    index: string,\n    indexLocation: Location,\n    opPosition: Position,\n    op: string,\n}",
          "name": "ExprIndexName",
          "tags": [],
          "source": {
            "path": "",
            "line": 339
          },
          "fields": [
            {
              "lua_type": "type: \"ExprIndexName\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            },
            {
              "lua_type": "index: string",
              "name": "index",
              "desc": ""
            },
            {
              "lua_type": "indexLocation: Location",
              "name": "indexLocation",
              "desc": ""
            },
            {
              "lua_type": "opPosition: Position",
              "name": "opPosition",
              "desc": ""
            },
            {
              "lua_type": "op: string",
              "name": "op",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprIndexExpr = {\n    type: \"ExprIndexExpr\",\n    location: Location,\n    expr: AstExpr,\n    index: AstExpr,\n}",
          "name": "ExprIndexExpr",
          "tags": [],
          "source": {
            "path": "",
            "line": 349
          },
          "fields": [
            {
              "lua_type": "type: \"ExprIndexExpr\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            },
            {
              "lua_type": "index: AstExpr",
              "name": "index",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprFunction = {\n    type: \"ExprFunction\",\n    location: Location,\n    attributes: { AstAttr }?,\n    debugname: string?,\n    generics: { AstGenericType }?,\n    genericPacks: { AstGenericTypePack }?,\n    args: { AstLocal },\n    vararg: boolean,\n    varargLocation: Location,\n    varargAnnotation: AstTypePack?,\n    returnAnnotation: AstTypePack?,\n    self: AstLocal?,\n    argLocation: Location?,\n    functionDepth: number,\n    body: Block,\n}",
          "name": "ExprFunction",
          "tags": [],
          "source": {
            "path": "",
            "line": 356
          },
          "fields": [
            {
              "lua_type": "type: \"ExprFunction\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "attributes: { AstAttr }?",
              "name": "attributes",
              "desc": ""
            },
            {
              "lua_type": "debugname: string?",
              "name": "debugname",
              "desc": ""
            },
            {
              "lua_type": "generics: { AstGenericType }?",
              "name": "generics",
              "desc": ""
            },
            {
              "lua_type": "genericPacks: { AstGenericTypePack }?",
              "name": "genericPacks",
              "desc": ""
            },
            {
              "lua_type": "args: { AstLocal }",
              "name": "args",
              "desc": ""
            },
            {
              "lua_type": "vararg: boolean",
              "name": "vararg",
              "desc": ""
            },
            {
              "lua_type": "varargLocation: Location",
              "name": "varargLocation",
              "desc": ""
            },
            {
              "lua_type": "varargAnnotation: AstTypePack?",
              "name": "varargAnnotation",
              "desc": ""
            },
            {
              "lua_type": "returnAnnotation: AstTypePack?",
              "name": "returnAnnotation",
              "desc": ""
            },
            {
              "lua_type": "self: AstLocal?",
              "name": "self",
              "desc": ""
            },
            {
              "lua_type": "argLocation: Location?",
              "name": "argLocation",
              "desc": ""
            },
            {
              "lua_type": "functionDepth: number",
              "name": "functionDepth",
              "desc": ""
            },
            {
              "lua_type": "body: Block",
              "name": "body",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprTableItem = {\n    kind: \"List\" | \"Record\" | \"General\",\n    key: AstExpr?,\n    value: AstExpr,\n}",
          "name": "ExprTableItem",
          "tags": [],
          "source": {
            "path": "",
            "line": 374
          },
          "fields": [
            {
              "lua_type": "kind: \"List\" | \"Record\" | \"General\"",
              "name": "kind",
              "desc": ""
            },
            {
              "lua_type": "key: AstExpr?",
              "name": "key",
              "desc": ""
            },
            {
              "lua_type": "value: AstExpr",
              "name": "value",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprTable = {\n    type: \"ExprTable\",\n    location: Location,\n    items: { ExprTableItem },\n}",
          "name": "ExprTable",
          "tags": [],
          "source": {
            "path": "",
            "line": 380
          },
          "fields": [
            {
              "lua_type": "type: \"ExprTable\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "items: { ExprTableItem }",
              "name": "items",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprUnary = {\n    type: \"ExprUnary\",\n    location: Location,\n    op: string,\n    expr: AstExpr,\n}",
          "name": "ExprUnary",
          "tags": [],
          "source": {
            "path": "",
            "line": 386
          },
          "fields": [
            {
              "lua_type": "type: \"ExprUnary\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "op: string",
              "name": "op",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprBinary = {\n    type: \"ExprBinary\",\n    location: Location,\n    op: string,\n    left: AstExpr,\n    right: AstExpr,\n}",
          "name": "ExprBinary",
          "tags": [],
          "source": {
            "path": "",
            "line": 393
          },
          "fields": [
            {
              "lua_type": "type: \"ExprBinary\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "op: string",
              "name": "op",
              "desc": ""
            },
            {
              "lua_type": "left: AstExpr",
              "name": "left",
              "desc": ""
            },
            {
              "lua_type": "right: AstExpr",
              "name": "right",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprTypeAssertion = {\n    type: \"ExprTypeAssertion\",\n    location: Location,\n    expr: AstExpr,\n    annotation: AstType,\n}",
          "name": "ExprTypeAssertion",
          "tags": [],
          "source": {
            "path": "",
            "line": 401
          },
          "fields": [
            {
              "lua_type": "type: \"ExprTypeAssertion\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            },
            {
              "lua_type": "annotation: AstType",
              "name": "annotation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprIfElse = {\n    type: \"ExprIfElse\",\n    location: Location,\n    condition: AstExpr,\n    hasThen: boolean,\n    trueExpr: AstExpr,\n    hasElse: boolean,\n    falseExpr: AstExpr,\n}",
          "name": "ExprIfElse",
          "tags": [],
          "source": {
            "path": "",
            "line": 408
          },
          "fields": [
            {
              "lua_type": "type: \"ExprIfElse\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "condition: AstExpr",
              "name": "condition",
              "desc": ""
            },
            {
              "lua_type": "hasThen: boolean",
              "name": "hasThen",
              "desc": ""
            },
            {
              "lua_type": "trueExpr: AstExpr",
              "name": "trueExpr",
              "desc": ""
            },
            {
              "lua_type": "hasElse: boolean",
              "name": "hasElse",
              "desc": ""
            },
            {
              "lua_type": "falseExpr: AstExpr",
              "name": "falseExpr",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprInterpString = {\n    type: \"ExprInterpString\",\n    location: Location,\n    strings: { string },\n    expressions: { AstExpr },\n}",
          "name": "ExprInterpString",
          "tags": [],
          "source": {
            "path": "",
            "line": 418
          },
          "fields": [
            {
              "lua_type": "type: \"ExprInterpString\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "strings: { string }",
              "name": "strings",
              "desc": ""
            },
            {
              "lua_type": "expressions: { AstExpr }",
              "name": "expressions",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprInstantiate = {\n    type: \"ExprInstantiate\",\n    location: Location,\n    expr: AstExpr,\n    typeArguments: { AstTypeOrPack },\n}",
          "name": "ExprInstantiate",
          "tags": [],
          "source": {
            "path": "",
            "line": 425
          },
          "fields": [
            {
              "lua_type": "type: \"ExprInstantiate\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            },
            {
              "lua_type": "typeArguments: { AstTypeOrPack }",
              "name": "typeArguments",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprError = {\n    type: \"ExprError\",\n    location: Location,\n    expressions: { AstExpr },\n    messageIndex: number,\n}",
          "name": "ExprError",
          "tags": [],
          "source": {
            "path": "",
            "line": 432
          },
          "fields": [
            {
              "lua_type": "type: \"ExprError\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "expressions: { AstExpr }",
              "name": "expressions",
              "desc": ""
            },
            {
              "lua_type": "messageIndex: number",
              "name": "messageIndex",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type ExprUnknown = {\n    type: \"ExprUnknown\",\n    location: Location,\n}",
          "name": "ExprUnknown",
          "tags": [],
          "source": {
            "path": "",
            "line": 439
          },
          "fields": [
            {
              "lua_type": "type: \"ExprUnknown\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstExpr = ExprGroup\n    | ExprConstantNil\n    | ExprConstantBool\n    | ExprConstantNumber\n    | ExprConstantString\n    | ExprLocal\n    | ExprGlobal\n    | ExprVarargs\n    | ExprCall\n    | ExprIndexName\n    | ExprIndexExpr\n    | ExprFunction\n    | ExprTable\n    | ExprUnary\n    | ExprBinary\n    | ExprTypeAssertion\n    | ExprIfElse\n    | ExprInterpString\n    | ExprInstantiate\n    | ExprError\n    | ExprUnknown",
          "name": "AstExpr",
          "tags": [],
          "source": {
            "path": "",
            "line": 445
          },
          "fields": [],
          "desc": "Union of all expression nodes."
        },
        {
          "lua_type": "type Block = {\n    type: \"Block\",\n    location: Location,\n    hasSemicolon: boolean,\n    body: { AstStat },\n    hasEnd: boolean,\n}",
          "name": "Block",
          "tags": [],
          "source": {
            "path": "",
            "line": 472
          },
          "fields": [
            {
              "lua_type": "type: \"Block\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "body: { AstStat }",
              "name": "body",
              "desc": ""
            },
            {
              "lua_type": "hasEnd: boolean",
              "name": "hasEnd",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatIf = {\n    type: \"StatIf\",\n    location: Location,\n    hasSemicolon: boolean,\n    condition: AstExpr,\n    thenBody: Block,\n    elseBody: (Block | StatIf)?,\n    thenLocation: Location?,\n    elseLocation: Location?,\n}",
          "name": "StatIf",
          "tags": [],
          "source": {
            "path": "",
            "line": 480
          },
          "fields": [
            {
              "lua_type": "type: \"StatIf\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "condition: AstExpr",
              "name": "condition",
              "desc": ""
            },
            {
              "lua_type": "thenBody: Block",
              "name": "thenBody",
              "desc": ""
            },
            {
              "lua_type": "elseBody: (Block | StatIf)?",
              "name": "elseBody",
              "desc": ""
            },
            {
              "lua_type": "thenLocation: Location?",
              "name": "thenLocation",
              "desc": ""
            },
            {
              "lua_type": "elseLocation: Location?",
              "name": "elseLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatWhile = {\n    type: \"StatWhile\",\n    location: Location,\n    hasSemicolon: boolean,\n    condition: AstExpr,\n    body: Block,\n    hasDo: boolean,\n    doLocation: Location,\n}",
          "name": "StatWhile",
          "tags": [],
          "source": {
            "path": "",
            "line": 491
          },
          "fields": [
            {
              "lua_type": "type: \"StatWhile\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "condition: AstExpr",
              "name": "condition",
              "desc": ""
            },
            {
              "lua_type": "body: Block",
              "name": "body",
              "desc": ""
            },
            {
              "lua_type": "hasDo: boolean",
              "name": "hasDo",
              "desc": ""
            },
            {
              "lua_type": "doLocation: Location",
              "name": "doLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatRepeat = {\n    type: \"StatRepeat\",\n    location: Location,\n    hasSemicolon: boolean,\n    condition: AstExpr,\n    body: Block,\n    hasUntil: boolean,\n}",
          "name": "StatRepeat",
          "tags": [],
          "source": {
            "path": "",
            "line": 501
          },
          "fields": [
            {
              "lua_type": "type: \"StatRepeat\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "condition: AstExpr",
              "name": "condition",
              "desc": ""
            },
            {
              "lua_type": "body: Block",
              "name": "body",
              "desc": ""
            },
            {
              "lua_type": "hasUntil: boolean",
              "name": "hasUntil",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatBreak = {\n    type: \"StatBreak\",\n    location: Location,\n    hasSemicolon: boolean,\n}",
          "name": "StatBreak",
          "tags": [],
          "source": {
            "path": "",
            "line": 510
          },
          "fields": [
            {
              "lua_type": "type: \"StatBreak\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatContinue = {\n    type: \"StatContinue\",\n    location: Location,\n    hasSemicolon: boolean,\n}",
          "name": "StatContinue",
          "tags": [],
          "source": {
            "path": "",
            "line": 516
          },
          "fields": [
            {
              "lua_type": "type: \"StatContinue\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatReturn = {\n    type: \"StatReturn\",\n    location: Location,\n    hasSemicolon: boolean,\n    list: { AstExpr },\n}",
          "name": "StatReturn",
          "tags": [],
          "source": {
            "path": "",
            "line": 522
          },
          "fields": [
            {
              "lua_type": "type: \"StatReturn\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "list: { AstExpr }",
              "name": "list",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatExpr = {\n    type: \"StatExpr\",\n    location: Location,\n    hasSemicolon: boolean,\n    expr: AstExpr,\n}",
          "name": "StatExpr",
          "tags": [],
          "source": {
            "path": "",
            "line": 529
          },
          "fields": [
            {
              "lua_type": "type: \"StatExpr\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "expr: AstExpr",
              "name": "expr",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatLocal = {\n    type: \"StatLocal\",\n    location: Location,\n    hasSemicolon: boolean,\n    vars: { AstLocal },\n    values: { AstExpr },\n    equalsSignLocation: Location?,\n}",
          "name": "StatLocal",
          "tags": [],
          "source": {
            "path": "",
            "line": 536
          },
          "fields": [
            {
              "lua_type": "type: \"StatLocal\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "vars: { AstLocal }",
              "name": "vars",
              "desc": ""
            },
            {
              "lua_type": "values: { AstExpr }",
              "name": "values",
              "desc": ""
            },
            {
              "lua_type": "equalsSignLocation: Location?",
              "name": "equalsSignLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatFor = {\n    type: \"StatFor\",\n    location: Location,\n    hasSemicolon: boolean,\n    var: AstLocal,\n    from: AstExpr,\n    to: AstExpr,\n    step: AstExpr?,\n    body: Block,\n    hasDo: boolean,\n    doLocation: Location,\n}",
          "name": "StatFor",
          "tags": [],
          "source": {
            "path": "",
            "line": 545
          },
          "fields": [
            {
              "lua_type": "type: \"StatFor\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "var: AstLocal",
              "name": "var",
              "desc": ""
            },
            {
              "lua_type": "from: AstExpr",
              "name": "from",
              "desc": ""
            },
            {
              "lua_type": "to: AstExpr",
              "name": "to",
              "desc": ""
            },
            {
              "lua_type": "step: AstExpr?",
              "name": "step",
              "desc": ""
            },
            {
              "lua_type": "body: Block",
              "name": "body",
              "desc": ""
            },
            {
              "lua_type": "hasDo: boolean",
              "name": "hasDo",
              "desc": ""
            },
            {
              "lua_type": "doLocation: Location",
              "name": "doLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatForIn = {\n    type: \"StatForIn\",\n    location: Location,\n    hasSemicolon: boolean,\n    vars: { AstLocal },\n    values: { AstExpr },\n    body: Block,\n    hasIn: boolean,\n    inLocation: Location,\n    hasDo: boolean,\n    doLocation: Location,\n}",
          "name": "StatForIn",
          "tags": [],
          "source": {
            "path": "",
            "line": 558
          },
          "fields": [
            {
              "lua_type": "type: \"StatForIn\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "vars: { AstLocal }",
              "name": "vars",
              "desc": ""
            },
            {
              "lua_type": "values: { AstExpr }",
              "name": "values",
              "desc": ""
            },
            {
              "lua_type": "body: Block",
              "name": "body",
              "desc": ""
            },
            {
              "lua_type": "hasIn: boolean",
              "name": "hasIn",
              "desc": ""
            },
            {
              "lua_type": "inLocation: Location",
              "name": "inLocation",
              "desc": ""
            },
            {
              "lua_type": "hasDo: boolean",
              "name": "hasDo",
              "desc": ""
            },
            {
              "lua_type": "doLocation: Location",
              "name": "doLocation",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatAssign = {\n    type: \"StatAssign\",\n    location: Location,\n    hasSemicolon: boolean,\n    vars: { AstExpr },\n    values: { AstExpr },\n}",
          "name": "StatAssign",
          "tags": [],
          "source": {
            "path": "",
            "line": 571
          },
          "fields": [
            {
              "lua_type": "type: \"StatAssign\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "vars: { AstExpr }",
              "name": "vars",
              "desc": ""
            },
            {
              "lua_type": "values: { AstExpr }",
              "name": "values",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatCompoundAssign = {\n    type: \"StatCompoundAssign\",\n    location: Location,\n    hasSemicolon: boolean,\n    op: string,\n    var: AstExpr,\n    value: AstExpr,\n}",
          "name": "StatCompoundAssign",
          "tags": [],
          "source": {
            "path": "",
            "line": 579
          },
          "fields": [
            {
              "lua_type": "type: \"StatCompoundAssign\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "op: string",
              "name": "op",
              "desc": ""
            },
            {
              "lua_type": "var: AstExpr",
              "name": "var",
              "desc": ""
            },
            {
              "lua_type": "value: AstExpr",
              "name": "value",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatFunction = {\n    type: \"StatFunction\",\n    location: Location,\n    hasSemicolon: boolean,\n    name: AstExpr,\n    func: ExprFunction,\n}",
          "name": "StatFunction",
          "tags": [],
          "source": {
            "path": "",
            "line": 588
          },
          "fields": [
            {
              "lua_type": "type: \"StatFunction\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "name: AstExpr",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "func: ExprFunction",
              "name": "func",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatLocalFunction = {\n    type: \"StatLocalFunction\",\n    location: Location,\n    hasSemicolon: boolean,\n    name: AstLocal,\n    func: ExprFunction,\n}",
          "name": "StatLocalFunction",
          "tags": [],
          "source": {
            "path": "",
            "line": 596
          },
          "fields": [
            {
              "lua_type": "type: \"StatLocalFunction\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "name: AstLocal",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "func: ExprFunction",
              "name": "func",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatTypeAlias = {\n    type: \"StatTypeAlias\",\n    location: Location,\n    hasSemicolon: boolean,\n    name: string,\n    nameLocation: Location,\n    exported: boolean,\n    aliasedType: AstType,\n    generics: { AstGenericType }?,\n    genericPacks: { AstGenericTypePack }?,\n}",
          "name": "StatTypeAlias",
          "tags": [],
          "source": {
            "path": "",
            "line": 604
          },
          "fields": [
            {
              "lua_type": "type: \"StatTypeAlias\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "nameLocation: Location",
              "name": "nameLocation",
              "desc": ""
            },
            {
              "lua_type": "exported: boolean",
              "name": "exported",
              "desc": ""
            },
            {
              "lua_type": "aliasedType: AstType",
              "name": "aliasedType",
              "desc": ""
            },
            {
              "lua_type": "generics: { AstGenericType }?",
              "name": "generics",
              "desc": ""
            },
            {
              "lua_type": "genericPacks: { AstGenericTypePack }?",
              "name": "genericPacks",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatTypeFunction = {\n    type: \"StatTypeFunction\",\n    location: Location,\n    hasSemicolon: boolean,\n    name: string,\n    nameLocation: Location,\n    body: ExprFunction,\n    exported: boolean,\n    hasErrors: boolean,\n}",
          "name": "StatTypeFunction",
          "tags": [],
          "source": {
            "path": "",
            "line": 616
          },
          "fields": [
            {
              "lua_type": "type: \"StatTypeFunction\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "nameLocation: Location",
              "name": "nameLocation",
              "desc": ""
            },
            {
              "lua_type": "body: ExprFunction",
              "name": "body",
              "desc": ""
            },
            {
              "lua_type": "exported: boolean",
              "name": "exported",
              "desc": ""
            },
            {
              "lua_type": "hasErrors: boolean",
              "name": "hasErrors",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatDeclareGlobal = {\n    type: \"StatDeclareGlobal\",\n    location: Location,\n    hasSemicolon: boolean,\n    name: string,\n    nameLocation: Location,\n    declaredType: AstType,\n}",
          "name": "StatDeclareGlobal",
          "tags": [],
          "source": {
            "path": "",
            "line": 627
          },
          "fields": [
            {
              "lua_type": "type: \"StatDeclareGlobal\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "nameLocation: Location",
              "name": "nameLocation",
              "desc": ""
            },
            {
              "lua_type": "declaredType: AstType",
              "name": "declaredType",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstParamName = {\n    name: string,\n    location: Location,\n}",
          "name": "AstParamName",
          "tags": [],
          "source": {
            "path": "",
            "line": 636
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatDeclareFunction = {\n    type: \"StatDeclareFunction\",\n    location: Location,\n    hasSemicolon: boolean,\n    attributes: { AstAttr }?,\n    name: string,\n    nameLocation: Location,\n    generics: { AstGenericType }?,\n    genericPacks: { AstGenericTypePack }?,\n    params: AstTypeList,\n    paramNames: { AstParamName },\n    vararg: boolean,\n    varargLocation: Location,\n    returnTypes: AstTypePack,\n}",
          "name": "StatDeclareFunction",
          "tags": [],
          "source": {
            "path": "",
            "line": 641
          },
          "fields": [
            {
              "lua_type": "type: \"StatDeclareFunction\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "attributes: { AstAttr }?",
              "name": "attributes",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "nameLocation: Location",
              "name": "nameLocation",
              "desc": ""
            },
            {
              "lua_type": "generics: { AstGenericType }?",
              "name": "generics",
              "desc": ""
            },
            {
              "lua_type": "genericPacks: { AstGenericTypePack }?",
              "name": "genericPacks",
              "desc": ""
            },
            {
              "lua_type": "params: AstTypeList",
              "name": "params",
              "desc": ""
            },
            {
              "lua_type": "paramNames: { AstParamName }",
              "name": "paramNames",
              "desc": ""
            },
            {
              "lua_type": "vararg: boolean",
              "name": "vararg",
              "desc": ""
            },
            {
              "lua_type": "varargLocation: Location",
              "name": "varargLocation",
              "desc": ""
            },
            {
              "lua_type": "returnTypes: AstTypePack",
              "name": "returnTypes",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstDeclaredExternTypeProperty = {\n    name: string,\n    nameLocation: Location,\n    type: AstType,\n    isMethod: boolean,\n    location: Location,\n}",
          "name": "AstDeclaredExternTypeProperty",
          "tags": [],
          "source": {
            "path": "",
            "line": 657
          },
          "fields": [
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "nameLocation: Location",
              "name": "nameLocation",
              "desc": ""
            },
            {
              "lua_type": "type: AstType",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "isMethod: boolean",
              "name": "isMethod",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatDeclareExternType = {\n    type: \"StatDeclareExternType\",\n    location: Location,\n    hasSemicolon: boolean,\n    name: string,\n    superName: string?,\n    props: { AstDeclaredExternTypeProperty },\n    indexer: TypeTableIndexer?,\n}",
          "name": "StatDeclareExternType",
          "tags": [],
          "source": {
            "path": "",
            "line": 665
          },
          "fields": [
            {
              "lua_type": "type: \"StatDeclareExternType\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": ""
            },
            {
              "lua_type": "superName: string?",
              "name": "superName",
              "desc": ""
            },
            {
              "lua_type": "props: { AstDeclaredExternTypeProperty }",
              "name": "props",
              "desc": ""
            },
            {
              "lua_type": "indexer: TypeTableIndexer?",
              "name": "indexer",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatError = {\n    type: \"StatError\",\n    location: Location,\n    hasSemicolon: boolean,\n    expressions: { AstExpr },\n    statements: { AstStat },\n    messageIndex: number,\n}",
          "name": "StatError",
          "tags": [],
          "source": {
            "path": "",
            "line": 675
          },
          "fields": [
            {
              "lua_type": "type: \"StatError\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            },
            {
              "lua_type": "hasSemicolon: boolean",
              "name": "hasSemicolon",
              "desc": ""
            },
            {
              "lua_type": "expressions: { AstExpr }",
              "name": "expressions",
              "desc": ""
            },
            {
              "lua_type": "statements: { AstStat }",
              "name": "statements",
              "desc": ""
            },
            {
              "lua_type": "messageIndex: number",
              "name": "messageIndex",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type StatUnknown = {\n    type: \"StatUnknown\",\n    location: Location,\n}",
          "name": "StatUnknown",
          "tags": [],
          "source": {
            "path": "",
            "line": 684
          },
          "fields": [
            {
              "lua_type": "type: \"StatUnknown\"",
              "name": "type",
              "desc": ""
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type AstStat = Block\n    | StatIf\n    | StatWhile\n    | StatRepeat\n    | StatBreak\n    | StatContinue\n    | StatReturn\n    | StatExpr\n    | StatLocal\n    | StatFor\n    | StatForIn\n    | StatAssign\n    | StatCompoundAssign\n    | StatFunction\n    | StatLocalFunction\n    | StatTypeAlias\n    | StatTypeFunction\n    | StatDeclareGlobal\n    | StatDeclareFunction\n    | StatDeclareExternType\n    | StatError\n    | StatUnknown",
          "name": "AstStat",
          "tags": [],
          "source": {
            "path": "",
            "line": 690
          },
          "fields": [],
          "desc": "Union of all statement nodes."
        },
        {
          "lua_type": "type AstNode = AstStat\n    | AstExpr\n    | AstType",
          "name": "AstNode",
          "tags": [],
          "source": {
            "path": "",
            "line": 715
          },
          "fields": [],
          "desc": "Any AST node (statement, expression, or type annotation)."
        },
        {
          "lua_type": "type ParseResult = {\n    root: Block,\n    errors: { ParseErrorInfo },\n    comments: { CommentInfo }?,\n    lines: number,\n}",
          "name": "ParseResult",
          "tags": [],
          "source": {
            "path": "",
            "line": 722
          },
          "fields": [
            {
              "lua_type": "root: Block",
              "name": "root",
              "desc": ""
            },
            {
              "lua_type": "errors: { ParseErrorInfo }",
              "name": "errors",
              "desc": ""
            },
            {
              "lua_type": "comments: { CommentInfo }?",
              "name": "comments",
              "desc": ""
            },
            {
              "lua_type": "lines: number",
              "name": "lines",
              "desc": ""
            }
          ],
          "desc": "The result returned by [[parse]]."
        },
        {
          "lua_type": "type CompileOptions = {\n    optimizationLevel: number?,\n    debugLevel: number?,\n    coverageLevel: number?,\n    typeInfoLevel: number?,\n}",
          "name": "CompileOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 734
          },
          "fields": [
            {
              "lua_type": "optimizationLevel: number?",
              "name": "optimizationLevel",
              "desc": ""
            },
            {
              "lua_type": "debugLevel: number?",
              "name": "debugLevel",
              "desc": ""
            },
            {
              "lua_type": "coverageLevel: number?",
              "name": "coverageLevel",
              "desc": ""
            },
            {
              "lua_type": "typeInfoLevel: number?",
              "name": "typeInfoLevel",
              "desc": ""
            }
          ],
          "desc": "Options for [[compile]]."
        },
        {
          "lua_type": "type DisassembleOptions = {\n    optimizationLevel: number?,\n    debugLevel: number?,\n    showLocals: boolean?,\n    showRemarks: boolean?,\n    showTypes: boolean?,\n}",
          "name": "DisassembleOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 742
          },
          "fields": [
            {
              "lua_type": "optimizationLevel: number?",
              "name": "optimizationLevel",
              "desc": ""
            },
            {
              "lua_type": "debugLevel: number?",
              "name": "debugLevel",
              "desc": ""
            },
            {
              "lua_type": "showLocals: boolean?",
              "name": "showLocals",
              "desc": ""
            },
            {
              "lua_type": "showRemarks: boolean?",
              "name": "showRemarks",
              "desc": ""
            },
            {
              "lua_type": "showTypes: boolean?",
              "name": "showTypes",
              "desc": ""
            }
          ],
          "desc": "Options for [[disassemble]]."
        },
        {
          "lua_type": "type DefinitionSource = string | { source: string, name: string? }",
          "name": "DefinitionSource",
          "tags": [],
          "source": {
            "path": "",
            "line": 759
          },
          "fields": [],
          "desc": "A definition source for loading type definitions.\nCan be a plain string (the definition source text) or a table with\na `source` field and optional `name` (package name, e.g. `\"@mygame\"`).\n"
        },
        {
          "lua_type": "type CheckOptions = {\n    mode: (\"strict\" | \"nonstrict\" | \"nocheck\")?,\n    annotate: boolean?,\n    definitions: { DefinitionSource }?,\n    filePath: string?,\n}",
          "name": "CheckOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 767
          },
          "fields": [
            {
              "lua_type": "mode: (\"strict\" | \"nonstrict\" | \"nocheck\")?",
              "name": "mode",
              "desc": "Type-checking mode: `\"strict\"` for full checking, `\"nonstrict\"` (default)\nfor lenient checking, `\"nocheck\"` for no type checking.\n"
            },
            {
              "lua_type": "annotate: boolean?",
              "name": "annotate",
              "desc": "If `true`, the result includes an `annotated` field with the source\nrewritten to include inferred type annotations.\n"
            },
            {
              "lua_type": "definitions: { DefinitionSource }?",
              "name": "definitions",
              "desc": "Additional type definition sources to load before type checking.\nThese are `.d.luau`-style definition strings that declare global\ntypes and functions available in the checked source.\n"
            },
            {
              "lua_type": "filePath: string?",
              "name": "filePath",
              "desc": "Absolute file path of the source being checked. When provided,\n`require()` calls in the source are resolved relative to this path,\nand `.luaurc` alias configs are discovered by walking up from it.\n"
            }
          ],
          "desc": "Options for [[check]]"
        },
        {
          "lua_type": "type TypeErrorInfo = {\n    message: string,\n    location: Location,\n    category: \"TypeError\" | \"SyntaxError\",\n}",
          "name": "TypeErrorInfo",
          "tags": [],
          "source": {
            "path": "",
            "line": 793
          },
          "fields": [
            {
              "lua_type": "message: string",
              "name": "message",
              "desc": "Human-readable error message."
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": "Source location of the error."
            },
            {
              "lua_type": "category: \"TypeError\" | \"SyntaxError\"",
              "name": "category",
              "desc": "Error category: `\"TypeError\"` or `\"SyntaxError\"`."
            }
          ],
          "desc": "A type error from the type checker."
        },
        {
          "lua_type": "type LintInfo = {\n    severity: \"error\" | \"warning\",\n    code: number,\n    name: string,\n    message: string,\n    location: Location,\n}",
          "name": "LintInfo",
          "tags": [],
          "source": {
            "path": "",
            "line": 803
          },
          "fields": [
            {
              "lua_type": "severity: \"error\" | \"warning\"",
              "name": "severity",
              "desc": "Lint severity category."
            },
            {
              "lua_type": "code: number",
              "name": "code",
              "desc": "Numeric lint code."
            },
            {
              "lua_type": "name: string",
              "name": "name",
              "desc": "Stable lint code name (for example `\"LocalUnused\"`)."
            },
            {
              "lua_type": "message: string",
              "name": "message",
              "desc": "Human-readable lint message."
            },
            {
              "lua_type": "location: Location",
              "name": "location",
              "desc": "Source location for the lint."
            }
          ],
          "desc": "A lint diagnostic produced by Luau's built-in linter."
        },
        {
          "lua_type": "type LintResult = {\n    errors: { LintInfo },\n    warnings: { LintInfo },\n    all: { LintInfo },\n}",
          "name": "LintResult",
          "tags": [],
          "source": {
            "path": "",
            "line": 817
          },
          "fields": [
            {
              "lua_type": "errors: { LintInfo }",
              "name": "errors",
              "desc": ""
            },
            {
              "lua_type": "warnings: { LintInfo }",
              "name": "warnings",
              "desc": ""
            },
            {
              "lua_type": "all: { LintInfo }",
              "name": "all",
              "desc": ""
            }
          ],
          "desc": "Lint diagnostics grouped by severity plus flattened ordering."
        },
        {
          "lua_type": "type CheckResult = {\n    errors: { TypeErrorInfo },\n    lints: LintResult,\n    annotated: string?,\n}",
          "name": "CheckResult",
          "tags": [],
          "source": {
            "path": "",
            "line": 824
          },
          "fields": [
            {
              "lua_type": "errors: { TypeErrorInfo }",
              "name": "errors",
              "desc": "Type errors found during checking (empty array if none)."
            },
            {
              "lua_type": "lints: LintResult",
              "name": "lints",
              "desc": "Built-in Luau lint diagnostics for this source."
            },
            {
              "lua_type": "annotated: string?",
              "name": "annotated",
              "desc": "The source code with inferred type annotations attached.\nOnly present when `options.annotate` is `true`."
            }
          ],
          "desc": "The result returned by [[check]]."
        },
        {
          "lua_type": "type AnalysisTypeDetail = {\n    display: string,\n    kind: string,\n}",
          "name": "AnalysisTypeDetail",
          "tags": [],
          "source": {
            "path": "",
            "line": 834
          },
          "fields": [
            {
              "lua_type": "display: string",
              "name": "display",
              "desc": ""
            },
            {
              "lua_type": "kind: string",
              "name": "kind",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeAtResult = {\n    display: string,\n    source: \"Expression\" | \"Binding\" | \"ScopeBinding\",\n    type: AnalysisTypeDetail,\n}",
          "name": "TypeAtResult",
          "tags": [],
          "source": {
            "path": "",
            "line": 840
          },
          "fields": [
            {
              "lua_type": "display: string",
              "name": "display",
              "desc": ""
            },
            {
              "lua_type": "source: \"Expression\" | \"Binding\" | \"ScopeBinding\"",
              "name": "source",
              "desc": ""
            },
            {
              "lua_type": "type: AnalysisTypeDetail",
              "name": "type",
              "desc": ""
            }
          ],
          "desc": ""
        },
        {
          "lua_type": "type TypeAtOptions = {\n    mode: (\"strict\" | \"nonstrict\" | \"nocheck\")?,\n    definitions: { DefinitionSource }?,\n    filePath: string?,\n    detailed: boolean?,\n}",
          "name": "TypeAtOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 847
          },
          "fields": [
            {
              "lua_type": "mode: (\"strict\" | \"nonstrict\" | \"nocheck\")?",
              "name": "mode",
              "desc": "Type-checking mode. Defaults to `\"strict\"` for best inference."
            },
            {
              "lua_type": "definitions: { DefinitionSource }?",
              "name": "definitions",
              "desc": "Additional type definition sources to load before inference."
            },
            {
              "lua_type": "filePath: string?",
              "name": "filePath",
              "desc": "Absolute file path of the source. Enables require() resolution."
            },
            {
              "lua_type": "detailed: boolean?",
              "name": "detailed",
              "desc": "If true, return a structured type object instead of just a string."
            }
          ],
          "desc": "Options for [[typeAt]]."
        },
        {
          "lua_type": "type AutocompleteOptions = {\n    mode: (\"strict\" | \"nonstrict\")?,\n    definitions: { DefinitionSource }?,\n    filePath: string?,\n    detailed: boolean?,\n}",
          "name": "AutocompleteOptions",
          "tags": [],
          "source": {
            "path": "",
            "line": 859
          },
          "fields": [
            {
              "lua_type": "mode: (\"strict\" | \"nonstrict\")?",
              "name": "mode",
              "desc": "Type-checking mode. Defaults to `\"strict\"` for best results."
            },
            {
              "lua_type": "definitions: { DefinitionSource }?",
              "name": "definitions",
              "desc": "Additional type definition sources to load before completion."
            },
            {
              "lua_type": "filePath: string?",
              "name": "filePath",
              "desc": "Absolute file path of the source. Enables require() resolution."
            },
            {
              "lua_type": "detailed: boolean?",
              "name": "detailed",
              "desc": "If true, include `typeDetail` for each typed autocomplete entry."
            }
          ],
          "desc": "Options for [[autocomplete]]."
        },
        {
          "lua_type": "type AutocompleteEntry = {\n    kind: \"Property\" | \"Binding\" | \"Keyword\" | \"String\" | \"Type\" | \"Module\" | \"GeneratedFunction\" | \"RequirePath\" | \"Unknown\",\n    type: string?,\n    typeDetail: AnalysisTypeDetail?,\n    deprecated: boolean?,\n    typeCorrect: (\"Correct\" | \"CorrectFunctionResult\")?,\n    insertText: string?,\n    parens: (\"CursorAfter\" | \"CursorInside\")?,\n}",
          "name": "AutocompleteEntry",
          "tags": [],
          "source": {
            "path": "",
            "line": 871
          },
          "fields": [
            {
              "lua_type": "kind: \"Property\" | \"Binding\" | \"Keyword\" | \"String\" | \"Type\" | \"Module\" | \"GeneratedFunction\" | \"RequirePath\" | \"Unknown\"",
              "name": "kind",
              "desc": "What kind of completion this is."
            },
            {
              "lua_type": "type: string?",
              "name": "type",
              "desc": "The inferred type of this entry (absent for keywords)."
            },
            {
              "lua_type": "typeDetail: AnalysisTypeDetail?",
              "name": "typeDetail",
              "desc": "Structured type metadata (when `options.detailed` is true)."
            },
            {
              "lua_type": "deprecated: boolean?",
              "name": "deprecated",
              "desc": "Whether this entry is deprecated."
            },
            {
              "lua_type": "typeCorrect: (\"Correct\" | \"CorrectFunctionResult\")?",
              "name": "typeCorrect",
              "desc": "Whether this entry's type matches what's expected at the cursor."
            },
            {
              "lua_type": "insertText: string?",
              "name": "insertText",
              "desc": "Suggested text to insert."
            },
            {
              "lua_type": "parens: (\"CursorAfter\" | \"CursorInside\")?",
              "name": "parens",
              "desc": "Parentheses recommendation: `\"CursorAfter\"` means add `()` with\ncursor after, `\"CursorInside\"` means add `()` with cursor between."
            }
          ],
          "desc": "An autocompletion entry."
        },
        {
          "lua_type": "type AutocompleteResult = {\n    context: \"Expression\" | \"Statement\" | \"Property\" | \"Type\" | \"Keyword\" | \"String\" | \"Unknown\",\n    entries: { [string]: AutocompleteEntry },\n}",
          "name": "AutocompleteResult",
          "tags": [],
          "source": {
            "path": "",
            "line": 898
          },
          "fields": [
            {
              "lua_type": "context: \"Expression\" | \"Statement\" | \"Property\" | \"Type\" | \"Keyword\" | \"String\" | \"Unknown\"",
              "name": "context",
              "desc": "The autocomplete context at the cursor position."
            },
            {
              "lua_type": "entries: { [string]: AutocompleteEntry }",
              "name": "entries",
              "desc": "Map of completion name to entry details."
            }
          ],
          "desc": "The result returned by [[autocomplete]]."
        }
      ],
      "name": "@eryx/luau",
      "tags": [],
      "functions": [
        {
          "source": {
            "path": "",
            "line": 932
          },
          "is_method": false,
          "signature": "luau.parse(\n    source: string,  -- The Luau source code string to parse.\n    options: ParseOptions?  -- Parse options (e.g. comment capture).\n) → (\n    ParseResult  -- The parse result containing the AST root, errors, and optional comments. \n)",
          "owner": "luau",
          "desc": "Parses Luau source code and returns a structured AST.\n\nThe returned `root` is a [[Block]] node whose `body` contains an array\nof statement nodes. Every node carries a `type` string discriminator\nand a `location` with 1-based line/column positions.\n\nPass `{ captureComments = true }` to include a `comments` array in\nthe result.\n\n```luau\nlocal result = luau.parse(source, { captureComments = true })\nprint(\"Lines:\", result.lines)\nprint(\"Errors:\", #result.errors)\nprint(\"Top-level statements:\", #result.root.body)\n```\n",
          "tags": [],
          "name": "parse",
          "return_str": "ParseResult",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "ParseResult",
              "desc": "The parse result containing the AST root, errors, and optional comments. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code string to parse."
            },
            {
              "lua_type": "ParseOptions?",
              "name": "options",
              "desc": "Parse options (e.g. comment capture)."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 942
          },
          "is_method": false,
          "signature": "luau.prettyPrint(\n    source: string  -- The Luau source code to format.\n) → (\n    string  -- The reformatted source code. \n)",
          "owner": "luau",
          "desc": "Pretty-prints Luau source code by round-tripping through the parser.\n",
          "tags": [],
          "name": "prettyPrint",
          "return_str": "string",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "string",
              "desc": "The reformatted source code. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code to format."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 963
          },
          "is_method": false,
          "signature": "luau.compile(\n    source: string,  -- The Luau source code to compile.\n    options: CompileOptions?  -- Compiler options (optimization, debug, coverage levels).\n) → (\n    string  -- The compiled bytecode blob. \n)",
          "owner": "luau",
          "desc": "Compiles Luau source code to bytecode.\n\nThe returned bytecode blob can be passed to [[load]] or cached for\nlater use.  If the source has syntax errors the bytecode will contain\nan encoded error that [[load]] will surface.\n\n```luau\nlocal bytecode = luau.compile(source, { optimizationLevel = 2 })\nlocal fn = luau.load(bytecode, \"=cached\")\nfn()\n```\n",
          "tags": [],
          "name": "compile",
          "return_str": "string",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "string",
              "desc": "The compiled bytecode blob. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code to compile."
            },
            {
              "lua_type": "CompileOptions?",
              "name": "options",
              "desc": "Compiler options (optimization, debug, coverage levels)."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 983
          },
          "is_method": false,
          "signature": "luau.load(\n    sourceOrBytecode: string,  -- Luau source code or compiled bytecode.\n    chunkname: string?  -- Optional name for the chunk (shown in errors/stack traces, defaults to `\"=load\"`).\n) → (\n    (...any) -> ...any  -- The loaded function. \n)",
          "owner": "luau",
          "desc": "Loads Luau source code or pre-compiled bytecode as a callable function.\n\nAccepts either a source string (which will be compiled automatically)\nor a bytecode blob previously returned by [[compile]].  This is the\nequivalent of `loadstring` in standard Lua.\n\n```luau\nlocal fn = luau.load(\"return 1 + 2\", \"=example\")\nprint(fn()) -- 3\n```\n",
          "tags": [],
          "name": "load",
          "return_str": "((...any) → ...any)",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "((...any) → ...any)",
              "desc": "The loaded function. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "sourceOrBytecode",
              "desc": "Luau source code or compiled bytecode."
            },
            {
              "lua_type": "string?",
              "name": "chunkname",
              "desc": "Optional name for the chunk (shown in errors/stack traces, defaults to `\"=load\"`)."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 1006
          },
          "is_method": false,
          "signature": "luau.disassemble(\n    source: string,  -- The Luau source code to disassemble.\n    options: DisassembleOptions?  -- Disassembly options controlling output detail.\n) → (\n    string  -- The formatted bytecode listing. \n)",
          "owner": "luau",
          "desc": "Returns a human-readable bytecode listing for the given source.\n\nCompiles the source and returns a formatted disassembly string showing\nevery function's bytecode instructions, optionally with source lines,\nlocal variable info, compiler remarks, and type annotations.\n\n```luau\nlocal listing = luau.disassemble(source, {\n    showLocals  = true,\n    showRemarks = true,\n})\nprint(listing)\n```\n",
          "tags": [],
          "name": "disassemble",
          "return_str": "string",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "string",
              "desc": "The formatted bytecode listing. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code to disassemble."
            },
            {
              "lua_type": "DisassembleOptions?",
              "name": "options",
              "desc": "Disassembly options controlling output detail."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 1033
          },
          "is_method": false,
          "signature": "luau.check(\n    source: string,  -- The Luau source code to type-check.\n    options: CheckOptions?  -- Type-checking options.\n) → (\n    CheckResult  -- The type-check result. \n)",
          "owner": "luau",
          "desc": "Runs the Luau type checker on a source string.\n\nReturns a [[CheckResult]] containing any type errors found. When\n`options.annotate` is `true`, also returns the source code rewritten\nwith inferred type annotations attached to every binding and\nexpression. The result also includes built-in Luau lints under\n`result.lints`.\n\n```luau\nlocal result = luau.check(source, { mode = \"strict\", annotate = true })\nfor _, err in result.errors do\n    print(err.message, err.location.start.line)\nend\nif result.annotated then\n    print(result.annotated)\nend\n```\n",
          "tags": [],
          "name": "check",
          "return_str": "CheckResult",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "CheckResult",
              "desc": "The type-check result. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code to type-check."
            },
            {
              "lua_type": "CheckOptions?",
              "name": "options",
              "desc": "Type-checking options."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 1059
          },
          "is_method": false,
          "signature": "luau.typeAt(\n    source: string,  -- The Luau source code.\n    line: number,  -- 1-based line number.\n    column: number,  -- 1-based column number.\n    options: TypeAtOptions?  -- Type inference options.\n) → (\n    string?  -- The inferred type as a string, or nil. \n)",
          "owner": "luau",
          "desc": "Infers the type at a specific position in Luau source code.\n\nRuns the type checker in strict mode (by default) and queries the\ninferred type at the given 1-based line and column. Useful for\nbuilding LSP hover information or type inspection tools.\n\nReturns `nil` if no type can be determined at that position (e.g.\nwhitespace, comments, or if the position is out of range).\n\n```luau\nlocal source = \"local x = 42\\nprint(x)\"\nlocal ty = luau.typeAt(source, 1, 7)  -- position of 'x'\nprint(ty)  -- \"number\"\n```\n",
          "tags": [],
          "name": "typeAt",
          "return_str": "(string | TypeAtResult)?",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "(string | TypeAtResult)?",
              "desc": "The inferred type as a string, or nil. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code."
            },
            {
              "lua_type": "number",
              "name": "line",
              "desc": "1-based line number."
            },
            {
              "lua_type": "number",
              "name": "column",
              "desc": "1-based column number."
            },
            {
              "lua_type": "TypeAtOptions?",
              "name": "options",
              "desc": "Type inference options."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 1087
          },
          "is_method": false,
          "signature": "luau.autocomplete(\n    source: string,  -- The Luau source code.\n    line: number,  -- 1-based line number of the cursor.\n    column: number,  -- 1-based column number of the cursor.\n    options: AutocompleteOptions?  -- Autocomplete options.\n) → (\n    AutocompleteResult  -- The autocomplete result. \n)",
          "owner": "luau",
          "desc": "Computes autocompletion entries at a cursor position.\n\nRuns type checking and returns contextual completions, including\nproperty names, local bindings, keywords, and types - along with\ntheir inferred types where available. This is the same engine\nused by Luau language servers.\n\n```luau\nlocal source = 'local t = {foo = 1, bar = \"hi\"}\\nt.'\nlocal result = luau.autocomplete(source, 2, 3)  -- after \"t.\"\nfor name, entry in result.entries do\n    print(name, entry.kind, entry.type)\nend\n-- foo  Property  number\n-- bar  Property  string\n```\n",
          "tags": [],
          "name": "autocomplete",
          "return_str": "AutocompleteResult",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "AutocompleteResult",
              "desc": "The autocomplete result. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "source",
              "desc": "The Luau source code."
            },
            {
              "lua_type": "number",
              "name": "line",
              "desc": "1-based line number of the cursor."
            },
            {
              "lua_type": "number",
              "name": "column",
              "desc": "1-based column number of the cursor."
            },
            {
              "lua_type": "AutocompleteOptions?",
              "name": "options",
              "desc": "Autocomplete options."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 1118
          },
          "is_method": false,
          "signature": "luau.resolve(\n    filePath: string,  -- Absolute path of the source file containing the require.\n    requirePath: string  -- The require string to resolve.\n) → (\n    string?  -- Absolute path to the resolved file, or nil. \n)",
          "owner": "luau",
          "desc": "Resolve a `require()` path relative to a source file.\n\nGiven the absolute path of a Luau source file and a require string\n(relative path like `\"./foo\"`, `\"../bar\"`, or alias path like\n`\"@alias/mod\"`), returns the absolute path to the resolved module\nfile, or `nil` if no matching file was found.\n\nUses the same resolution rules as the type checker:\n- Extension search order: `.luau` -> `.lua` -> `dir/init.luau` -> `dir/init.lua`\n- Alias resolution via `.luaurc` files walking up the directory tree.\n- `init.luau` files resolve relative requires from the parent directory.\n\n```luau\nlocal target = luau.resolve(\"C:/project/src/main.luau\", \"./utils\")\nprint(target)  -- \"C:\\\\project\\\\src\\\\utils.luau\"\n```\n",
          "tags": [],
          "name": "resolve",
          "return_str": "string?",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "string?",
              "desc": "Absolute path to the resolved file, or nil. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "filePath",
              "desc": "Absolute path of the source file containing the require."
            },
            {
              "lua_type": "string",
              "name": "requirePath",
              "desc": "The require string to resolve."
            }
          ]
        }
      ],
      "properties": [],
      "source": {
        "path": "",
        "line": 0
      },
      "desc": "Luau source code parser, compiler, and type checker.\n\nParses Luau source into a structured AST (Abstract Syntax Tree) with\nfull type-safety. Also provides bytecode compilation, loading, native\nJIT compilation, bytecode disassembly, full type checking, type\ninference at positions, and autocompletion.\n\nEvery node carries a `type` discriminator string and a `location` with\n1-based line/column positions.\n\n```luau\nlocal luau = require(\"@eryx/luau\")\n\nlocal result = luau.parse(source, { captureComments = true })\nfor _, stat in result.root.body do\n    print(stat.type, stat.location.start.line)\nend\n\n-- Type check a file\nlocal checked = luau.check(source, { mode = \"strict\", annotate = true })\nprint(checked.annotated) -- source with type annotations\n\n-- Query a type at a position\nlocal ty = luau.typeAt(source, 1, 7)\nprint(ty) -- e.g. \"number\"\n```\n"
    }
  ]
}