diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2b815c40aba..425d149db39 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -21865,7 +21865,7 @@ namespace ts { diagnosticMessage = Diagnostics.Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0; } if (diagnosticMessage) { - const withMinus = isMinusPrefixUnaryExpression(node.parent); + const withMinus = isPrefixUnaryExpression(node.parent) && node.parent.operator === SyntaxKind.MinusToken; const literal = `${withMinus ? "-" : ""}0o${node.text}`; return grammarErrorOnNode(withMinus ? node.parent : node, diagnosticMessage, literal); } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index f272805ced2..edfbe639d25 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -742,9 +742,8 @@ namespace ts { return false; } - export function isMinusPrefixUnaryExpression(node: Node): boolean { - return node.kind === SyntaxKind.PrefixUnaryExpression && - (node as PrefixUnaryExpression).operator === SyntaxKind.MinusToken; + export function isPrefixUnaryExpression(node: Node): node is PrefixUnaryExpression { + return node.kind === SyntaxKind.PrefixUnaryExpression; } // Warning: This has the same semantics as the forEach family of functions,