File tree Expand file tree Collapse file tree 3 files changed +11
-6
lines changed Expand file tree Collapse file tree 3 files changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -672,6 +672,9 @@ namespace ts {
672
672
bindJSDoc ( node ) ;
673
673
return ;
674
674
}
675
+ if ( node . kind >= SyntaxKind . FirstStatement && node . kind <= SyntaxKind . LastStatement ) {
676
+ node . flowNode = currentFlow ;
677
+ }
675
678
switch ( node . kind ) {
676
679
case SyntaxKind . WhileStatement :
677
680
bindWhileStatement ( < WhileStatement > node ) ;
Original file line number Diff line number Diff line change @@ -17057,11 +17057,7 @@ namespace ts {
17057
17057
// on empty arrays are possible without implicit any errors and new element types can be inferred without
17058
17058
// type mismatch errors.
17059
17059
const resultType = getObjectFlags(evolvedType) & ObjectFlags.EvolvingArray && isEvolvingArrayOperationTarget(reference) ? autoArrayType : finalizeEvolvingArrayType(evolvedType);
17060
- if (resultType === unreachableNeverType) {
17061
- error(reference, Diagnostics.Unreachable_code_detected);
17062
- return declaredType;
17063
- }
17064
- if (reference.parent && reference.parent.kind === SyntaxKind.NonNullExpression && getTypeWithFacts(resultType, TypeFacts.NEUndefinedOrNull).flags & TypeFlags.Never) {
17060
+ if (resultType === unreachableNeverType|| reference.parent && reference.parent.kind === SyntaxKind.NonNullExpression && getTypeWithFacts(resultType, TypeFacts.NEUndefinedOrNull).flags & TypeFlags.Never) {
17065
17061
return declaredType;
17066
17062
}
17067
17063
return resultType;
@@ -30533,6 +30529,10 @@ namespace ts {
30533
30529
cancellationToken.throwIfCancellationRequested();
30534
30530
}
30535
30531
}
30532
+ if (kind >= SyntaxKind.FirstStatement && kind <= SyntaxKind.LastStatement &&
30533
+ !compilerOptions.allowUnreachableCode && node.flowNode && !isReachableFlowNode(node.flowNode)) {
30534
+ errorOrSuggestion(compilerOptions.allowUnreachableCode === false, node, Diagnostics.Unreachable_code_detected);
30535
+ }
30536
30536
30537
30537
switch (kind) {
30538
30538
case SyntaxKind.TypeParameter:
Original file line number Diff line number Diff line change @@ -363,8 +363,8 @@ namespace ts {
363
363
SemicolonClassElement ,
364
364
// Element
365
365
Block ,
366
- VariableStatement ,
367
366
EmptyStatement ,
367
+ VariableStatement ,
368
368
ExpressionStatement ,
369
369
IfStatement ,
370
370
DoStatement ,
@@ -514,6 +514,8 @@ namespace ts {
514
514
LastTemplateToken = TemplateTail ,
515
515
FirstBinaryOperator = LessThanToken ,
516
516
LastBinaryOperator = CaretEqualsToken ,
517
+ FirstStatement = VariableStatement ,
518
+ LastStatement = DebuggerStatement ,
517
519
FirstNode = QualifiedName ,
518
520
FirstJSDocNode = JSDocTypeExpression ,
519
521
LastJSDocNode = JSDocPropertyTag ,
You can’t perform that action at this time.
0 commit comments