@@ -18,7 +18,7 @@ import path from 'path';
1818import prettyFormat from 'pretty-format' ;
1919import prettier from 'prettier' ;
2020import traverse from 'babel-traverse' ;
21- import { templateElement , templateLiteral } from 'babel-types' ;
21+ import { templateElement , templateLiteral , file } from 'babel-types' ;
2222
2323export type InlineSnapshot = { |
2424 snapshot : string ,
@@ -195,11 +195,12 @@ export const saveInlineSnapshots = (
195195 const sourceFile = fs . readFileSync ( sourceFilePath , 'utf8' ) ;
196196
197197 const config = prettier . resolveConfig . sync ( sourceFilePath ) ;
198+ const { inferredParser} = prettier . getFileInfo . sync ( sourceFilePath ) ;
198199 const newSourceFile = prettier . format (
199200 sourceFile ,
200201 Object . assign ( { } , config , {
201202 filepath : sourceFilePath ,
202- parser : createParser ( snapshots ) ,
203+ parser : createParser ( snapshots , inferredParser ) ,
203204 } ) ,
204205 ) ;
205206
@@ -217,9 +218,17 @@ const groupSnapshotsByFrame = (snapshots: InlineSnapshot[]) => {
217218 } , { } ) ;
218219} ;
219220
220- const createParser = ( snapshots : InlineSnapshot [ ] ) => ( text , parsers ) => {
221+ const createParser = ( snapshots : InlineSnapshot [ ] , inferredParser : string ) => (
222+ text : string ,
223+ parsers : { [ key : string ] : ( string ) => any } ,
224+ ) => {
221225 const groupedSnapshots = groupSnapshotsByFrame ( snapshots ) ;
222- const ast = parsers . babylon ( text ) ;
226+ let ast = parsers [ inferredParser ] ( text ) ;
227+ // flow uses a 'Program' parent node, babel expects a 'File'.
228+ if ( ast . type !== 'File' ) {
229+ ast = file ( ast , ast . comments , ast . tokens ) ;
230+ delete ast . program . comments ;
231+ }
223232
224233 traverse ( ast , {
225234 CallExpression ( { node : { arguments : args , callee} } ) {
0 commit comments