Added tests for IfStatement with empty then block.
Change-Id: I7054f7bb48116223737bc7ef0adf3a372ec9bcbb
Signed-off-by: William Piers <william.piers@obeo.fr>
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse-expected-ast.txt b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse-expected-ast.txt
new file mode 100644
index 0000000..cd74378
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse-expected-ast.txt
@@ -0,0 +1,12 @@
+
+header position 0..59
+module myModule
+ metamodel http://www.eclipse.org/emf/2002/Ecore (18..56)
+
+ public template test(anEClass : EClass (83..107))
+ [if false (115..120)
+ some text
+ false (122..132) (122..132)
+ [else] (138..138)
+ [/if] (110..143) (109..144)
+ [/template] (61..155) (0..155)
\ No newline at end of file
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse-expected-validation.txt b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse-expected-validation.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse-expected-validation.txt
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse.mtl b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse.mtl
new file mode 100644
index 0000000..1482a32
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElse/emptyElse.mtl
@@ -0,0 +1,6 @@
+[module myModule('http://www.eclipse.org/emf/2002/Ecore')/]
+
+[template public test(anEClass : ecore::EClass)]
+[if (false)]some text
+[else][/if]
+[/template]
\ No newline at end of file
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf-expected-ast.txt b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf-expected-ast.txt
new file mode 100644
index 0000000..75e192c
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf-expected-ast.txt
@@ -0,0 +1,15 @@
+
+header position 0..59
+module myModule
+ metamodel http://www.eclipse.org/emf/2002/Ecore (18..56)
+
+ public template myTemplate(myParam : EClassifier (89..117))
+ [if .equals(.aqlFeatureAccess(myParam, 'name'), '') (127..144)
+ some static text. true (151..168) (146..171)
+ [else]
+ [if .not(.oclIsKindOf(myParam, EClass)) (180..218) (220..220)
+ [else]
+ [.aqlFeatureAccess(myParam, 'eSuperTypes') (232..251)/] true (231..253) (226..256)
+ [/if] (171..261) (-1..-1)
+ [/if] (122..261) (119..262)
+ [/template] (61..273) (0..273)
\ No newline at end of file
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf-expected-validation.txt b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf-expected-validation.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf-expected-validation.txt
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf.mtl b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf.mtl
new file mode 100644
index 0000000..a9f116f
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyElseIf/emptyElseIf.mtl
@@ -0,0 +1,9 @@
+[module myModule('http://www.eclipse.org/emf/2002/Ecore')/]
+
+[template public myTemplate(myParam : ecore::EClassifier)]
+ [if (myParam.name = '')]
+ some static text.
+ [elseif (not myParam.oclIsKindOf(ecore::EClass))][else]
+ [myParam.eSuperTypes/]
+ [/if]
+[/template]
\ No newline at end of file
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen-expected-ast.txt b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen-expected-ast.txt
new file mode 100644
index 0000000..4da6a96
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen-expected-ast.txt
@@ -0,0 +1,10 @@
+
+header position 0..59
+module myModule
+ metamodel http://www.eclipse.org/emf/2002/Ecore (18..56)
+
+ public template test(anEClass : EClass (83..107))
+ [if false (115..120) (122..122)
+ [else] (128..139)
+ [/if] (110..144) (109..145)
+ [/template] (61..156) (0..156)
\ No newline at end of file
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen-expected-validation.txt b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen-expected-validation.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen-expected-validation.txt
diff --git a/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen.mtl b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen.mtl
new file mode 100644
index 0000000..397158c
--- /dev/null
+++ b/acceleo-aql/org.eclipse.acceleo.aql.tests/resources/language/ifStatement/emptyThen/emptyThen.mtl
@@ -0,0 +1,7 @@
+[module myModule('http://www.eclipse.org/emf/2002/Ecore')/]
+
+[template public test(anEClass : ecore::EClass)]
+[if (false)][else]
+some text
+[/if]
+[/template]
\ No newline at end of file
diff --git a/acceleo-aql/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/AcceleoParser.java b/acceleo-aql/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/AcceleoParser.java
index 3ace3c9..b08e81c 100644
--- a/acceleo-aql/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/AcceleoParser.java
+++ b/acceleo-aql/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/parser/AcceleoParser.java
@@ -1939,8 +1939,8 @@
protected ExpressionStatement parseExpressionStatement(boolean inlined) {
final ExpressionStatement res;
- if (!text.startsWith(END_BLOCK_PREFIX, currentPosition) && text.startsWith(EXPRESSION_STATEMENT_START,
- currentPosition)) {
+ if (!text.startsWith(END_BLOCK_PREFIX, currentPosition) && !text.startsWith(IF_ELSE, currentPosition)
+ && text.startsWith(EXPRESSION_STATEMENT_START, currentPosition)) {
final int startPosition = currentPosition;
currentPosition += EXPRESSION_STATEMENT_START.length();
skipSpaces();