Skip to content

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

Closed
@ark120202

Description

@ark120202

TypeScript Version: 3.8.0-dev.20191102

Search Terms:

Code

const ts = require('typescript');

const content = '0 as const';

const host = ts.createCompilerHost({})
const originalReadFile = host.readFile;
host.readFile = (fileName) => fileName === 'main.ts' ? content : originalReadFile(fileName);

const program = ts.createProgram({ host, rootNames: ['main.ts'], options: { types: [] } });
const typeChecker = program.getDiagnosticsProducingTypeChecker();
const sourceFile = 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