@@ -733,7 +733,7 @@ namespace ts {
733733 decl . modifiers ,
734734 decl . importClause ,
735735 rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) ,
736- getResolutionModeOverrideForClause ( decl . assertClause ) ? decl . assertClause : undefined
736+ getResolutionModeOverrideForClauseInNightly ( decl . assertClause )
737737 ) ;
738738 }
739739 // The `importClause` visibility corresponds to the default's visibility.
@@ -745,7 +745,7 @@ namespace ts {
745745 decl . importClause . isTypeOnly ,
746746 visibleDefaultBinding ,
747747 /*namedBindings*/ undefined ,
748- ) , rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) , getResolutionModeOverrideForClause ( decl . assertClause ) ? decl . assertClause : undefined ) ;
748+ ) , rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) , getResolutionModeOverrideForClauseInNightly ( decl . assertClause ) ) ;
749749 }
750750 if ( decl . importClause . namedBindings . kind === SyntaxKind . NamespaceImport ) {
751751 // Namespace import (optionally with visible default)
@@ -755,7 +755,7 @@ namespace ts {
755755 decl . importClause . isTypeOnly ,
756756 visibleDefaultBinding ,
757757 namedBindings ,
758- ) , rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) , getResolutionModeOverrideForClause ( decl . assertClause ) ? decl . assertClause : undefined ) : undefined ;
758+ ) , rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) , getResolutionModeOverrideForClauseInNightly ( decl . assertClause ) ) : undefined ;
759759 }
760760 // Named imports (optionally with visible default)
761761 const bindingList = mapDefined ( decl . importClause . namedBindings . elements , b => resolver . isDeclarationVisible ( b ) ? b : undefined ) ;
@@ -771,7 +771,7 @@ namespace ts {
771771 bindingList && bindingList . length ? factory . updateNamedImports ( decl . importClause . namedBindings , bindingList ) : undefined ,
772772 ) ,
773773 rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) ,
774- getResolutionModeOverrideForClause ( decl . assertClause ) ? decl . assertClause : undefined
774+ getResolutionModeOverrideForClauseInNightly ( decl . assertClause )
775775 ) ;
776776 }
777777 // Augmentation of export depends on import
@@ -782,12 +782,23 @@ namespace ts {
782782 decl . modifiers ,
783783 /*importClause*/ undefined ,
784784 rewriteModuleSpecifier ( decl , decl . moduleSpecifier ) ,
785- getResolutionModeOverrideForClause ( decl . assertClause ) ? decl . assertClause : undefined
785+ getResolutionModeOverrideForClauseInNightly ( decl . assertClause )
786786 ) ;
787787 }
788788 // Nothing visible
789789 }
790790
791+ function getResolutionModeOverrideForClauseInNightly ( assertClause : AssertClause | undefined ) {
792+ const mode = getResolutionModeOverrideForClause ( assertClause ) ;
793+ if ( mode !== undefined ) {
794+ if ( ! isNightly ( ) ) {
795+ context . addDiagnostic ( createDiagnosticForNode ( assertClause ! , Diagnostics . Resolution_mode_assertions_are_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next ) ) ;
796+ }
797+ return assertClause ;
798+ }
799+ return undefined ;
800+ }
801+
791802 function transformAndReplaceLatePaintedStatements ( statements : NodeArray < Statement > ) : NodeArray < Statement > {
792803 // This is a `while` loop because `handleSymbolAccessibilityError` can see additional import aliases marked as visible during
793804 // error handling which must now be included in the output and themselves checked for errors.
0 commit comments