sourcegraph / javascript-typescript-langserver

JavaScript and TypeScript code intelligence through the Language Server Protocol
https://sourcegraph.com
Apache License 2.0
793 stars 72 forks source link

Debug Failure. False expression. #644

Closed Z3TA closed 4 years ago

Z3TA commented 4 years ago

Hi! I'm trying out the language server but I don't know if this is intended or if I'm doing something wrong. When running "textDocument/completion" on a file that looks like this:

var myBanana = 123
my

Using

position: {
    line: 2,
    character: 3
}

I get: Debug Failure. Bad line number. Line: 2, lineStarts.length: 2 , line map is correct? true

If I change the line to 1 I get: Debug Failure. False expression.

If I change character to 0 I get a list of global variables and expressions.

I would expect it to return "myBanana" and possible other expressions starting with "my".

Here's the stack trace for the first error:

DEBUG --> { jsonrpc: '2.0', id: 1, method: 'textDocument/completion', params: { textDocument: { uri: 'file:///zpcdata/projects/test/testfile.js' }, position: { line: 2, character: 3 } } } ERROR Handler for textDocument/completion failed: Error: Debug Failure. Bad line number. Line: 2, lineStarts.length: 2 , line map is correct? true at computePositionOfLineAndCharacter (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/typescript/lib/typescript.js:5935:22) at Object.getPositionOfLineAndCharacter (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/typescript/lib/typescript.js:5929:16) at MergeMapSubscriber.projectManager.ensureReferencedFiles.toArray.mergeMap [as project] (/zpcdata/projects/test/langserver/javascript-typescript-langserver/lib/typescript-service.js:916:31) at MergeMapSubscriber._tryNext (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/mergeMap.js:122:27) at MergeMapSubscriber._next (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/mergeMap.js:112:18) at MergeMapSubscriber.Subscriber.next (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/Subscriber.js:93:18) at DefaultIfEmptySubscriber._complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/defaultIfEmpty.js:71:30) at DefaultIfEmptySubscriber.Subscriber.complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/Subscriber.js:118:18) at TakeLastSubscriber._complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/takeLast.js:105:21) at TakeLastSubscriber.Subscriber.complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/Subscriber.js:118:18)

Here's the stack trace after I changed the line to 1:

DEBUG --> { jsonrpc: '2.0', id: 1, method: 'textDocument/completion', params: { textDocument: { uri: 'file:///zpcdata/projects/test/testfile.js' }, position: { line: 1, character: 3 } } } ERROR Handler for textDocument/completion failed: Error: Debug Failure. False expression. at computePositionOfLineAndCharacter (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/typescript/lib/typescript.js:5942:22) at Object.getPositionOfLineAndCharacter (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/typescript/lib/typescript.js:5929:16) at MergeMapSubscriber.projectManager.ensureReferencedFiles.toArray.mergeMap [as project] (/zpcdata/projects/test/langserver/javascript-typescript-langserver/lib/typescript-service.js:916:31) at MergeMapSubscriber._tryNext (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/mergeMap.js:122:27) at MergeMapSubscriber._next (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/mergeMap.js:112:18) at MergeMapSubscriber.Subscriber.next (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/Subscriber.js:93:18) at DefaultIfEmptySubscriber._complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/defaultIfEmpty.js:71:30) at DefaultIfEmptySubscriber.Subscriber.complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/Subscriber.js:118:18) at TakeLastSubscriber._complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/operators/takeLast.js:105:21) at TakeLastSubscriber.Subscriber.complete (/zpcdata/projects/test/langserver/javascript-typescript-langserver/node_modules/rxjs/Subscriber.js:118:18)

When running npm test - all tests pass.

I've tried using just position: 22, a range, changing line-break character, using TS instead of JS in the test file, etc, but get the same errors.