Bug 416781 - reconcile compiler changes from BETA_JAVA8 with OT/J
- avoid new error reported when trying to double resolve : AE-part
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
index 9fa93b1..582281c 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
@@ -504,12 +504,22 @@
argsContainCast = true;
}
argument.setExpressionContext(INVOCATION_CONTEXT);
+//{ObjectTeams: generated arguments can be pre-resolved indeed:
+ if (argument.resolvedType != null && argument.isGenerated()) {
+ argumentTypes[i] = argument.resolvedType;
+ if (argumentTypes[i] == null)
+ argHasError = true;
+ } else {
+// orig:
if (this.arguments[i].resolvedType != null)
scope.problemReporter().genericInferenceError("Argument was unexpectedly found resolved", this); //$NON-NLS-1$
if ((argumentTypes[i] = argument.resolveType(scope)) == null) {
argHasError = true;
}
- if (sourceLevel >= ClassFileConstants.JDK1_8 && argument.isPolyExpression()) {
+// :giro
+ }
+// SH}
+ if (sourceLevel >= ClassFileConstants.JDK1_8 && argument.isPolyExpression()) {
if (this.innerInferenceHelper == null)
this.innerInferenceHelper = new InnerInferenceHelper();
}
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 85b4763..1666391 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
@@ -858,6 +858,7 @@
result.statementEnd = this.sourceEnd;
result.type = typeRef;
result.arguments = arguments;
+ result.isGenerated = true;
return result;
}