diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 761ca7a95ec..22470405b6a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -31411,7 +31411,7 @@ namespace ts { const type = getTypeOfSymbol(symbol); if (strictNullChecks && !(type.flags & (TypeFlags.AnyOrUnknown | TypeFlags.Never)) && - !(exactOptionalPropertyTypes ? hasQuestionToken(symbol.valueDeclaration!) : getFalsyFlags(type) & TypeFlags.Undefined)) { + !(exactOptionalPropertyTypes ? symbol.flags & SymbolFlags.Optional : getFalsyFlags(type) & TypeFlags.Undefined)) { error(expr, Diagnostics.The_operand_of_a_delete_operator_must_be_optional); } } diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).errors.txt b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).errors.txt index 7953479e490..1d806b0f371 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).errors.txt +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).errors.txt @@ -1,9 +1,10 @@ -tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(25,8): error TS2790: The operand of a 'delete' operator must be optional. -tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(27,8): error TS2790: The operand of a 'delete' operator must be optional. -tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(34,10): error TS2339: Property 'j' does not exist on type 'Foo'. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(26,8): error TS2790: The operand of a 'delete' operator must be optional. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(28,8): error TS2790: The operand of a 'delete' operator must be optional. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(35,10): error TS2339: Property 'j' does not exist on type 'Foo'. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(46,10): error TS2339: Property 'j' does not exist on type 'Partial'. -==== tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts (3 errors) ==== +==== tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts (4 errors) ==== interface Foo { a: number b: number | undefined @@ -25,6 +26,7 @@ tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.t } declare const f: Foo + declare const g: Partial declare const a: AA declare const b: BB @@ -45,6 +47,19 @@ tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.t ~ !!! error TS2339: Property 'j' does not exist on type 'Foo'. + delete g.a + delete g.b + delete g.c + delete g.d + delete g.e + delete g.f + delete g.g + delete g.h + delete g.i + delete g.j + ~ +!!! error TS2339: Property 'j' does not exist on type 'Partial'. + delete a.a delete a.b diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).js b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).js index 2a4b0326cb8..fd2e450f6f4 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).js +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).js @@ -20,6 +20,7 @@ type BB = { } declare const f: Foo +declare const g: Partial declare const a: AA declare const b: BB @@ -34,6 +35,17 @@ delete f.h delete f.i delete f.j +delete g.a +delete g.b +delete g.c +delete g.d +delete g.e +delete g.f +delete g.g +delete g.h +delete g.i +delete g.j + delete a.a delete a.b @@ -52,6 +64,16 @@ delete f.g; delete f.h; delete f.i; delete f.j; +delete g.a; +delete g.b; +delete g.c; +delete g.d; +delete g.e; +delete g.f; +delete g.g; +delete g.h; +delete g.i; +delete g.j; delete a.a; delete a.b; delete b.a; diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).symbols b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).symbols index f03e4c4ba62..86df5a00f1f 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).symbols +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).symbols @@ -48,12 +48,17 @@ declare const f: Foo >f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 20, 13)) >Foo : Symbol(Foo, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 0)) +declare const g: Partial +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) +>Foo : Symbol(Foo, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 0)) + declare const a: AA ->a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) >AA : Symbol(AA, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 10, 1)) declare const b: BB ->b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 23, 13)) >BB : Symbol(BB, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 14, 1)) delete f.a @@ -104,15 +109,63 @@ delete f.i delete f.j >f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 20, 13)) +delete g.a +>g.a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 15)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 15)) + +delete g.b +>g.b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 1, 13)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 1, 13)) + +delete g.c +>g.c : Symbol(c, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 2, 25)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>c : Symbol(c, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 2, 25)) + +delete g.d +>g.d : Symbol(d, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 3, 20)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>d : Symbol(d, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 3, 20)) + +delete g.e +>g.e : Symbol(e, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 4, 14)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>e : Symbol(e, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 4, 14)) + +delete g.f +>g.f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 5, 32)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 5, 32)) + +delete g.g +>g.g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 6, 33)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 6, 33)) + +delete g.h +>g.h : Symbol(h, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 7, 14)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>h : Symbol(h, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 7, 14)) + +delete g.i +>g.i : Symbol(i, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 8, 10)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>i : Symbol(i, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 8, 10)) + +delete g.j +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) + delete a.a ->a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) delete a.b ->a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) delete b.a ->b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 23, 13)) delete b.b ->b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 23, 13)) diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).types b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).types index 13436510af0..79da5d0fe05 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=false).types @@ -45,6 +45,9 @@ type BB = { declare const f: Foo >f : Foo +declare const g: Partial +>g : Partial + declare const a: AA >a : AA @@ -111,6 +114,66 @@ delete f.j >f : Foo >j : any +delete g.a +>delete g.a : boolean +>g.a : number | undefined +>g : Partial +>a : number | undefined + +delete g.b +>delete g.b : boolean +>g.b : number | undefined +>g : Partial +>b : number | undefined + +delete g.c +>delete g.c : boolean +>g.c : number | null | undefined +>g : Partial +>c : number | null | undefined + +delete g.d +>delete g.d : boolean +>g.d : number | undefined +>g : Partial +>d : number | undefined + +delete g.e +>delete g.e : boolean +>g.e : number | null | undefined +>g : Partial +>e : number | null | undefined + +delete g.f +>delete g.f : boolean +>g.f : number | null | undefined +>g : Partial +>f : number | null | undefined + +delete g.g +>delete g.g : boolean +>g.g : unknown +>g : Partial +>g : unknown + +delete g.h +>delete g.h : boolean +>g.h : any +>g : Partial +>h : any + +delete g.i +>delete g.i : boolean +>g.i : undefined +>g : Partial +>i : undefined + +delete g.j +>delete g.j : boolean +>g.j : any +>g : Partial +>j : any + delete a.a >delete a.a : boolean >a.a : number diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).errors.txt b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).errors.txt index 03d5b58f2e7..e3280511edb 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).errors.txt +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).errors.txt @@ -1,11 +1,12 @@ -tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(25,8): error TS2790: The operand of a 'delete' operator must be optional. tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(26,8): error TS2790: The operand of a 'delete' operator must be optional. tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(27,8): error TS2790: The operand of a 'delete' operator must be optional. -tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(29,8): error TS2790: The operand of a 'delete' operator must be optional. -tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(34,10): error TS2339: Property 'j' does not exist on type 'Foo'. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(28,8): error TS2790: The operand of a 'delete' operator must be optional. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(30,8): error TS2790: The operand of a 'delete' operator must be optional. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(35,10): error TS2339: Property 'j' does not exist on type 'Foo'. +tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts(46,10): error TS2339: Property 'j' does not exist on type 'Partial'. -==== tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts (5 errors) ==== +==== tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts (6 errors) ==== interface Foo { a: number b: number | undefined @@ -27,6 +28,7 @@ tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.t } declare const f: Foo + declare const g: Partial declare const a: AA declare const b: BB @@ -51,6 +53,19 @@ tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.t ~ !!! error TS2339: Property 'j' does not exist on type 'Foo'. + delete g.a + delete g.b + delete g.c + delete g.d + delete g.e + delete g.f + delete g.g + delete g.h + delete g.i + delete g.j + ~ +!!! error TS2339: Property 'j' does not exist on type 'Partial'. + delete a.a delete a.b diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).js b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).js index 2a4b0326cb8..fd2e450f6f4 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).js +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).js @@ -20,6 +20,7 @@ type BB = { } declare const f: Foo +declare const g: Partial declare const a: AA declare const b: BB @@ -34,6 +35,17 @@ delete f.h delete f.i delete f.j +delete g.a +delete g.b +delete g.c +delete g.d +delete g.e +delete g.f +delete g.g +delete g.h +delete g.i +delete g.j + delete a.a delete a.b @@ -52,6 +64,16 @@ delete f.g; delete f.h; delete f.i; delete f.j; +delete g.a; +delete g.b; +delete g.c; +delete g.d; +delete g.e; +delete g.f; +delete g.g; +delete g.h; +delete g.i; +delete g.j; delete a.a; delete a.b; delete b.a; diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).symbols b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).symbols index f03e4c4ba62..86df5a00f1f 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).symbols +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).symbols @@ -48,12 +48,17 @@ declare const f: Foo >f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 20, 13)) >Foo : Symbol(Foo, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 0)) +declare const g: Partial +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>Partial : Symbol(Partial, Decl(lib.es5.d.ts, --, --)) +>Foo : Symbol(Foo, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 0)) + declare const a: AA ->a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) >AA : Symbol(AA, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 10, 1)) declare const b: BB ->b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 23, 13)) >BB : Symbol(BB, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 14, 1)) delete f.a @@ -104,15 +109,63 @@ delete f.i delete f.j >f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 20, 13)) +delete g.a +>g.a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 15)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 0, 15)) + +delete g.b +>g.b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 1, 13)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 1, 13)) + +delete g.c +>g.c : Symbol(c, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 2, 25)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>c : Symbol(c, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 2, 25)) + +delete g.d +>g.d : Symbol(d, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 3, 20)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>d : Symbol(d, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 3, 20)) + +delete g.e +>g.e : Symbol(e, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 4, 14)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>e : Symbol(e, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 4, 14)) + +delete g.f +>g.f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 5, 32)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>f : Symbol(f, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 5, 32)) + +delete g.g +>g.g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 6, 33)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 6, 33)) + +delete g.h +>g.h : Symbol(h, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 7, 14)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>h : Symbol(h, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 7, 14)) + +delete g.i +>g.i : Symbol(i, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 8, 10)) +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>i : Symbol(i, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 8, 10)) + +delete g.j +>g : Symbol(g, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) + delete a.a ->a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) delete a.b ->a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 21, 13)) +>a : Symbol(a, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) delete b.a ->b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 23, 13)) delete b.b ->b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 22, 13)) +>b : Symbol(b, Decl(deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts, 23, 13)) diff --git a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).types b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).types index 13436510af0..79da5d0fe05 100644 --- a/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).types +++ b/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).types @@ -45,6 +45,9 @@ type BB = { declare const f: Foo >f : Foo +declare const g: Partial +>g : Partial + declare const a: AA >a : AA @@ -111,6 +114,66 @@ delete f.j >f : Foo >j : any +delete g.a +>delete g.a : boolean +>g.a : number | undefined +>g : Partial +>a : number | undefined + +delete g.b +>delete g.b : boolean +>g.b : number | undefined +>g : Partial +>b : number | undefined + +delete g.c +>delete g.c : boolean +>g.c : number | null | undefined +>g : Partial +>c : number | null | undefined + +delete g.d +>delete g.d : boolean +>g.d : number | undefined +>g : Partial +>d : number | undefined + +delete g.e +>delete g.e : boolean +>g.e : number | null | undefined +>g : Partial +>e : number | null | undefined + +delete g.f +>delete g.f : boolean +>g.f : number | null | undefined +>g : Partial +>f : number | null | undefined + +delete g.g +>delete g.g : boolean +>g.g : unknown +>g : Partial +>g : unknown + +delete g.h +>delete g.h : boolean +>g.h : any +>g : Partial +>h : any + +delete g.i +>delete g.i : boolean +>g.i : undefined +>g : Partial +>i : undefined + +delete g.j +>delete g.j : boolean +>g.j : any +>g : Partial +>j : any + delete a.a >delete a.a : boolean >a.a : number diff --git a/tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts b/tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts index 03865521a13..8209b433231 100644 --- a/tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts +++ b/tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts @@ -22,6 +22,7 @@ type BB = { } declare const f: Foo +declare const g: Partial declare const a: AA declare const b: BB @@ -36,6 +37,17 @@ delete f.h delete f.i delete f.j +delete g.a +delete g.b +delete g.c +delete g.d +delete g.e +delete g.f +delete g.g +delete g.h +delete g.i +delete g.j + delete a.a delete a.b