From 71c2e6052990ca62cf3c414d7f77539889e699a5 Mon Sep 17 00:00:00 2001 From: Didier Vojtisek Date: Wed, 11 Apr 2018 12:04:04 +0200 Subject: [PATCH] improve error message (#109) useful because MelangeDerivedStateComputer tends to "randomly" fails (ie. we don't know yet why ;-) ) and a "clean all" may help. The message helps to track and debug the issue. --- .../resource/MelangeDerivedStateComputer.xtend | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/plugins/fr.inria.diverse.melange/src/main/java/fr/inria/diverse/melange/resource/MelangeDerivedStateComputer.xtend b/plugins/fr.inria.diverse.melange/src/main/java/fr/inria/diverse/melange/resource/MelangeDerivedStateComputer.xtend index 409e57a18..8a8b94db3 100644 --- a/plugins/fr.inria.diverse.melange/src/main/java/fr/inria/diverse/melange/resource/MelangeDerivedStateComputer.xtend +++ b/plugins/fr.inria.diverse.melange/src/main/java/fr/inria/diverse/melange/resource/MelangeDerivedStateComputer.xtend @@ -102,9 +102,14 @@ class MelangeDerivedStateComputer extends JvmModelAssociator try { processors.forEach[p | val pTask = Stopwatches.forTask(p.class.simpleName) - pTask.start - p.preProcess(root, preLinkingPhase) - pTask.stop + try { + pTask.start + p.preProcess(root, preLinkingPhase) + } catch (Exception e) { + log.error(" exception in "+p.class.simpleName+ " while processing " + resource.URI+ " (may be temporary, try a clean all) ", e) + } finally { + pTask.stop + } ] // Setting context for non-inferrer helper classes @@ -112,6 +117,10 @@ class MelangeDerivedStateComputer extends JvmModelAssociator helper.setContext(resource.resourceSet) task.stop + + } catch (Exception e) { + log.error(" exception while processing " + resource.URI+ " (may be temporary, try a clean all) ", e) + } finally { // Avoid computing all the derived state when unnecessary, // ie. if we don't have Xbase code in transformations that // relies on the code generated by Melange, we don't need @@ -120,8 +129,6 @@ class MelangeDerivedStateComputer extends JvmModelAssociator super.installDerivedState(resource, preLinkingPhase) else super.installDerivedState(resource, true) - } catch (Exception e) { - log.error("Fatal exception", e) } } }