Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 313931 - Type of conditions are not checked during the compilation
Summary: Type of conditions are not checked during the compilation
Status: CLOSED FIXED
Alias: None
Product: Acceleo
Classification: Modeling
Component: Core (show other bugs)
Version: 3.0.0   Edit
Hardware: All All
: P3 major
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-21 11:54 EDT by Mikaël Barbero CLA
Modified: 2010-07-06 11:50 EDT (History)
2 users (show)

See Also:


Attachments
Patch (2.44 KB, patch)
2010-07-02 08:55 EDT, Stephane Begaudeau CLA
no flags Details | Diff
Patch v2 (2.46 KB, patch)
2010-07-06 08:22 EDT, Stephane Begaudeau CLA
laurent.goubet: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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