tests for incomplete code exceptions
This commit is contained in:
@@ -75,8 +75,11 @@ public class JetArrayAccessExpression extends JetReferenceExpression {
|
||||
}
|
||||
|
||||
public List<TextRange> getBracketRanges() {
|
||||
TextRange lBracket = getIndicesNode().findChildByType(JetTokens.LBRACKET).getTextRange();
|
||||
TextRange rBracket = getIndicesNode().findChildByType(JetTokens.RBRACKET).getTextRange();
|
||||
return Lists.newArrayList(lBracket, rBracket);
|
||||
PsiElement lBracket = getIndicesNode().findChildByType(JetTokens.LBRACKET);
|
||||
PsiElement rBracket = getIndicesNode().findChildByType(JetTokens.RBRACKET);
|
||||
if (lBracket == null || rBracket == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return Lists.newArrayList(lBracket.getTextRange(), rBracket.getTextRange());
|
||||
}
|
||||
}
|
||||
|
||||
+2
-6
@@ -1084,14 +1084,10 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
arrayAccessExpression,
|
||||
isGet ? "get" : "set");
|
||||
if (!functionResults.isSuccess()) {
|
||||
traceForResolveResult.report(isGet
|
||||
? NO_GET_METHOD.on(arrayAccessExpression)
|
||||
: NO_SET_METHOD.on(arrayAccessExpression));
|
||||
traceForResolveResult.report(isGet ? NO_GET_METHOD.on(arrayAccessExpression) : NO_SET_METHOD.on(arrayAccessExpression));
|
||||
return null;
|
||||
}
|
||||
traceForResolveResult.record(isGet
|
||||
? INDEXED_LVALUE_GET
|
||||
: INDEXED_LVALUE_SET, arrayAccessExpression, functionResults.getResultingCall());
|
||||
traceForResolveResult.record(isGet ? INDEXED_LVALUE_GET : INDEXED_LVALUE_SET, arrayAccessExpression, functionResults.getResultingCall());
|
||||
return functionResults.getResultingDescriptor().getReturnType();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package b
|
||||
|
||||
fun main(args : Array<String>) {
|
||||
var ints : Array<Int?> = arrayOfNulls<Int>(31)
|
||||
|
||||
ints[0] = 4; ints[11] = 5; ints[2] =7
|
||||
for(i in 0..ints.size)
|
||||
ints[i<!SYNTAX!><!>
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package b
|
||||
|
||||
fun foo() {
|
||||
for (i in <!UNRESOLVED_REFERENCE!>collection<!>) {
|
||||
<!UNUSED_FUNCTION_LITERAL!>{
|
||||
break
|
||||
}<!>
|
||||
}<!SYNTAX!><!>
|
||||
@@ -72,11 +72,15 @@ class JetArrayAccessReference extends JetPsiReference implements MultiRangeRefer
|
||||
BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile((JetFile) getElement().getContainingFile())
|
||||
.getBindingContext();
|
||||
ResolvedCall<FunctionDescriptor> getFunction = bindingContext.get(INDEXED_LVALUE_GET, expression);
|
||||
PsiElement getFunctionElement = bindingContext.get(DESCRIPTOR_TO_DECLARATION, getFunction.getResultingDescriptor());
|
||||
ResolvedCall<FunctionDescriptor> setFunction = bindingContext.get(INDEXED_LVALUE_SET, expression);
|
||||
if (getFunction == null || setFunction == null) {
|
||||
return new ResolveResult[0];
|
||||
}
|
||||
PsiElement getFunctionElement = bindingContext.get(DESCRIPTOR_TO_DECLARATION, getFunction.getResultingDescriptor());
|
||||
assert getFunctionElement != null;
|
||||
PsiElement setFunctionElement = bindingContext.get(DESCRIPTOR_TO_DECLARATION, setFunction.getResultingDescriptor());
|
||||
assert setFunctionElement != null;
|
||||
return new ResolveResult[] {new PsiElementResolveResult(getFunctionElement, true), new PsiElementResolveResult(setFunctionElement, true)};
|
||||
// return super.doMultiResolve();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user