diff --git a/src/services/completions.ts b/src/services/completions.ts
index 59166fe91ec..c2f8bb72aff 100644
--- a/src/services/completions.ts
+++ b/src/services/completions.ts
@@ -1050,10 +1050,10 @@ function getExhaustiveCaseSnippets(
else if (!tracker.hasValue(type.value)) {
switch (typeof type.value) {
case "object":
- elements.push(factory.createBigIntLiteral(type.value));
+ elements.push(type.value.negative ? factory.createPrefixUnaryExpression(SyntaxKind.MinusToken, factory.createBigIntLiteral({ negative: false, base10Value: type.value.base10Value })) : factory.createBigIntLiteral(type.value));
break;
case "number":
- elements.push(factory.createNumericLiteral(type.value));
+ elements.push(type.value < 0 ? factory.createPrefixUnaryExpression(SyntaxKind.MinusToken, factory.createNumericLiteral(-type.value)) : factory.createNumericLiteral(type.value));
break;
case "string":
elements.push(factory.createStringLiteral(type.value, quotePreference === QuotePreference.Single));
diff --git a/tests/cases/fourslash/exhaustiveCaseCompletions7.ts b/tests/cases/fourslash/exhaustiveCaseCompletions7.ts
new file mode 100644
index 00000000000..5038caf94f1
--- /dev/null
+++ b/tests/cases/fourslash/exhaustiveCaseCompletions7.ts
@@ -0,0 +1,29 @@
+///
+
+// @newline: LF
+////export function foo(position: -1 | 0 | 1) {
+//// switch (position) {
+//// /**/
+//// }
+////}
+
+verify.completions(
+ {
+ marker: "",
+ isNewIdentifierLocation: false,
+ includes: [
+ {
+ name: "case 0: ...",
+ source: completion.CompletionSource.SwitchCases,
+ sortText: completion.SortText.GlobalsOrKeywords,
+ insertText:
+`case 0:
+case 1:
+case -1:`,
+ },
+ ],
+ preferences: {
+ includeCompletionsWithInsertText: true,
+ },
+ },
+);
diff --git a/tests/cases/fourslash/exhaustiveCaseCompletions8.ts b/tests/cases/fourslash/exhaustiveCaseCompletions8.ts
new file mode 100644
index 00000000000..28da2b9417b
--- /dev/null
+++ b/tests/cases/fourslash/exhaustiveCaseCompletions8.ts
@@ -0,0 +1,28 @@
+///
+
+// @newline: LF
+////export function foo(position: -1n | 0n) {
+//// switch (position) {
+//// /**/
+//// }
+////}
+
+verify.completions(
+ {
+ marker: "",
+ isNewIdentifierLocation: false,
+ includes: [
+ {
+ name: "case 0n: ...",
+ source: completion.CompletionSource.SwitchCases,
+ sortText: completion.SortText.GlobalsOrKeywords,
+ insertText:
+`case 0n:
+case -1n:`,
+ },
+ ],
+ preferences: {
+ includeCompletionsWithInsertText: true,
+ },
+ },
+);