Index: compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java,v retrieving revision 1.142 diff -u -r1.142 SourceTypeBinding.java --- compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java 16 Nov 2006 16:13:48 -0000 1.142 +++ compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java 8 Jan 2007 20:19:20 -0000 @@ -1351,7 +1351,8 @@ Argument[] arguments = methodDecl.arguments; if (arguments != null) { int size = arguments.length; - method.parameters = new TypeBinding[size]; + method.parameters = Binding.NO_PARAMETERS; + TypeBinding[] newParameters = new TypeBinding[size]; for (int i = 0; i < size; i++) { Argument arg = arguments[i]; TypeBinding parameterType = arg.type.resolveType(methodDecl.scope, true /* check bounds*/); @@ -1367,9 +1368,12 @@ TypeBinding leafType = parameterType.leafComponentType(); if (leafType instanceof ReferenceBinding && (((ReferenceBinding) leafType).modifiers & ExtraCompilerModifiers.AccGenericSignature) != 0) method.modifiers |= ExtraCompilerModifiers.AccGenericSignature; - method.parameters[i] = parameterType; + newParameters[i] = parameterType; } } + // only assign parameters if no problems are found + if (!foundArgProblem) + method.parameters = newParameters; } boolean foundReturnTypeProblem = false; Index: compiler/org/eclipse/jdt/internal/compiler/Compiler.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/Compiler.java,v retrieving revision 1.86 diff -u -r1.86 Compiler.java --- compiler/org/eclipse/jdt/internal/compiler/Compiler.java 22 Dec 2006 16:02:08 -0000 1.86 +++ compiler/org/eclipse/jdt/internal/compiler/Compiler.java 8 Jan 2007 20:19:20 -0000 @@ -692,6 +692,7 @@ // binding resolution lookupEnvironment.completeTypeBindings(); } + this.lookupEnvironment.unitBeingCompleted = unit; this.parser.getMethodBodies(unit); if (unit.scope != null) { // fault in fields & methods @@ -723,6 +724,7 @@ this.handleInternalException(e, unit, null); throw e; // rethrow } finally { + this.lookupEnvironment.unitBeingCompleted = null; // No reset is performed there anymore since, // within the CodeAssist (or related tools), // the compiler may be called *after* a call