]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/PscIde.js
Version 2.4.2
[github/fretlink/purs-loader.git] / src / PscIde.js
index 8a0e823c91ff22b74a81edf95cc2d959cd7f08de..bf92b3860ee502532ee315de68e9f38323cfea0f 100644 (file)
@@ -63,15 +63,28 @@ function connect(psModule) {
 
   const serverArgs = dargs(Object.assign({
     outputDirectory: options.output,
-    "_": options.src
+    '_': options.src
   }, options.pscIdeServerArgs))
 
   debug('attempting to start psc-ide-server', serverArgs)
 
   const ideServer = cache.ideServer = spawn('psc-ide-server', serverArgs)
+
+  ideServer.stdout.on('data', data => {
+    debug('psc-ide-server stdout: %s', data.toString());
+  });
+
   ideServer.stderr.on('data', data => {
-    debug(data.toString())
-  })
+    debug('psc-ide-server stderr: %s', data.toString());
+  });
+
+  ideServer.on('error', error => {
+    debug('psc-ide-server error: %o', error);
+  });
+
+  ideServer.on('close', (code, signal) => {
+    debug('psc-ide-server close: %s %s', code, signal);
+  });
 
   return retryPromise((retry, number) => {
     return connect_().catch(error => {
@@ -141,16 +154,18 @@ function rebuild(psModule) {
       .then(compileMessages => {
         if (res.resultType === 'error') {
           if (res.result.some(item => {
+            const isModuleNotFound = item.errorCode === 'ModuleNotFound';
+
             const isUnknownModule = item.errorCode === 'UnknownModule';
 
             const isUnknownModuleImport = item.errorCode === 'UnknownName' && /Unknown module/.test(item.message);
 
-            return isUnknownModule || isUnknownModuleImport;
+            return isModuleNotFound || isUnknownModule || isUnknownModuleImport;
           })) {
             debug('unknown module, attempting full recompile')
             return Psc.compile(psModule)
               .then(() => PsModuleMap.makeMap(options.src).then(map => {
-                debug('rebuilt module map');
+                debug('rebuilt module map after unknown module forced a recompile');
                 cache.psModuleMap = map;
               }))
               .then(() => request({ command: 'load' }))
@@ -172,6 +187,8 @@ function rebuild(psModule) {
       })
     })
 
+    debug('psc-ide-client stdin: %o', body);
+
     ideClient.stdin.write(JSON.stringify(body))
     ideClient.stdin.write('\n')
   })