Bug 27907 Autocreate of a local variable outside of current block
If you type something like the following void myMethod() { try { a=someCall(); } catch(Exception e) { } System.out.println(a); } the variable 'a' isn't declared and code assist proposes to create a declaration for the local variable 'a'. But it is created inside the current block and not in the context of the method: void myMethod() { try { int a=someCall(); } catch(Exception e) { } System.out.println(a); // we've still got a problem here... } Code assist should detect wether the variable is used only inside the current block and create the delcaration only block local if the variable isn't used outside of the block.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/NewVariableCompletionProposal.java
markAsLinked(rewrite, newDecl.getType(), false, KEY_TYPE);
			markAsLinked(rewrite, node, true, KEY_NAME); 
			markAsLinked(rewrite, newDeclFrag.getName(), false, KEY_NAME);
			Statement statement= ASTResolving.findParentStatement(node);
			if (statement != null) {
				List list= ASTNodes.getContainingList(statement);
				while (list == null && statement.getParent() instanceof Statement) { 
					statement= (Statement) statement.getParent();
					list= ASTNodes.getContainingList(statement);
				}
				if (list != null) {
					list.add(list.indexOf(statement), newDecl);
					rewrite.markAsInserted(newDecl);
					return rewrite;					
				}
			}
		}
		return null;
	}
	private ASTRewrite doAddField(CompilationUnit astRoot) throws CoreException {
		SimpleName node= fOriginalNode;
		boolean isInDifferentCU= false;
		
		ASTNode newTypeDecl= astRoot.findDeclaringNode(fSenderBinding);
		if (newTypeDecl == null) {
			astRoot= AST.parseCompilationUnit(getCompilationUnit(), true);
			newTypeDecl= astRoot.findDeclaringNode(fSenderBinding.getKey());
			isInDifferentCU= true;
		}