Added multi line TestStatement in inlined Block tests.

Change-Id: I48b884db935b741e30bbb379fe483425932e4e74
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java
index 9ab9992..561b8e1 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java
@@ -110,6 +110,11 @@
 	private final IQualifiedNameLookupEngine lookupEngine;
 
 	/**
+	 * Tells if the current {@link Block} is {@link Block#isInlined() inlined}.
+	 */
+	private boolean inlinedBlock;
+
+	/**
 	 * Constructor.
 	 * 
 	 * @param other
@@ -205,8 +210,10 @@
 	 */
 	protected void pushIndentation(Block block, String indentation) {
 		if (block.isInlined()) {
+			inlinedBlock = true;
 			indentationStack.addLast("");
 		} else {
+			inlinedBlock = false;
 			indentationStack.addLast(indentation);
 		}
 	}
@@ -284,10 +291,14 @@
 		final String res;
 
 		final String indentation;
-		if (lastLineOfLastStatement.isEmpty()) {
-			indentation = peekIndentation();
+		if (inlinedBlock) {
+			indentation = "";
 		} else {
-			indentation = lastLineOfLastStatement;
+			if (lastLineOfLastStatement.isEmpty()) {
+				indentation = peekIndentation();
+			} else {
+				indentation = lastLineOfLastStatement;
+			}
 		}
 		// TODO replace all possible new lines with the right one
 		String expressionValue = toString(doSwitch(expressionStatement.getExpression()));
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/generated/anydsl.txt-expected.txt b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/generated/anydsl.txt-expected.txt
new file mode 100644
index 0000000..fecf946
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/generated/anydsl.txt-expected.txt
@@ -0,0 +1,3 @@
+some text anydsl.txt
+
+last ExpressionStatement line some text
\ No newline at end of file
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-ast.txt b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-ast.txt
new file mode 100644
index 0000000..4733332
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-ast.txt
@@ -0,0 +1,17 @@
+
+header position 0..59
+module myModule
+  metamodel http://www.eclipse.org/emf/2002/Ecore (18..56)
+  [comment @main  (70..76) /] (61..78)
+  
+  public template myTemplate(myParam : EPackage (107..132))
+  @main
+    [file url .add(.aqlFeatureAccess(myParam, 'name'), '.txt') (144..165) mode overwrite
+      some text  (178..188)
+      [.add(.add(.aqlFeatureAccess(myParam, 'name'), '.txt'), '
+
+last ExpressionStatement line') (189..248)/] (188..250)
+       some text (250..260) (178..260)
+    [/file] (137..267)
+     (newLineNeeded) (267..268) (134..268)
+  [/template] (79..279) (0..279)
\ No newline at end of file
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-runtimeMessages.txt b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-runtimeMessages.txt
new file mode 100644
index 0000000..0be6fd3
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-runtimeMessages.txt
@@ -0,0 +1 @@
+ (null 0 0) null[]
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-validation.txt b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-validation.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock-expected-validation.txt
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.mtl b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.mtl
new file mode 100644
index 0000000..2a5e578
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.mtl
@@ -0,0 +1,6 @@
+[module myModule('http://www.eclipse.org/emf/2002/Ecore')/]
+
+[comment @main /]
+[template public myTemplate(myParam : ecore::EPackage)]
+  [file (myParam.name + '.txt', overwrite)]some text [myParam.name + '.txt' + '\n\nlast ExpressionStatement line'/] some text[/file]
+[/template]
\ No newline at end of file
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.xmi b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.xmi
new file mode 100644
index 0000000..ad60384
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.xmi
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="anydsl" nsURI="http://www.eclipse.org/acceleo/anydsl" nsPrefix="anydsl">
+  <eClassifiers xsi:type="ecore:EClass" name="World">
+    <eAnnotations source="http://www.obeo.fr/dsl/dnc/archetype">
+      <details key="archetype" value="MomentInterval"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="companies" upperBound="-1"
+        eType="#//Company" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="foods" upperBound="-1"
+        eType="#//Food" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sources" upperBound="-1"
+        eType="#//Source" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MultiNamedElement" abstract="true" interface="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" upperBound="-1" eType="#//SingleString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" interface="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="#//SingleString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Producer" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="adress" eType="#//Adress"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="company" eType="#//Company"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="foods" upperBound="-1"
+        eType="#//Food" eOpposite="#//Food/producers"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Adress">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" eType="#//CountryData"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Company" abstract="true" interface="true"
+      eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="adress" eType="#//Adress"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="world" eType="#//World"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ProductionCompany" eSuperTypes="#//Company">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="producers" upperBound="-1"
+        eType="#//Producer" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Restaurant" eSuperTypes="#//Company">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="chefs" upperBound="-1"
+        eType="#//Chef" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="menu" upperBound="-1" eType="#//EStringToRecipeMap"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Chef" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="adress" eType="#//Adress"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="recipes" upperBound="-1"
+        eType="#//Recipe" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Recipe" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ingredients" upperBound="-1"
+        eType="#//Food"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Food" eSuperTypes="#//NamedElement">
+    <eOperations name="ripen" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eParameters name="color" eType="#//Color"/>
+    </eOperations>
+    <eOperations name="preferredColor" eType="#//Color"/>
+    <eOperations name="newFood" eType="#//Food"/>
+    <eOperations name="setColor">
+      <eParameters name="food" eType="#//Food"/>
+      <eParameters name="newColor" eType="#//Color"/>
+    </eOperations>
+    <eOperations name="setCaliber">
+      <eParameters name="food" eType="#//Food"/>
+      <eParameters name="newCaliber" upperBound="-1" eType="#//Caliber"/>
+    </eOperations>
+    <eOperations name="acceptedCaliber" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eParameters name="caliber" eType="#//Caliber"/>
+    </eOperations>
+    <eOperations name="label">
+      <eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+    <eOperations name="preferredLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eParameters name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="color" upperBound="-1"
+        eType="#//Color"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="caliber" eType="#//Caliber"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="relatedFoods" upperBound="-1"
+        eType="#//Food"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" eType="#//Group"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Source"
+        eOpposite="#//Source/foods"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="producers" upperBound="-1"
+        eType="#//Producer" eOpposite="#//Producer/foods"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Source" abstract="true" interface="true"
+      eSuperTypes="#//MultiNamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="foods" upperBound="-1"
+        eType="#//Food" eOpposite="#//Food/source"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="origin" upperBound="-1"
+        eType="#//CountryData"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Plant" eSuperTypes="#//Source">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//Kind"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Animal" eSuperTypes="#//Source">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="part" upperBound="-1" eType="#//Part"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Color">
+    <eLiterals name="black"/>
+    <eLiterals name="red" value="1"/>
+    <eLiterals name="green" value="2"/>
+    <eLiterals name="yellow" value="3"/>
+    <eLiterals name="orange" value="4"/>
+    <eLiterals name="brown" value="5"/>
+    <eLiterals name="pink" value="6"/>
+    <eLiterals name="palPink" value="7" literal="palPink"/>
+    <eLiterals name="veryYellow" value="8"/>
+    <eLiterals name="white" value="9"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Caliber">
+    <eLiterals name="S"/>
+    <eLiterals name="M" value="1"/>
+    <eLiterals name="L" value="2"/>
+    <eLiterals name="XL" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Group">
+    <eLiterals name="Water"/>
+    <eLiterals name="Dairy" value="1"/>
+    <eLiterals name="Fruit" value="2"/>
+    <eLiterals name="Grain" value="3"/>
+    <eLiterals name="Protein" value="4"/>
+    <eLiterals name="Sweet" value="5"/>
+    <eLiterals name="Vegetable" value="6"/>
+    <eLiterals name="Alcohol" value="7"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Continent">
+    <eLiterals name="Europe"/>
+    <eLiterals name="Asia" value="1"/>
+    <eLiterals name="Africa" value="2"/>
+    <eLiterals name="America" value="3"/>
+    <eLiterals name="Australia" value="4"/>
+    <eLiterals name="Antarctica" value="5"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Kind">
+    <eLiterals name="Other"/>
+    <eLiterals name="Seed" value="1"/>
+    <eLiterals name="Oilseed" value="2"/>
+    <eLiterals name="Tree" value="3"/>
+    <eLiterals name="Root" value="4"/>
+    <eLiterals name="Bulb" value="5"/>
+    <eLiterals name="Leaf" value="6"/>
+    <eLiterals name="Stem" value="7"/>
+    <eLiterals name="Flower" value="8"/>
+    <eLiterals name="Inflorescence" value="9"/>
+    <eLiterals name="Spice" value="10"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Part">
+    <eLiterals name="Other"/>
+    <eLiterals name="Muscle" value="1"/>
+    <eLiterals name="Organ" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="CountryData" instanceClassName="anydsl.Country"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="SingleString" instanceClassName="java.lang.String"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EStringToRecipeMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Recipe"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.acceleo.aql.tests/resources/serialization/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.mtl-expected.txt b/tests/org.eclipse.acceleo.aql.tests/resources/serialization/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.mtl-expected.txt
new file mode 100644
index 0000000..2a5e578
--- /dev/null
+++ b/tests/org.eclipse.acceleo.aql.tests/resources/serialization/evaluation/expressionStatement/middleOfTextLineMultiLineInlinedBlock/middleOfTextLineMultiLineInlinedBlock.mtl-expected.txt
@@ -0,0 +1,6 @@
+[module myModule('http://www.eclipse.org/emf/2002/Ecore')/]
+
+[comment @main /]
+[template public myTemplate(myParam : ecore::EPackage)]
+  [file (myParam.name + '.txt', overwrite)]some text [myParam.name + '.txt' + '\n\nlast ExpressionStatement line'/] some text[/file]
+[/template]
\ No newline at end of file