@@ -8,50 +8,50 @@ const astTypes = require('../helpers/ast-types.js');
88const traverseTypes = {
99 [ astTypes . PROGRAM ] ( ast , visitor ) {
1010 ast . body . forEach ( ( child ) => {
11- traverse ( child , visitor ) ;
11+ traverse ( child , visitor , ast ) ;
1212 } ) ;
1313 } ,
1414 [ astTypes . EXPRESSION_STATEMENT ] ( ast , visitor ) {
15- traverse ( ast . expression , visitor ) ;
15+ traverse ( ast . expression , visitor , ast ) ;
1616 } ,
1717 [ astTypes . LITERAL ] ( ast , visitor ) { } ,
1818 [ astTypes . BINARY_EXPRESSION ] ( ast , visitor ) {
19- traverse ( ast . left , visitor ) ;
20- traverse ( ast . right , visitor ) ;
19+ traverse ( ast . left , visitor , ast ) ;
20+ traverse ( ast . right , visitor , ast ) ;
2121 } ,
2222 [ astTypes . UNARY_EXPRESSION ] ( ast , visitor ) {
23- traverse ( ast . argument , visitor ) ;
23+ traverse ( ast . argument , visitor , ast ) ;
2424 } ,
2525 [ astTypes . LOGICAL_EXPRESSION ] ( ast , visitor ) {
26- traverse ( ast . left , visitor ) ;
27- traverse ( ast . right , visitor ) ;
26+ traverse ( ast . left , visitor , ast ) ;
27+ traverse ( ast . right , visitor , ast ) ;
2828 } ,
2929 [ astTypes . IDENTIFIER ] ( ast , visitor ) { } ,
3030 [ astTypes . SEQUENCE_EXPRESSION ] ( ast , visitor ) {
3131 ast . expressions . forEach ( ( child ) => {
32- traverse ( child , visitor ) ;
32+ traverse ( child , visitor , ast ) ;
3333 } ) ;
3434 } ,
3535 [ astTypes . CONDITIONAL_EXPRESSION ] ( ast , visitor ) {
36- traverse ( ast . test , visitor ) ;
37- traverse ( ast . consequent , visitor ) ;
38- traverse ( ast . alternate , visitor ) ;
36+ traverse ( ast . test , visitor , ast ) ;
37+ traverse ( ast . consequent , visitor , ast ) ;
38+ traverse ( ast . alternate , visitor , ast ) ;
3939 } ,
4040 [ astTypes . MEMBER_EXPRESSION ] ( ast , visitor ) {
41- traverse ( ast . object , visitor ) ;
42- traverse ( ast . property , visitor ) ;
41+ traverse ( ast . object , visitor , ast ) ;
42+ traverse ( ast . property , visitor , ast ) ;
4343 } ,
4444 [ astTypes . UPDATE_EXPRESSION ] ( ast , visitor ) {
45- traverse ( ast . argument , visitor ) ;
45+ traverse ( ast . argument , visitor , ast ) ;
4646 } ,
4747} ;
4848
49- function traverse ( ast , visitor ) {
50- visitor ( ast ) ;
49+ function traverse ( ast , visitor , parent = null ) {
50+ visitor ( ast , parent ) ;
5151 if ( ! traverseTypes [ ast . type ] ) {
5252 throw new Error ( 'Unexpected ast.type: ' + ast . type ) ;
5353 }
54- return traverseTypes [ ast . type ] ( ast , visitor ) ;
54+ return traverseTypes [ ast . type ] ( ast , visitor , parent ) ;
5555}
5656
5757module . exports = traverse ;
0 commit comments