flow icon indicating copy to clipboard operation
flow copied to clipboard

`Object.freeze` subtyping is unsound

Open goodmind opened this issue 6 years ago • 0 comments

Flow version: 0.103.0

const foo = Object.freeze({a: 1}) // should be read-only

foo.a = 1; // error

const bar: {a: number} = foo // no error?

bar.a = 1;

Expected behavior

const bar: {a: number} = foo // no error?
                            ^ Cannot assign `foo` to `bar` because property `a` is read-only in object type [1] but writable in object type [2].

Actual behavior

No errors!
  • Link to Try-Flow or Github repo: https://flow.org/try/#0MYewdgzgLgBAZiEMC8MDyAjAVgU2FAOjgCcccAvHACgG8BDALhgEYBfAShgHouYIALEAFcANgBMYGHDFJ0xAWnAiAngChVCEATooWAbnWhIsDHWJN6TMEIC2U4q12buvMEhzFiIYgH51p4m1dZgN1IA

goodmind avatar Jul 24 '19 06:07 goodmind