diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 1de61bd71b..c8541da79d 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1754,6 +1754,7 @@ namespace ts { case SyntaxKind.ParenthesizedExpression: case SyntaxKind.ArrayLiteralExpression: case SyntaxKind.SpreadElement: + case SyntaxKind.NonNullExpression: node = parent; break; case SyntaxKind.ShorthandPropertyAssignment: diff --git a/tests/baselines/reference/constWithNonNull.errors.txt b/tests/baselines/reference/constWithNonNull.errors.txt new file mode 100644 index 0000000000..58667c417d --- /dev/null +++ b/tests/baselines/reference/constWithNonNull.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/constWithNonNull.ts(4,1): error TS2540: Cannot assign to 'x' because it is a constant or a read-only property. + + +==== tests/cases/compiler/constWithNonNull.ts (1 errors) ==== + // Fixes #21848 + + declare const x: number | undefined; + x!++; + ~ +!!! error TS2540: Cannot assign to 'x' because it is a constant or a read-only property. + \ No newline at end of file diff --git a/tests/baselines/reference/constWithNonNull.js b/tests/baselines/reference/constWithNonNull.js new file mode 100644 index 0000000000..66aeb42648 --- /dev/null +++ b/tests/baselines/reference/constWithNonNull.js @@ -0,0 +1,10 @@ +//// [constWithNonNull.ts] +// Fixes #21848 + +declare const x: number | undefined; +x!++; + + +//// [constWithNonNull.js] +// Fixes #21848 +x++; diff --git a/tests/baselines/reference/constWithNonNull.symbols b/tests/baselines/reference/constWithNonNull.symbols new file mode 100644 index 0000000000..4f5ddcbb45 --- /dev/null +++ b/tests/baselines/reference/constWithNonNull.symbols @@ -0,0 +1,9 @@ +=== tests/cases/compiler/constWithNonNull.ts === +// Fixes #21848 + +declare const x: number | undefined; +>x : Symbol(x, Decl(constWithNonNull.ts, 2, 13)) + +x!++; +>x : Symbol(x, Decl(constWithNonNull.ts, 2, 13)) + diff --git a/tests/baselines/reference/constWithNonNull.types b/tests/baselines/reference/constWithNonNull.types new file mode 100644 index 0000000000..b58fb7a62d --- /dev/null +++ b/tests/baselines/reference/constWithNonNull.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/constWithNonNull.ts === +// Fixes #21848 + +declare const x: number | undefined; +>x : number + +x!++; +>x!++ : number +>x! : any +>x : any + diff --git a/tests/cases/compiler/constWithNonNull.ts b/tests/cases/compiler/constWithNonNull.ts new file mode 100644 index 0000000000..3a5718f31a --- /dev/null +++ b/tests/cases/compiler/constWithNonNull.ts @@ -0,0 +1,4 @@ +// Fixes #21848 + +declare const x: number | undefined; +x!++;