//// [tests/cases/compiler/2dArrays.ts] ////

=== 2dArrays.ts ===
class Cell {
>Cell : Cell
>     : ^^^^
}

class Ship {
>Ship : Ship
>     : ^^^^

    isSunk: boolean = false;
>isSunk : boolean
>       : ^^^^^^^
>false : false
>      : ^^^^^
}

class Board {
>Board : Board
>      : ^^^^^

    ships: Ship[] = [];
>ships : Ship[]
>      : ^^^^^^
>[] : never[]
>   : ^^^^^^^

    cells: Cell[] = [];
>cells : Cell[]
>      : ^^^^^^
>[] : never[]
>   : ^^^^^^^

    private allShipsSunk() {
>allShipsSunk : () => boolean
>             : ^^^^^^^^^^^^^

        return this.ships.every(function (val) { return val.isSunk; });
>this.ships.every(function (val) { return val.isSunk; }) : boolean
>                                                        : ^^^^^^^
>this.ships.every : { <S extends Ship>(predicate: (value: Ship, index: number, array: Ship[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: Ship, index: number, array: Ship[]) => unknown, thisArg?: any): boolean; }
>                 : ^^^ ^^^^^^^^^^^^^^^         ^^^     ^^^^^^^^     ^^      ^^     ^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^   ^^^        ^  ^^^         ^^^     ^^^^^^^^     ^^      ^^     ^^^^^^^^^^^^^       ^^       ^^^   ^^^       ^^^
>this.ships : Ship[]
>           : ^^^^^^
>this : this
>     : ^^^^
>ships : Ship[]
>      : ^^^^^^
>every : { <S extends Ship>(predicate: (value: Ship, index: number, array: Ship[]) => value is S, thisArg?: any): this is S[]; (predicate: (value: Ship, index: number, array: Ship[]) => unknown, thisArg?: any): boolean; }
>      : ^^^ ^^^^^^^^^^^^^^^         ^^^     ^^^^^^^^     ^^      ^^     ^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^   ^^^        ^  ^^^         ^^^     ^^^^^^^^     ^^      ^^     ^^^^^^^^^^^^^       ^^       ^^^   ^^^       ^^^
>function (val) { return val.isSunk; } : (val: Ship) => boolean
>                                      : ^   ^^^^^^^^^^^^^^^^^^
>val : Ship
>    : ^^^^
>val.isSunk : boolean
>           : ^^^^^^^
>val : Ship
>    : ^^^^
>isSunk : boolean
>       : ^^^^^^^
    }    
}
