@@ -400,6 +400,46 @@ namespace Foo {
400400 }
401401 } ) . outputText ;
402402 } ) ;
403+
404+ // https://github.com/Microsoft/TypeScript/issues/24709
405+ testBaseline ( "issue24709" , ( ) => {
406+ const fs = vfs . createFromFileSystem ( Harness . IO , /*caseSensitive*/ true ) ;
407+ const transformed = transform ( createSourceFile ( "source.ts" , "class X { echo(x: string) { return x; } }" , ScriptTarget . ES3 ) , [ transformSourceFile ] ) ;
408+ const transformedSourceFile = transformed . transformed [ 0 ] ;
409+ transformed . dispose ( ) ;
410+ const host = new fakes . CompilerHost ( fs ) ;
411+ host . getSourceFile = ( ) => transformedSourceFile ;
412+ const program = createProgram ( [ "source.ts" ] , {
413+ target : ScriptTarget . ES3 ,
414+ module : ModuleKind . None ,
415+ noLib : true
416+ } , host ) ;
417+ program . emit ( transformedSourceFile , ( _p , s , b ) => host . writeFile ( "source.js" , s , b ) ) ;
418+ return host . readFile ( "source.js" ) ! . toString ( ) ;
419+
420+ function transformSourceFile ( context : TransformationContext ) {
421+ const visitor : Visitor = ( node ) => {
422+ if ( isMethodDeclaration ( node ) ) {
423+ return updateMethod (
424+ node ,
425+ node . decorators ,
426+ node . modifiers ,
427+ node . asteriskToken ,
428+ createIdentifier ( "foobar" ) ,
429+ node . questionToken ,
430+ node . typeParameters ,
431+ node . parameters ,
432+ node . type ,
433+ node . body ,
434+ ) ;
435+ }
436+ return visitEachChild ( node , visitor , context ) ;
437+ } ;
438+ return ( node : SourceFile ) => visitNode ( node , visitor ) ;
439+ }
440+
441+ } ) ;
442+
403443 } ) ;
404444}
405445
0 commit comments