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