| Summary: | Type of conditions are not checked during the compilation | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Modeling] Acceleo | Reporter: | Mikaël Barbero <mikael.barbero> | ||||||
| Component: | Core | Assignee: | Project Inbox <acceleo-inbox> | ||||||
| Status: | CLOSED FIXED | QA Contact: | |||||||
| Severity: | major | ||||||||
| Priority: | P3 | CC: | laurent.goubet, mikael.barbero | ||||||
| Version: | 3.0.0 | ||||||||
| Target Milestone: | --- | ||||||||
| Hardware: | All | ||||||||
| OS: | All | ||||||||
| Whiteboard: | |||||||||
| Attachments: |
|
||||||||
Created attachment 173300 [details]
Patch
In a template, if the condition of the "if" is not a boolean, an error appears in the editor.
Created attachment 173535 [details]
Patch v2
Refactoring of the previous patch.
Patch applied on HEAD, will also be available on maintenance Forgot to close |
Hi The type of conditions are not checked during the compilation and it produces cryptic errors @ runtime. For instance, simple [template public gen(e : Class)] [if ('')] [/if] [/template] or [template public gen(e : Class)] [if (ownedElement)] [/if] [/template] are Ok @ compile-time but produces this stacktrace (it did not found any writers in its List): Exception in thread "main" java.util.NoSuchElementException at java.util.LinkedList.getLast(LinkedList.java:122) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationContext.append(AcceleoEvaluationContext.java:167) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.append(AcceleoEvaluationVisitor.java:217) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.delegateAppend(AcceleoEvaluationVisitor.java:1091) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:929) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.java:771) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1456) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:902) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluationVisitor.java:822) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1483) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:902) at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.java:771) Hope this helps ;) Regards, Mikael