@@ -15,7 +15,8 @@ const HarmonyModulesHelpers = require("./HarmonyModulesHelpers");
1515function makeHarmonyModule ( module , loc ) {
1616 if ( ! module . meta . harmonyModule ) {
1717 const dep = new HarmonyCompatiblilityDependency ( module ) ;
18- dep . loc = loc ;
18+ dep . loc = Object . create ( loc ) ;
19+ dep . loc . index = - 2 ;
1920 module . addDependency ( dep ) ;
2021 module . meta . harmonyModule = true ;
2122 module . strict = true ;
@@ -27,27 +28,30 @@ module.exports = class HarmonyExportDependencyParserPlugin {
2728 parser . plugin ( "export" , statement => {
2829 const dep = new HarmonyExportHeaderDependency ( statement . declaration && statement . declaration . range , statement . range ) ;
2930 makeHarmonyModule ( parser . state . module , statement . loc ) ;
30- dep . loc = statement . loc ;
31+ dep . loc = Object . create ( statement . loc ) ;
32+ dep . loc . index = - 1 ;
3133 parser . state . current . addDependency ( dep ) ;
3234 return true ;
3335 } ) ;
3436 parser . plugin ( "export import" , ( statement , source ) => {
3537 const dep = new HarmonyImportDependency ( source , HarmonyModulesHelpers . getNewModuleVar ( parser . state , source ) , statement . range ) ;
3638 makeHarmonyModule ( parser . state . module , statement . loc ) ;
37- dep . loc = statement . loc ;
39+ dep . loc = Object . create ( statement . loc ) ;
40+ dep . loc . index = - 1 ;
3841 parser . state . current . addDependency ( dep ) ;
3942 parser . state . lastHarmoryImport = dep ;
4043 return true ;
4144 } ) ;
4245 parser . plugin ( "export expression" , ( statement , expr ) => {
4346 const dep = new HarmonyExportExpressionDependency ( parser . state . module , expr . range , statement . range ) ;
44- dep . loc = statement . loc ;
47+ dep . loc = Object . create ( statement . loc ) ;
48+ dep . loc . index = - 1 ;
4549 parser . state . current . addDependency ( dep ) ;
4650 parser . state . module . strict = true ;
4751 return true ;
4852 } ) ;
4953 parser . plugin ( "export declaration" , statement => { } ) ;
50- parser . plugin ( "export specifier" , ( statement , id , name ) => {
54+ parser . plugin ( "export specifier" , ( statement , id , name , idx ) => {
5155 const rename = parser . scope . renames [ `$${ id } ` ] ;
5256 let dep ;
5357 if ( rename === "imported var" ) {
@@ -58,13 +62,15 @@ module.exports = class HarmonyExportDependencyParserPlugin {
5862 const hoisted = statement . declaration && isHoistedStatement ( statement . declaration ) ;
5963 dep = new HarmonyExportSpecifierDependency ( parser . state . module , id , name , ! immutable || hoisted ? - 0.5 : ( statement . range [ 1 ] + 0.5 ) , immutable ) ;
6064 }
61- dep . loc = statement . loc ;
65+ dep . loc = Object . create ( statement . loc ) ;
66+ dep . loc . index = idx ;
6267 parser . state . current . addDependency ( dep ) ;
6368 return true ;
6469 } ) ;
65- parser . plugin ( "export import specifier" , ( statement , source , id , name ) => {
70+ parser . plugin ( "export import specifier" , ( statement , source , id , name , idx ) => {
6671 const dep = new HarmonyExportImportedSpecifierDependency ( parser . state . module , parser . state . lastHarmoryImport , HarmonyModulesHelpers . getModuleVar ( parser . state , source ) , id , name ) ;
67- dep . loc = statement . loc ;
72+ dep . loc = Object . create ( statement . loc ) ;
73+ dep . loc . index = idx ;
6874 parser . state . current . addDependency ( dep ) ;
6975 return true ;
7076 } ) ;
0 commit comments