@@ -147,6 +147,7 @@ const _super = (function (geti, seti) {
147147 let startLexicalEnvironment : ( ) => void ;
148148 let endLexicalEnvironment : ( ) => Statement [ ] ;
149149 let getNodeEmitFlags : ( node : Node ) => NodeEmitFlags ;
150+ let setNodeEmitFlags : ( node : Node , flags : NodeEmitFlags ) => void ;
150151 let isExpressionSubstitutionEnabled : ( node : Node ) => boolean ;
151152 let isEmitNotificationEnabled : ( node : Node ) => boolean ;
152153 let expressionSubstitution : ( node : Expression ) => Expression ;
@@ -209,6 +210,7 @@ const _super = (function (geti, seti) {
209210 startLexicalEnvironment = undefined ;
210211 endLexicalEnvironment = undefined ;
211212 getNodeEmitFlags = undefined ;
213+ setNodeEmitFlags = undefined ;
212214 isExpressionSubstitutionEnabled = undefined ;
213215 isEmitNotificationEnabled = undefined ;
214216 expressionSubstitution = undefined ;
@@ -230,6 +232,7 @@ const _super = (function (geti, seti) {
230232 startLexicalEnvironment = context . startLexicalEnvironment ;
231233 endLexicalEnvironment = context . endLexicalEnvironment ;
232234 getNodeEmitFlags = context . getNodeEmitFlags ;
235+ setNodeEmitFlags = context . setNodeEmitFlags ;
233236 isExpressionSubstitutionEnabled = context . isExpressionSubstitutionEnabled ;
234237 isEmitNotificationEnabled = context . isEmitNotificationEnabled ;
235238 expressionSubstitution = context . expressionSubstitution ;
@@ -1968,10 +1971,13 @@ const _super = (function (geti, seti) {
19681971 }
19691972
19701973 function tryEmitSubstitute ( node : Node , substitution : ( node : Node ) => Node ) {
1971- const substitute = substitution ? substitution ( node ) : node ;
1972- if ( substitute && substitute !== node ) {
1973- emitWorker ( substitute ) ;
1974- return true ;
1974+ if ( substitution && ( getNodeEmitFlags ( node ) & NodeEmitFlags . NoSubstitution ) === 0 ) {
1975+ const substitute = substitution ( node ) ;
1976+ if ( substitute !== node ) {
1977+ setNodeEmitFlags ( substitute , NodeEmitFlags . NoSubstitution ) ;
1978+ emitWorker ( substitute ) ;
1979+ return true ;
1980+ }
19751981 }
19761982
19771983 return false ;
0 commit comments