Fixed operator precedence detection in AstSerializer.
Change-Id: I35361546167a8f3e8406ca7d325211acca67b5ec
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/AstSerializer.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/AstSerializer.java
index 1d56b33..5a41f4a 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/AstSerializer.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/parser/AstSerializer.java
@@ -625,10 +625,12 @@
final boolean res;
final Integer precedence = OPERATOR_PRECEDENCE.get(call.getServiceName());
- final Integer parentPrecedence;
- if (call.eContainer() instanceof Call && ((Call)call.eContainer()).getArguments().get(0) == call) {
- parentPrecedence = OPERATOR_PRECEDENCE.getOrDefault(((Call)call.eContainer()).getServiceName(),
- -1);
+ Integer parentPrecedence;
+ if (call.eContainer() instanceof Call) {
+ parentPrecedence = OPERATOR_PRECEDENCE.get(((Call)call.eContainer()).getServiceName());
+ if (parentPrecedence == null && ((Call)call.eContainer()).getArguments().get(0) == call) {
+ parentPrecedence = -1;
+ }
} else {
parentPrecedence = null;
}
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/AstSerializerTests.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/AstSerializerTests.java
index f5ffbe6..e3f78eb 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/AstSerializerTests.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/parser/tests/AstSerializerTests.java
@@ -150,6 +150,8 @@
res.add("1 - -1");
res.add("1 / -1");
+ res.add("('a' + 'b').toUpper()");
+
return res;
}
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/tests/AllTests.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/tests/AllTests.java
index 4a6f3c7..8d201ad 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/tests/AllTests.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/tests/AllTests.java
@@ -13,6 +13,7 @@
import org.eclipse.acceleo.query.ast.test.AstBuilderTest;
import org.eclipse.acceleo.query.ast.test.AstEvaluatorTest;
import org.eclipse.acceleo.query.ast.test.delegates.DelegateTests;
+import org.eclipse.acceleo.query.parser.tests.AstSerializerTests;
import org.eclipse.acceleo.query.parser.tests.BuildTest;
import org.eclipse.acceleo.query.parser.tests.CombineIteratorTest;
import org.eclipse.acceleo.query.parser.tests.CompletionCheck;
@@ -101,7 +102,7 @@
ValidationInferrenceTest.class, TypeTests.class, QueryEnvironmentTests.class,
EPackageProviderTests.class, CompletionCheck.class, FilterCamelCaseTest.class,
CollectionServicesAstValidationTest.class, DelegateTests.class, CombineIteratorTest.class,
- PositionsTests.class, })
+ PositionsTests.class, AstSerializerTests.class, })
public class AllTests {
}