warnings: true,
watch: false,
output: 'output',
- src: []
+ src: [],
+ rewriteRules: {}
}, loaderOptions, {
src: srcOption
});
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;
const resolved = utils.resolvePursModule({
baseModulePath,
baseModuleName,
+ rewriteRules: options.rewriteRules,
targetModuleName
});
this.addDependency(resolved);
modules.push(desc);
}
- CACHE_VAR.errors.push(Object.assign(new Error(pscMessage), { modules }));
+ CACHE_VAR.errors.push(new utils.PscError(pscMessage, modules));
}
}
}