Skip to content

Commit 1432daa

Browse files
authored
Don't allow in checks, make unused vars error (#7648)
1 parent aa02ca6 commit 1432daa

File tree

7 files changed

+28
-9
lines changed

7 files changed

+28
-9
lines changed

.eslintrc.base.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@
6666
"no-useless-return": "off",
6767
"no-var": "error",
6868
"no-with": "error",
69+
"no-restricted-syntax": [
70+
"error",
71+
{
72+
"selector": "BinaryExpression[operator='in']",
73+
"message": "Avoid using the 'in' operator for type checks."
74+
}
75+
],
6976
"object-shorthand": "off",
7077
"one-var": "off", // TODO@eamodio revisit
7178
// "one-var": ["error", "never"],
@@ -230,7 +237,7 @@
230237
"@typescript-eslint/no-unsafe-member-access": "off", // TODO@eamodio revisit
231238
"@typescript-eslint/no-unsafe-return": "off", // TODO@eamodio revisit
232239
"@typescript-eslint/no-unused-expressions": ["warn", { "allowShortCircuit": true }],
233-
"@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }],
240+
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
234241
// "@typescript-eslint/no-unused-vars": [
235242
// "warn",
236243
// {

common/sessionParsing.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,12 @@ export interface StrReplaceEditorToolData {
6464
parsedContent?: { content: string; fileA: string | undefined; fileB: string | undefined; };
6565
}
6666

67+
export namespace StrReplaceEditorToolData {
68+
export function is(value: any): value is StrReplaceEditorToolData {
69+
return value && (typeof value.command === 'string');
70+
}
71+
}
72+
6773
export interface BashToolData {
6874
commandLine: {
6975
original: string;

src/commands.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,12 +651,17 @@ export function registerCommands(
651651
return { folderManager, pr };
652652
};
653653

654+
function contextHasPath(ctx: OverviewContext | { path: string } | undefined): ctx is { path: string } {
655+
const contextAsPath: Partial<{ path: string }> = (ctx as { path: string });
656+
return !!contextAsPath.path;
657+
}
658+
654659
context.subscriptions.push(vscode.commands.registerCommand('pr.checkoutFromDescription', async (ctx: OverviewContext | { path: string } | undefined) => {
655660
if (!ctx) {
656661
return vscode.window.showErrorMessage(vscode.l10n.t('No pull request context provided for checkout.'));
657662
}
658663

659-
if ('path' in ctx) {
664+
if (contextHasPath(ctx)) {
660665
const { path } = ctx;
661666
const prNumber = Number(Buffer.from(path.substring(1), 'base64').toString('utf8'));
662667
if (Number.isNaN(prNumber)) {

src/gitProviders/vslsguest.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ class LiveShareRepositoryProxyHandler {
122122
constructor() { }
123123

124124
get(obj: any, prop: any) {
125+
// eslint-disable-next-line no-restricted-syntax
125126
if (prop in obj) {
126127
return obj[prop];
127128
}

src/github/copilotRemoteAgent.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import * as pathLib from 'path';
77
import vscode from 'vscode';
8-
import { parseSessionLogs, parseToolCallDetails } from '../../common/sessionParsing';
8+
import { parseSessionLogs, parseToolCallDetails, StrReplaceEditorToolData } from '../../common/sessionParsing';
99
import { COPILOT_ACCOUNTS } from '../common/comment';
1010
import { CopilotRemoteAgentConfig } from '../common/config';
1111
import { COPILOT_LOGINS, COPILOT_SWE_AGENT, CopilotPRStatus, mostRecentCopilotEvent } from '../common/copilot';
@@ -15,9 +15,8 @@ import Logger from '../common/logger';
1515
import { GitHubRemote } from '../common/remote';
1616
import { CODING_AGENT, CODING_AGENT_AUTO_COMMIT_AND_PUSH } from '../common/settingKeys';
1717
import { ITelemetry } from '../common/telemetry';
18-
import { DataUri, toOpenPullRequestWebviewUri } from '../common/uri';
18+
import { toOpenPullRequestWebviewUri } from '../common/uri';
1919
import { dateFromNow } from '../common/utils';
20-
import { getIconForeground, getListErrorForeground, getListWarningForeground, getNotebookStatusSuccessIconForeground } from '../view/theme';
2120
import { copilotEventToSessionStatus, IAPISessionLogs, ICopilotRemoteAgentCommandArgs, ICopilotRemoteAgentCommandResponse, OctokitCommon, RemoteAgentResult, RepoInfo } from './common';
2221
import { ChatSessionWithPR, CopilotApi, getCopilotApi, RemoteAgentJobPayload, SessionInfo, SessionSetupStep } from './copilotApi';
2322
import { CopilotPRWatcher, CopilotStateModel } from './copilotPrWatcher';
@@ -1180,7 +1179,7 @@ export class CopilotRemoteAgentManager extends Disposable {
11801179
toolPart.originMessage = new vscode.MarkdownString(toolDetails.originMessage);
11811180
}
11821181
if (toolDetails.toolSpecificData) {
1183-
if ('command' in toolDetails.toolSpecificData) {
1182+
if (StrReplaceEditorToolData.is(toolDetails.toolSpecificData)) {
11841183
if ((toolDetails.toolSpecificData.command === 'view' || toolDetails.toolSpecificData.command === 'edit') && toolDetails.toolSpecificData.fileLabel) {
11851184
const uri = vscode.Uri.file(pathLib.join(pullRequest.githubRepository.rootUri.fsPath, toolDetails.toolSpecificData.fileLabel));
11861185
toolPart.invocationMessage = new vscode.MarkdownString(`${toolPart.toolName} [](${uri.toString()})`);

src/github/copilotRemoteAgent/chatSessionContentBuilder.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import * as nodePath from 'path';
77
import vscode from 'vscode';
8-
import { parseSessionLogs, parseToolCallDetails } from '../../../common/sessionParsing';
8+
import { parseSessionLogs, parseToolCallDetails, StrReplaceEditorToolData } from '../../../common/sessionParsing';
99
import { COPILOT_SWE_AGENT } from '../../common/copilot';
1010
import Logger from '../../common/logger';
1111
import { CommentEvent, CopilotFinishedEvent, CopilotStartedEvent, EventType, ReviewEvent, TimelineEvent } from '../../common/timelineEvent';
@@ -369,7 +369,7 @@ export class ChatSessionContentBuilder {
369369
toolPart.originMessage = new vscode.MarkdownString(toolDetails.originMessage);
370370
}
371371
if (toolDetails.toolSpecificData) {
372-
if ('command' in toolDetails.toolSpecificData) {
372+
if (StrReplaceEditorToolData.is(toolDetails.toolSpecificData)) {
373373
if ((toolDetails.toolSpecificData.command === 'view' || toolDetails.toolSpecificData.command === 'edit') && toolDetails.toolSpecificData.fileLabel) {
374374
const uri = vscode.Uri.file(nodePath.join(pullRequest.githubRepository.rootUri.fsPath, toolDetails.toolSpecificData.fileLabel));
375375
toolPart.invocationMessage = new vscode.MarkdownString(`${toolPart.toolName} [](${uri.toString()})`);

src/view/compareChangesTreeDataProvider.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,8 @@ abstract class CompareChangesTreeProvider extends Disposable implements vscode.T
166166

167167
return { rawFiles, rawCommits, mergeBase };
168168
} catch (e) {
169-
if ('name' in e && e.name === 'HttpError' && e.status === 404) {
169+
const eWithName: Partial<{ name: string; status: number }> = e;
170+
if (e.name && eWithName.name === 'HttpError' && eWithName.status === 404) {
170171
(this.view as vscode.TreeView2<TreeNode>).message = new vscode.MarkdownString(vscode.l10n.t('The upstream branch `{0}` does not exist on GitHub', this.model.baseBranch));
171172
}
172173
return {};

0 commit comments

Comments
 (0)