Community
Participate
Working Groups
Build ID: 3.3 Steps To Reproduce: 1. have the following CU public class CU { void foo() { Map<String, Number> map= new HashMap<String, Number>(); map.put("float", 1.23F); map.put("long", 123L); printFloat(this.<Float>bar(<CARET>)); } void printFloat(float n) { // ... } <T extends Number> T bar(String name, Map<String, Number> map) { Number number= map.get(name); if(number == null) return null; return (T) number; } } 2. CTRL+SPACE at <CARET> > you dont get any proposals [with "this.<Float>bar("float", <CARET>)" it's no better] More information:
Reproduce with this smaller test case: public class CU { void foo() { this.<Object>bar(); } } An ArrayIndexOutOfBoundsException occurs in completion parser recovery java.lang.ArrayIndexOutOfBoundsException: -1 at org.eclipse.jdt.internal.codeassist.complete.CompletionParser.checkInvocation(CompletionParser.java:1388) at org.eclipse.jdt.internal.codeassist.complete.CompletionParser.completionIdentifierCheck(CompletionParser.java:1825) at org.eclipse.jdt.internal.codeassist.complete.CompletionParser.updateRecoveryState(CompletionParser.java:4413) at org.eclipse.jdt.internal.compiler.parser.Parser.resumeOnSyntaxError(Parser.java:10274) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9109) at org.eclipse.jdt.internal.codeassist.impl.AssistParser.parseBlockStatements(AssistParser.java:1358) at org.eclipse.jdt.internal.codeassist.impl.AssistParser.parseBlockStatements(AssistParser.java:1211) at org.eclipse.jdt.internal.codeassist.impl.Engine.parseBlockStatements(Engine.java:288) at org.eclipse.jdt.internal.codeassist.impl.Engine.parseBlockStatements(Engine.java:251) at org.eclipse.jdt.internal.codeassist.CompletionEngine.complete(CompletionEngine.java:2351) at ...
Created attachment 83426 [details] Proposed fix
Released for 3.4M4 Test added GenericsCompletionParserTesr#test0215_Diet() -> test0215_Method()
Verified for 3.4 M4 using build I20071210-1800