Skip to content

Flow analysis fails when using try catch block in IIFEs #36828

@SanderRonde

Description

@SanderRonde

TypeScript Version: 3.8.0-beta onwards

Search Terms: return, iife, error, flow anaylsis, try catch

Code

const x = (() => {
  try { return 'x'; } catch (e) {
    return null;
  }
})();

// any code here is unreachable according to TS

Expected behavior:
Typescript marks code as reachable

Actual behavior:
Typescript wrongfully assumes that any code after the block is unreachable

Playground Link:
https://www.typescriptlang.org/play/?ts=3.8-Beta&ssl=11&ssc=14&pln=17&pc=4#code/DYUwLgBAngXBBGB7RoCGA7A3AWAFB4DMBXdAYzAEtF0IBnRAW3AAsL0BzAFWdTAGFERYABMAYqgrAAFAEo4tMACc27CAG88ECBQIQpUGes1aIYZosQB3COhDWAooouKpAchBPEi1zJy4tAL7GiuBEijSuCsocrn5B+LjEZJTUEATIsvJKKkb+EKTUChAAHhAAvHqy5QB8uSamilB19RAhYGE09ExmKty8AkJiEtK+xoH5vKTMeiCGGnn1bR02QsB+9fGBMrJ+xjp6pWVHK8DAhkvhEK4EqKfwqKQA1rF4waGXxXFAA

Related Issues:
None found

Some more info:
I initially found this issue in version 3.9.0-dev.2000215 but found it to also be present in 3.8.0-beta. It it not present in the current stable version (3.7.5).

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFix AvailableA PR has been opened for this issue

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions