Skip to content

Using getTypeAtLocation on a const type reference creates a TS2304 diagnostic #34913

Description

@ark120202

TypeScript Version: 3.8.0-dev.20191102

Search Terms:

Code

constts=require('typescript');constcontent='0 as const';consthost=ts.createCompilerHost({})constoriginalReadFile=host.readFile;host.readFile=(fileName)=>fileName==='main.ts' ? content : originalReadFile(fileName);constprogram=ts.createProgram({ host,rootNames: ['main.ts'],options: {types: []}});consttypeChecker=program.getDiagnosticsProducingTypeChecker();constsourceFile=program.getSourceFile('main.ts');typeChecker.getTypeAtLocation(sourceFile.statements[0].expression.type)console.log(program.getSemanticDiagnostics());

Expected behavior:

getSemanticDiagnostics to return an empty array

Actual behavior:

TS2304: Cannot find name 'const'.

Because of caching, it has noticeable effects only when getSemanticDiagnostics is called after getTypeAtLocation.

It happens only when internal getDiagnosticsProducingTypeChecker method is used, but I think it still might be undesirable and would be an issue if #28584 would be merged.

Playground Link:

Related Issues:

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScript

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions