Bug 97467 [quick fix] proposals not available for pessimistic repository providers
I have CVS configured to use Watch/Edit. I typed in the following code: PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IHelpContextIds.SYNC_PREFERENCE_PAGE); The IHelpContextIds interface exists but the constant does not. I then used CTRL-1 to see the option to create the constant but it is not presented. To see the option, I must manually make the IHelpContextIds file writtable. The way it should be is this. All the options should be presented and if one of them requires a file to be made writtable, the tooling should call validateEdit. This is a major usability problem as there are some repository tools where pessimistic mode is the usual way of working and this bug will make working with these repositories more cumbersome for the user.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/UnresolvedElementsSubProcessor.java
Expression expression= (Expression) arguments.get(i);
 			ITypeBinding curr= expression.resolveTypeBinding();
			if (curr == null) {
				return null;
			}
			if (!curr.isNullType()) {	
				curr= Bindings.normalizeTypeBinding(curr);
				if (curr == null) {
					curr= expression.getAST().resolveWellKnownType("java.lang.Object"); 
				}
			}
			res[i]= curr;
		}
		return res;
	}
	private static void addQualifierToOuterProposal(IInvocationContext context, MethodInvocation invocationNode, IMethodBinding binding, Collection proposals) throws CoreException {
		ITypeBinding declaringType= binding.getDeclaringClass();
		ITypeBinding parentType= Bindings.getBindingOfParentType(invocationNode);
		ITypeBinding currType= parentType;
		boolean isInstanceMethod= !Modifier.isStatic(binding.getModifiers());
		while (currType != null && !Bindings.isSuperType(declaringType, currType)) {
			if (isInstanceMethod && Modifier.isStatic(currType.getModifiers())) {
				return;
			}
			currType= currType.getDeclaringClass();
		}
		if (currType == null || currType == parentType) {
			return;
		}
		ASTRewrite rewrite= ASTRewrite.create(invocationNode.getAST());