Skip to content

[2.5.2 languageService] Error: Debug Failure. False expression. #18245

@plantain-00

Description

@plantain-00

TypeScript Version: 2.5.2

Code

foo.ts file(npm install vue vue-class-component to get their types):

import Vue from "vue";
import Component from "vue-class-component";
import { vueTemplateHtml } from "./variables";

@Component({
    template: vueTemplateHtml,
})
class Carousel<T> extends Vue {
}

variables.ts file:

export const vueTemplateHtml = `<div></div>`;

save it a js file e.g. foo.js, then run node foo.js

const ts = require("typescript");
const fs = require("fs");

const languageService = ts.createLanguageService({
    getCompilationSettings() {
        return {};
    },
    getScriptFileNames() {
        return ["foo.ts", "variables.ts"];
    },
    getScriptVersion(fileName) {
        return "";
    },
    getScriptSnapshot(fileName) {
        if (fileName === ".ts") {
            return ts.ScriptSnapshot.fromString("");
        }
        return ts.ScriptSnapshot.fromString(fs.readFileSync(fileName, { encoding: "utf8" }));
    },
    getCurrentDirectory: () => ".",
    getDefaultLibFileName(options) {
        return ts.getDefaultLibFilePath(options);
    },
    fileExists: ts.sys.fileExists,
    readFile: ts.sys.readFile,
    readDirectory: ts.sys.readDirectory,
});
const definitions = languageService.getDefinitionAtPosition("foo.ts", 158); // 158 is the latter `vueTemplateHtml` position

Expected behavior:

No error or more precise error message

Actual behavior:

/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:3549
            throw e;
            ^

Error: Debug Failure. False expression.
    at Object.usingSingleLineStringWriter (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:6916:22)
    at symbolToString (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:24679:23)
    at getTargetOfImportClause (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:23833:85)
    at getTargetOfAliasDeclaration (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:23947:28)
    at resolveAlias (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:23978:30)
    at /Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:24471:62
    at Object.forEachEntry (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:2270:26)
    at trySymbolTable (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:24464:31)
    at getAccessibleSymbolChainFromSymbolTableWorker (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:24437:30)
    at getAccessibleSymbolChainFromSymbolTable (/Users/yaoyao/repositories/test/node_modules/typescript/lib/typescript.js:24430:24)

Note: it works with typescript 2.4.2, when I update to 2.5.2, the error appears.

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptDomain: APIRelates to the public API for TypeScriptFixedA PR has been merged for this issue

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions