Skip to content

Commit b6e5dc5

Browse files
Copilotchagong
andauthored
Merge remote-tracking branch 'origin/main' into dependabot/npm_and_yarn/typescript-7.0.2
# Conflicts: # CONTRIBUTING.md # test/suite/index.ts Co-authored-by: chagong <831821+chagong@users.noreply.github.com>
2 parents afeed9e + 8460d7e commit b6e5dc5

6 files changed

Lines changed: 64 additions & 93 deletions

File tree

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ javaDebugger/
2727
### Prerequisites
2828
- [JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html), (version 11 or later)
2929
- [VS Code](https://code.visualstudio.com/), (version 1.44.0 or later)
30-
- [Node.JS](https://nodejs.org/en/), (>= 20)
30+
- [Node.JS](https://nodejs.org/en/), (20.x or 22+)
3131
- [Language Support for Java by Red Hat](https://marketplace.visualstudio.com/items?itemName=redhat.java), (version 0.60.0 or later)
3232

3333
Install all the dependencies using `npm` (supposed to be installed together with [Node.JS](https://nodejs.org/en/)).

package-lock.json

Lines changed: 1 addition & 80 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"debugger"
2222
],
2323
"engines": {
24-
"vscode": "^1.95.0"
24+
"vscode": "^1.95.0",
25+
"node": "20 || >=22"
2526
},
2627
"license": "SEE LICENSE IN LICENSE.txt",
2728
"repository": {
@@ -1403,7 +1404,6 @@
14031404
"dotenv": "^17.4.2",
14041405
"lodash": "^4.18.0",
14051406
"vscode-extension-telemetry-wrapper": "^0.15.3",
1406-
"vscode-languageclient": "6.0.0-next.9",
14071407
"vscode-languageserver-types": "3.18.0",
14081408
"vscode-tas-client": "^0.1.84"
14091409
},

src/JavaInlineValueProvider.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,19 @@
44
import { debug, InlineValue, InlineValueContext, InlineValueEvaluatableExpression, InlineValuesProvider, InlineValueText, InlineValueVariableLookup,
55
Range, TextDocument } from "vscode";
66
import { instrumentOperation, instrumentOperationStep, sendInfo } from "vscode-extension-telemetry-wrapper";
7-
import * as CodeConverter from "vscode-languageclient/lib/codeConverter";
8-
import * as ProtocolConverter from "vscode-languageclient/lib/protocolConverter";
7+
import { Range as ProtocolRange } from "vscode-languageserver-types";
98
import { InlineKind, InlineVariable, resolveInlineVariables } from "./languageServerPlugin";
109

11-
const protoConverter: ProtocolConverter.Converter = ProtocolConverter.createConverter();
12-
const codeConverter: CodeConverter.Converter = CodeConverter.createConverter();
10+
export function toProtocolRange(range: Range): ProtocolRange {
11+
return {
12+
start: { line: range.start.line, character: range.start.character },
13+
end: { line: range.end.line, character: range.end.character },
14+
};
15+
}
16+
17+
export function toCodeRange(range: ProtocolRange): Range {
18+
return new Range(range.start.line, range.start.character, range.end.line, range.end.character);
19+
}
1320

1421
export class JavaInlineValuesProvider implements InlineValuesProvider {
1522

@@ -18,8 +25,8 @@ export class JavaInlineValuesProvider implements InlineValuesProvider {
1825
const resolveInlineVariablesStep = instrumentOperationStep(operationId, "resolveInlineVariables", async () => {
1926
return <InlineVariable[]> (await resolveInlineVariables({
2027
uri: document.uri.toString(),
21-
viewPort: codeConverter.asRange(viewPort),
22-
stoppedLocation: codeConverter.asRange(context.stoppedLocation),
28+
viewPort: toProtocolRange(viewPort),
29+
stoppedLocation: toProtocolRange(context.stoppedLocation),
2330
}));
2431
});
2532
const variables: InlineVariable[] = await resolveInlineVariablesStep();
@@ -57,16 +64,16 @@ export class JavaInlineValuesProvider implements InlineValuesProvider {
5764
let next = 0;
5865
for (const variable of variables) {
5966
if (variable.kind === InlineKind.VariableLookup) {
60-
result.push(new InlineValueVariableLookup(protoConverter.asRange(variable.range), variable.name, true));
67+
result.push(new InlineValueVariableLookup(toCodeRange(variable.range), variable.name, true));
6168
} else if (resolvedVariables && resolvedVariables.length > next) {
6269
const resolvedValue = resolvedVariables[next++];
6370
if (resolvedValue) {
64-
result.push(new InlineValueText(protoConverter.asRange(variable.range), `${variable.name} = ${resolvedValue.value}`));
71+
result.push(new InlineValueText(toCodeRange(variable.range), `${variable.name} = ${resolvedValue.value}`));
6572
} else {
66-
result.push(new InlineValueEvaluatableExpression(protoConverter.asRange(variable.range), variable.name));
73+
result.push(new InlineValueEvaluatableExpression(toCodeRange(variable.range), variable.name));
6774
}
6875
} else {
69-
result.push(new InlineValueEvaluatableExpression(protoConverter.asRange(variable.range), variable.name));
76+
result.push(new InlineValueEvaluatableExpression(toCodeRange(variable.range), variable.name));
7077
}
7178
}
7279

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license.
3+
4+
import * as assert from "assert";
5+
import { Range } from "vscode";
6+
7+
import { toCodeRange, toProtocolRange } from "../src/JavaInlineValueProvider";
8+
9+
suite("JavaInlineValueProvider", () => {
10+
test("converts ranges without relying on language client internals", () => {
11+
const codeRange = new Range(1, 2, 3, 4);
12+
const protocolRange = toProtocolRange(codeRange);
13+
14+
assert.deepStrictEqual(protocolRange, {
15+
start: { line: 1, character: 2 },
16+
end: { line: 3, character: 4 },
17+
});
18+
assert.ok(toCodeRange(protocolRange).isEqual(codeRange));
19+
});
20+
});

test/testRunner.test.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license.
3+
4+
import * as assert from "assert";
5+
import * as Mocha from "mocha";
6+
7+
import { run } from "./suite";
8+
9+
suite("test runner", () => {
10+
test("rejects when Mocha throws synchronously", async () => {
11+
const expectedError = new Error("Mocha failed to start");
12+
const originalRun = Mocha.prototype.run;
13+
Mocha.prototype.run = () => {
14+
throw expectedError;
15+
};
16+
17+
try {
18+
await assert.rejects(run(), (error) => error === expectedError);
19+
} finally {
20+
Mocha.prototype.run = originalRun;
21+
}
22+
});
23+
});

0 commit comments

Comments
 (0)