tests for incomplete code exceptions
This commit is contained in:
@@ -75,8 +75,11 @@ public class JetArrayAccessExpression extends JetReferenceExpression {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<TextRange> getBracketRanges() {
|
public List<TextRange> getBracketRanges() {
|
||||||
TextRange lBracket = getIndicesNode().findChildByType(JetTokens.LBRACKET).getTextRange();
|
PsiElement lBracket = getIndicesNode().findChildByType(JetTokens.LBRACKET);
|
||||||
TextRange rBracket = getIndicesNode().findChildByType(JetTokens.RBRACKET).getTextRange();
|
PsiElement rBracket = getIndicesNode().findChildByType(JetTokens.RBRACKET);
|
||||||
return Lists.newArrayList(lBracket, 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,
|
arrayAccessExpression,
|
||||||
isGet ? "get" : "set");
|
isGet ? "get" : "set");
|
||||||
if (!functionResults.isSuccess()) {
|
if (!functionResults.isSuccess()) {
|
||||||
traceForResolveResult.report(isGet
|
traceForResolveResult.report(isGet ? NO_GET_METHOD.on(arrayAccessExpression) : NO_SET_METHOD.on(arrayAccessExpression));
|
||||||
? NO_GET_METHOD.on(arrayAccessExpression)
|
|
||||||
: NO_SET_METHOD.on(arrayAccessExpression));
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
traceForResolveResult.record(isGet
|
traceForResolveResult.record(isGet ? INDEXED_LVALUE_GET : INDEXED_LVALUE_SET, arrayAccessExpression, functionResults.getResultingCall());
|
||||||
? INDEXED_LVALUE_GET
|
|
||||||
: INDEXED_LVALUE_SET, arrayAccessExpression, functionResults.getResultingCall());
|
|
||||||
return functionResults.getResultingDescriptor().getReturnType();
|
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())
|
BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile((JetFile) getElement().getContainingFile())
|
||||||
.getBindingContext();
|
.getBindingContext();
|
||||||
ResolvedCall<FunctionDescriptor> getFunction = bindingContext.get(INDEXED_LVALUE_GET, expression);
|
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);
|
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());
|
PsiElement setFunctionElement = bindingContext.get(DESCRIPTOR_TO_DECLARATION, setFunction.getResultingDescriptor());
|
||||||
|
assert setFunctionElement != null;
|
||||||
return new ResolveResult[] {new PsiElementResolveResult(getFunctionElement, true), new PsiElementResolveResult(setFunctionElement, true)};
|
return new ResolveResult[] {new PsiElementResolveResult(getFunctionElement, true), new PsiElementResolveResult(setFunctionElement, true)};
|
||||||
// return super.doMultiResolve();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user