Change contract of getDelegationCall to @NotNull

Its existence guaranteed by parser
This commit is contained in:
Denis Zharkov
2015-03-25 11:31:58 +03:00
parent 8c048c3e43
commit 18e40d034e
6 changed files with 11 additions and 12 deletions
@@ -1441,8 +1441,7 @@ public class JetControlFlowProcessor {
processParameters(constructor.getValueParameters());
generateCallOrMarkUnresolved(constructor.getDelegationCall());
if (constructor.getDelegationCall() != null && !constructor.getDelegationCall().isCallToThis()
) {
if (!constructor.getDelegationCall().isCallToThis()) {
generateClassOrObjectInitializers(classOrObject);
}
@@ -363,7 +363,7 @@ public class JetPsiFactory(private val project: Project) {
public fun createConstructorDelegationCall(text: String): JetConstructorDelegationCall {
val colonOrEmpty = if (text.isEmpty()) "" else ": "
return createClass("class A { constructor()$colonOrEmpty$text {}").getSecondaryConstructors().first().getDelegationCall()!!
return createClass("class A { constructor()$colonOrEmpty$text {}").getSecondaryConstructors().first().getDelegationCall()
}
public inner class IfChainBuilder() {
@@ -172,14 +172,14 @@ public class JetSecondaryConstructor extends JetDeclarationStub<KotlinPlaceHolde
throw new IncorrectOperationException("setName to constructor");
}
@Nullable
@NotNull
public JetConstructorDelegationCall getDelegationCall() {
return findChildByClass(JetConstructorDelegationCall.class);
}
public boolean hasEmptyDelegationCall() {
JetConstructorDelegationCall call = getDelegationCall();
return call != null && call.isEmpty();
return call.isEmpty();
}
@NotNull
@@ -192,7 +192,7 @@ public class JetSecondaryConstructor extends JetDeclarationStub<KotlinPlaceHolde
JetPsiFactory psiFactory = new JetPsiFactory(getProject());
JetConstructorDelegationCall current = getDelegationCall();
assert current != null && current.isEmpty()
assert current.isEmpty()
: "Method should not be called with non-existing or non-empty delegation call: " + getText();
current.delete();
@@ -217,7 +217,8 @@ public class BodyResolver {
PsiElement constructorToReport = DescriptorToSourceUtils.descriptorToDeclaration(currentConstructor);
if (constructorToReport != null) {
JetConstructorDelegationCall call = ((JetSecondaryConstructor) constructorToReport).getDelegationCall();
assert call != null && call.getCalleeExpression() != null : "resolved call and it's callee can't be null";
assert call.getCalleeExpression() != null
: "Callee expression of delegation call should not be null on cycle as there should be explicit 'this' calls";
trace.report(CYCLIC_CONSTRUCTOR_DELEGATION_CALL.on(call.getCalleeExpression()));
}
@@ -301,11 +301,10 @@ public class CallResolver {
public OverloadResolutionResults<FunctionDescriptor> resolveConstructorDelegationCall(
@NotNull BindingTrace trace, @NotNull JetScope scope, @NotNull DataFlowInfo dataFlowInfo,
@NotNull ConstructorDescriptor constructorDescriptor,
@Nullable JetConstructorDelegationCall call
@NotNull JetConstructorDelegationCall call
) {
// Returns `null` when there is nothing to resolve in trivial cases like `null` call expression or
// Method returns `null` when there is nothing to resolve in trivial cases like `null` call expression or
// when super call should be conventional enum constructor and super call should be empty
if (call == null) return null;
BasicCallResolutionContext context = BasicCallResolutionContext.create(
trace, scope,
@@ -157,9 +157,9 @@ private fun processClassDelegationCallsToSpecifiedConstructor(
klass: JetClass, constructor: DeclarationDescriptor, process: (JetConstructorDelegationCall) -> Unit
) {
for (secondaryConstructor in klass.getSecondaryConstructors()) {
val delegationCallDescriptor = secondaryConstructor.getDelegationCall()?.getConstructorCallDescriptor()
val delegationCallDescriptor = secondaryConstructor.getDelegationCall().getConstructorCallDescriptor()
if (constructor == delegationCallDescriptor) {
process(secondaryConstructor.getDelegationCall()!!)
process(secondaryConstructor.getDelegationCall())
}
}
}