]> git.immae.eu Git - github/fretlink/purs-loader.git/commitdiff
Always resolve on psc-ide rebuild failure
authoreric thul <thul.eric@gmail.com>
Sat, 19 Nov 2016 17:26:58 +0000 (12:26 -0500)
committereric thul <thul.eric@gmail.com>
Sat, 19 Nov 2016 17:45:11 +0000 (12:45 -0500)
The objective of enabling psc-ide is to obtain feedback immediately from
the PureScript compiler. When the loader triggers an error to webpack,
the bundle is invalidated and dependencies of the PureScript file that
caused the error will be passed through the loader on the next
successful rebuild.

However, this behaviour adds time to the feedback loop. In order to
reduce the time of the PureScript compiler feedback loop when in
development, this commit always resolves the rebuild process with a
success. Errors and warnings are still emitted, but the webpack bundle
is not invalidated. This means that the loader will only be run for the
current file being editted and the developer gets immediate feedback on
success or failure when psc-ide is enabled.

Resolves #76

src/PscIde.js

index c9d0cfa5b5fc143bc3d8d195120f1ecb0c2ecfa5..b0b56a83887385a2382c0cdffda17b5a045d33f0 100644 (file)
@@ -77,10 +77,7 @@ function connect(psModule) {
       if (!cache.ideServer && number === 9) {
         debug(error)
 
-        console.log(
-          'failed to connect to or start psc-ide-server, ' +
-          'full compilation will occur on rebuild'
-        )
+        console.warn('Failed to connect to or start psc-ide-server. A full compilation will occur on rebuild');
 
         return Promise.resolve(psModule)
       }
@@ -133,9 +130,7 @@ function rebuild(psModule) {
       }
 
       if (res && !Array.isArray(res.result)) {
-        return res.resultType === 'success'
-               ? resolve(psModule)
-               : reject(new Error('psc-ide rebuild failed'))
+        return resolve(psModule);
       }
 
       Promise.map(res.result, (item, i) => {
@@ -153,10 +148,10 @@ function rebuild(psModule) {
               }))
               .then(() => request({ command: 'load' }))
               .then(resolve)
-              .catch(() => reject(new Error('psc-ide rebuild failed')))
+              .catch(() => resolve(psModule))
           }
           cache.errors = compileMessages.join('\n')
-          reject(new Error('psc-ide rebuild failed'))
+          resolve(psModule);
         } else {
           cache.warnings = compileMessages.join('\n')
           resolve(psModule)