Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 313931

Summary: Type of conditions are not checked during the compilation
Product: [Modeling] Acceleo Reporter: Mikaël Barbero <mikael.barbero>
Component: CoreAssignee: 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:
Description Flags
Patch
none
Patch v2 laurent.goubet: iplog+

Description Mikaël Barbero CLA 2010-05-21 11:54:38 EDT
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
Comment 1 Stephane Begaudeau CLA 2010-07-02 08:55:08 EDT
Created attachment 173300 [details]
Patch

In a template, if the condition of the "if" is not a boolean, an error appears in the editor.
Comment 2 Stephane Begaudeau CLA 2010-07-06 08:22:31 EDT
Created attachment 173535 [details]
Patch v2

Refactoring of the previous patch.
Comment 3 Laurent Goubet CLA 2010-07-06 11:50:07 EDT
Patch applied on HEAD, will also be available on maintenance
Comment 4 Laurent Goubet CLA 2010-07-06 11:50:30 EDT
Forgot to close