From ae71cb066c3604b7bfbd4fc8dcc4dbe2ef0d2604 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 15 Jan 2020 13:18:31 -0600 Subject: [PATCH 1/3] Add badges. --- package.json | 2 +- src/extension/extension.ts | 16 ++++++++++++---- yarn.lock | 8 ++++---- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 1420e3a08..63d61535a 100644 --- a/package.json +++ b/package.json @@ -211,7 +211,7 @@ "yarn-deduplicate": "^1.1.1" }, "dependencies": { - "@sourcegraph/basic-code-intel": "^9.0.0", + "@sourcegraph/basic-code-intel": "^10.0.0", "@sourcegraph/lightstep-tracer-webworker": "^0.20.14-fork.3", "@sourcegraph/typescript-language-server": "^0.3.7-fork", "@sourcegraph/vscode-ws-jsonrpc": "0.0.3-fork", diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 1fc39266d..694b63d95 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -6,7 +6,7 @@ import { URL as _URL, URLSearchParams as _URLSearchParams } from 'whatwg-url' Object.assign(_URL, self.URL) Object.assign(self, { URL: _URL, URLSearchParams: _URLSearchParams }) -import { initLSIF, mkIsLSIFAvailable } from '@sourcegraph/basic-code-intel' +import { initLSIF, mkIsLSIFAvailable, impreciseBadge } from '@sourcegraph/basic-code-intel' import { Tracer as LightstepTracer } from '@sourcegraph/lightstep-tracer-webworker' import { createMessageConnection, @@ -92,6 +92,7 @@ import { observableFromAsyncGenerator, SourcegraphEndpoint, } from './util' +import { groupByResultIdentityAsync } from 'ix/asynciterable/groupby' const HOVER_DEF_POLL_INTERVAL = 2000 const EXTERNAL_REFS_CONCURRENCY = 7 @@ -519,7 +520,7 @@ export async function activate(ctx: sourcegraph.ExtensionContext): Promise if (lsifResult) { yield lsifResult.value } else if (!config.value['typescript.serverUrl']) { - yield await basicCodeIntel.hover(textDocument, position) + yield { ...(await basicCodeIntel.hover(textDocument, position)), badge: impreciseBadge } } else { const textDocumentUri = new URL(textDocument.uri) const serverRootUri = resolveServerRootUri(textDocumentUri, serverSgEndpoint) @@ -568,7 +569,12 @@ export async function activate(ctx: sourcegraph.ExtensionContext): Promise if (lsifResult) { yield lsifResult.value } else if (!config.value['typescript.serverUrl']) { - yield await basicCodeIntel.definition(textDocument, position) + const result = await basicCodeIntel.definition(textDocument, position) + if (Array.isArray(result)) { + yield result.map(v => ({ ...v, badge: impreciseBadge })) + } else { + yield { ...result, badge: impreciseBadge } + } } else { const textDocumentUri = new URL(textDocument.uri) const serverRootUri = resolveServerRootUri(textDocumentUri, serverSgEndpoint) @@ -625,7 +631,9 @@ export async function activate(ctx: sourcegraph.ExtensionContext): Promise yield [ ...(lsifReferences === undefined ? [] : lsifReferences.value), - ...fuzzyReferences.filter(fuzzyRef => !lsifFiles.has(file(fuzzyRef))), + ...fuzzyReferences + .filter(fuzzyRef => !lsifFiles.has(file(fuzzyRef))) + .map(v => ({ ...v, badge: impreciseBadge })), ] } else { const textDocumentUri = new URL(textDocument.uri) diff --git a/yarn.lock b/yarn.lock index fa01d3b51..459ed8f44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -801,10 +801,10 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== -"@sourcegraph/basic-code-intel@^9.0.0": - version "9.0.0" - resolved "https://registry.npmjs.org/@sourcegraph/basic-code-intel/-/basic-code-intel-9.0.0.tgz#fb750d8b02a4dcb6eb1dab123ea547c3c8897203" - integrity sha512-HChZ2dOlG2teKWwnTG72zZcK7eXpndCzp/z0nM+UmDgtUG7xAoO68xt1NMmko2mkD/aTqlya4ni9D9jMEN5oAA== +"@sourcegraph/basic-code-intel@^10.0.0": + version "10.0.0" + resolved "https://registry.npmjs.org/@sourcegraph/basic-code-intel/-/basic-code-intel-10.0.0.tgz#b505f9c8dd2cd63b0bd98b3fd8ad4c7813464c65" + integrity sha512-ZYFv3zMEOQK3LlSr5McevXWMbBZsuOLT3JWrr1T4bCZ4prQ3A5yvyIinsDWAK5y31obTrb+v0KZJ0i8ly7HbAg== dependencies: lodash "^4.17.11" rxjs "^6.3.3" From 48154c9a46e6c5dcd08073c965365471e869eb6f Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 15 Jan 2020 13:21:06 -0600 Subject: [PATCH 2/3] Update extension.ts --- src/extension/extension.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 694b63d95..19b1c9819 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -92,7 +92,6 @@ import { observableFromAsyncGenerator, SourcegraphEndpoint, } from './util' -import { groupByResultIdentityAsync } from 'ix/asynciterable/groupby' const HOVER_DEF_POLL_INTERVAL = 2000 const EXTERNAL_REFS_CONCURRENCY = 7 From 4a9b4a4bbaaca9bcfc119ec43eb122b805548184 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 15 Jan 2020 13:43:59 -0600 Subject: [PATCH 3/3] Fix type errors. --- src/extension/extension.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 19b1c9819..7d4aee422 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -519,7 +519,12 @@ export async function activate(ctx: sourcegraph.ExtensionContext): Promise if (lsifResult) { yield lsifResult.value } else if (!config.value['typescript.serverUrl']) { - yield { ...(await basicCodeIntel.hover(textDocument, position)), badge: impreciseBadge } + const result = await basicCodeIntel.hover(textDocument, position) + if (result) { + yield { ...result, badge: impreciseBadge } + } else { + yield undefined + } } else { const textDocumentUri = new URL(textDocument.uri) const serverRootUri = resolveServerRootUri(textDocumentUri, serverSgEndpoint) @@ -569,10 +574,14 @@ export async function activate(ctx: sourcegraph.ExtensionContext): Promise yield lsifResult.value } else if (!config.value['typescript.serverUrl']) { const result = await basicCodeIntel.definition(textDocument, position) - if (Array.isArray(result)) { - yield result.map(v => ({ ...v, badge: impreciseBadge })) + if (result) { + if (Array.isArray(result)) { + yield result.map(v => ({ ...v, badge: impreciseBadge })) + } else { + yield { ...result, badge: impreciseBadge } + } } else { - yield { ...result, badge: impreciseBadge } + yield undefined } } else { const textDocumentUri = new URL(textDocument.uri)