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
if (fVariableKind == PARAM) {
			return doAddParam(cu);
		} else if (fVariableKind == FIELD || fVariableKind ==CONST_FIELD) {
			return doAddField(cu);
		} else { 
			return doAddLocal(cu);
		}
	}
	private ASTRewrite doAddParam(CompilationUnit cu) throws CoreException {
		AST ast= cu.getAST();
		SimpleName node= fOriginalNode;
		BodyDeclaration decl= ASTResolving.findParentBodyDeclaration(node);
		if (decl instanceof MethodDeclaration) {
			ASTRewrite rewrite= new ASTRewrite(decl);
			
			SingleVariableDeclaration newDecl= ast.newSingleVariableDeclaration();
			newDecl.setType(evaluateVariableType(ast));
			newDecl.setName(ast.newSimpleName(node.getIdentifier()));
			
			rewrite.markAsInsertBeforeOriginal(decl, ASTNodeConstants.PARAMETERS, newDecl, null, null);
			
			markAsLinked(rewrite, newDecl.getType(), false, KEY_TYPE);
			markAsLinked(rewrite, node, true, KEY_NAME);
			markAsLinked(rewrite, newDecl.getName(), false, KEY_NAME);
			
			return rewrite;
		}
		return null;
	}
	private ASTRewrite doAddLocal(CompilationUnit cu) throws CoreException {