]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/index.js
Watch foreign modules on compilation error
[github/fretlink/purs-loader.git] / src / index.js
index 8a2e468229d95b405bd740189044bc04fc16c1d9..be809c685ac5959cc011388259cea1026578102c 100644 (file)
@@ -195,13 +195,26 @@ module.exports = function purescriptLoader(source, map) {
         const matchErrorsSeparator = /\n(?=Error)/;
         const errors = pscMessage.split(matchErrorsSeparator);
         for (const error of errors) {
-          const matchErrLocation = /at (.+\.purs) line (\d+), column (\d+) - line (\d+), column (\d+)/;
+          const matchErrLocation = /at (.+\.purs):(\d+):(\d+) - (\d+):(\d+) \(line \2, column \3 - line \4, column \5\)/;
           const [, filename] = matchErrLocation.exec(error) || [];
           if (!filename) continue;
 
           const baseModulePath = path.join(this.rootContext, filename);
           this.addDependency(baseModulePath);
 
+          const foreignModulesErrorCodes = [
+            'ErrorParsingFFIModule',
+            'MissingFFIImplementations',
+            'UnusedFFIImplementations',
+            'MissingFFIModule'
+          ];
+          for (const code of foreignModulesErrorCodes) {
+            if (error.includes(code)) {
+              const resolved = utils.resolveForeignModule(baseModulePath);
+              this.addDependency(resolved);
+            }
+          }
+
           const matchErrModuleName = /in module ((?:\w+\.)*\w+)/;
           const [, baseModuleName] = matchErrModuleName.exec(error) || [];
           if (!baseModuleName) continue;