Bug 25129 IAE in eating code assist
Don't have a reproducible case yet but do see it quite regularly. Have eating code assist enabled. java.lang.IllegalArgumentException: Index out of bounds at org.eclipse.swt.SWT.error(SWT.java:2125) at org.eclipse.swt.SWT.error(SWT.java:2071) at org.eclipse.swt.custom.StyledText.setStyleRange(StyledText.java:7168) at org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposal.updateStyle (JavaCompletionProposal.java:498) at org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposal.selected (JavaCompletionProposal.java:506) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.selectProposal (CompletionProposalPopup.java:573) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.setProposals (CompletionProposalPopup.java:430) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$15 (CompletionProposalPopup.java:406) at org.eclipse.jface.text.contentassist.CompletionProposalPopup$6.run (CompletionProposalPopup.java:630) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:31) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages (Synchronizer.java:94) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:1599) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1372) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1420) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1403) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:775) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:462) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/JavaCompletionProposal.java
}
				
				string= buffer.toString();
			}
			replace(document, fReplacementOffset, fReplacementLength, string);
			if (fTextViewer != null && string != null) {
				int index= string.indexOf("()"); 
				if (index != -1) {
					
					IPreferenceStore preferenceStore= JavaPlugin.getDefault().getPreferenceStore();
					if (preferenceStore.getBoolean(CompilationUnitEditor.CLOSE_BRACKETS)) {
	
						int newOffset= fReplacementOffset + index;
		
						LinkedPositionManager manager= new LinkedPositionManager(document);
						manager.addPosition(newOffset + 1, 0);
		
						LinkedPositionUI editor= new LinkedPositionUI(fTextViewer, manager);
						editor.setExitPolicy(new ExitPolicy(')'));
						editor.setFinalCaretOffset(newOffset + 2);
						editor.enter();							
					}
				}
			}
		} catch (BadLocationException x) {
			
		}		
	}
	
	private static class ExitPolicy implements LinkedPositionUI.ExitPolicy {