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 {
672672 bindJSDoc ( node ) ;
673673 return ;
674674 }
675+ if ( node . kind >= SyntaxKind . FirstStatement && node . kind <= SyntaxKind . LastStatement ) {
676+ node . flowNode = currentFlow ;
677+ }
675678 switch ( node . kind ) {
676679 case SyntaxKind . WhileStatement :
677680 bindWhileStatement ( < WhileStatement > node ) ;
Original file line number Diff line number Diff line change @@ -17057,11 +17057,7 @@ namespace ts {
1705717057 // on empty arrays are possible without implicit any errors and new element types can be inferred without
1705817058 // type mismatch errors.
1705917059 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) {
1706517061 return declaredType;
1706617062 }
1706717063 return resultType;
@@ -30533,6 +30529,10 @@ namespace ts {
3053330529 cancellationToken.throwIfCancellationRequested();
3053430530 }
3053530531 }
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+ }
3053630536
3053730537 switch (kind) {
3053830538 case SyntaxKind.TypeParameter:
Original file line number Diff line number Diff line change @@ -363,8 +363,8 @@ namespace ts {
363363 SemicolonClassElement ,
364364 // Element
365365 Block ,
366- VariableStatement ,
367366 EmptyStatement ,
367+ VariableStatement ,
368368 ExpressionStatement ,
369369 IfStatement ,
370370 DoStatement ,
@@ -514,6 +514,8 @@ namespace ts {
514514 LastTemplateToken = TemplateTail ,
515515 FirstBinaryOperator = LessThanToken ,
516516 LastBinaryOperator = CaretEqualsToken ,
517+ FirstStatement = VariableStatement ,
518+ LastStatement = DebuggerStatement ,
517519 FirstNode = QualifiedName ,
518520 FirstJSDocNode = JSDocTypeExpression ,
519521 LastJSDocNode = JSDocPropertyTag ,
You can’t perform that action at this time.
0 commit comments