changeset 18781:941761f6b736

Truffle-DSL: fixed thrown exception messages should provide more contextual information. (reported by Benoit Daloze)
author Christian Humer <christian.humer@gmail.com>
date Mon, 05 Jan 2015 20:23:22 +0100
parents f4d78e4a878d
children 3ea386a1036f
files graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/AnnotationProcessor.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Template.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java
diffstat 4 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/AnnotationProcessor.java	Mon Jan 05 20:23:22 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/AnnotationProcessor.java	Mon Jan 05 20:23:22 2015 +0100
@@ -77,7 +77,12 @@
             context.registerTemplate(type, model);
 
             if (model != null) {
-                CodeTypeElement unit = factory.create(ProcessorContext.getInstance(), model);
+                CodeTypeElement unit;
+                try {
+                    unit = factory.create(ProcessorContext.getInstance(), model);
+                } catch (Throwable e) {
+                    throw new RuntimeException(String.format("Failed to write code for %s. Parserdump:%s.", ElementUtils.getQualifiedName(type), model.dump()));
+                }
                 if (unit == null) {
                     return;
                 }
@@ -95,5 +100,4 @@
             }
         }
     }
-
 }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java	Mon Jan 05 20:23:22 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java	Mon Jan 05 20:23:22 2015 +0100
@@ -412,6 +412,7 @@
         return typeSystem;
     }
 
+    @Override
     public String dump() {
         return dump(0);
     }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Template.java	Mon Jan 05 20:23:22 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Template.java	Mon Jan 05 20:23:22 2015 +0100
@@ -57,6 +57,10 @@
         return templateType;
     }
 
+    public String dump() {
+        return toString();
+    }
+
     @Override
     protected List<MessageContainer> findChildContainers() {
         return Collections.emptyList();
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java	Mon Jan 05 20:23:22 2015 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java	Mon Jan 05 20:23:22 2015 +0100
@@ -92,7 +92,14 @@
                 enclosedNodes.add(enclosedChild);
             }
         }
-        NodeData node = parseNode(rootType);
+        NodeData node;
+        try {
+            node = parseNode(rootType);
+        } catch (CompileErrorException e) {
+            throw e;
+        } catch (Throwable e) {
+            throw new RuntimeException(String.format("Parsing of Node %s failed.", ElementUtils.getQualifiedName(rootType)), e);
+        }
         if (node == null && !enclosedNodes.isEmpty()) {
             node = new NodeData(context, rootType);
         }