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;
 	}