Bug 560657 - Lowering doesn't work for ConditionalExpression
- short cuts to avoid unnecessary computation for genetated AST
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
index 1210f0a..513ca65 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
@@ -789,7 +789,14 @@
// clause around generic method's return type prior to instantiation needs double check.
return this.isPolyExpression = true;
}
-
+
+//{ObjectTeams:
+ @Override
+ public boolean isGenerated() {
+ return this.valueIfTrue.isGenerated() || this.valueIfFalse.isGenerated();
+ }
+// SH}
+
@Override
public boolean isCompatibleWith(TypeBinding left, Scope scope) {
return isPolyExpression() ? this.valueIfTrue.isCompatibleWith(left, scope) && this.valueIfFalse.isCompatibleWith(left, scope) :
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java
index 6e8d662..2a40af4 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/lifting/Lowering.java
@@ -243,6 +243,11 @@
}
@Override
+ public boolean isGenerated() {
+ return true;
+ }
+
+ @Override
public DecapsulationState getBaseclassDecapsulation() {
return DecapsulationState.REPORTED;
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
index 4b186b2..6f8f59b 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/AstGenerator.java
@@ -304,6 +304,7 @@
public NullLiteral nullLiteral() {
NullLiteral result = new NullLiteral(this.sourceStart, this.sourceEnd);
result.constant = Constant.NotAConstant;
+ result.resolvedType = TypeBinding.NULL;
return result;
}
public Expression nullCheck(Expression value) {