FIR resolve: eliminate CallInfo.containingDeclaration as unused

This also fixes potential KNPE during its calculation
This commit is contained in:
Mikhail Glukhikh
2019-12-04 17:43:55 +03:00
parent c1789a0ecc
commit 2f3618041b
8 changed files with 27 additions and 11 deletions
@@ -92,8 +92,7 @@ class FirCallResolver(
typeArguments, typeArguments,
session, session,
file, file,
transformer.components.implicitReceiverStack, transformer.components.implicitReceiverStack
transformer.components.container
) { it.resultType } ) { it.resultType }
towerResolver.reset() towerResolver.reset()
@@ -156,8 +155,7 @@ class FirCallResolver(
emptyList(), emptyList(),
session, session,
file, file,
transformer.components.implicitReceiverStack, transformer.components.implicitReceiverStack
transformer.components.container
) { it.resultType } ) { it.resultType }
towerResolver.reset() towerResolver.reset()
@@ -393,7 +391,6 @@ class FirCallResolver(
session, session,
file, file,
transformer.components.implicitReceiverStack, transformer.components.implicitReceiverStack,
transformer.components.container,
expectedType, expectedType,
outerConstraintSystemBuilder, outerConstraintSystemBuilder,
lhs lhs
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.resolve.calls package org.jetbrains.kotlin.fir.resolve.calls
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
@@ -37,7 +36,6 @@ class CallInfo(
val session: FirSession, val session: FirSession,
val containingFile: FirFile, val containingFile: FirFile,
val implicitReceiverStack: ImplicitReceiverStack, val implicitReceiverStack: ImplicitReceiverStack,
val containingDeclaration: FirDeclaration,
// Three properties for callable references only // Three properties for callable references only
val expectedType: ConeKotlinType? = null, val expectedType: ConeKotlinType? = null,
@@ -103,7 +103,6 @@ class InvokeReceiverCandidateCollector(
session, session,
invokeCallInfo.containingFile, invokeCallInfo.containingFile,
invokeCallInfo.implicitReceiverStack, invokeCallInfo.implicitReceiverStack,
invokeCallInfo.containingDeclaration,
invokeCallInfo.expectedType, invokeCallInfo.expectedType,
invokeCallInfo.outerCSBuilder, invokeCallInfo.outerCSBuilder,
invokeCallInfo.lhs, invokeCallInfo.lhs,
@@ -72,7 +72,6 @@ fun createFunctionConsumer(
bodyResolveComponents.session, bodyResolveComponents.session,
callInfo.containingFile, callInfo.containingFile,
callInfo.implicitReceiverStack, callInfo.implicitReceiverStack,
callInfo.containingDeclaration,
callInfo.expectedType, callInfo.expectedType,
callInfo.outerCSBuilder, callInfo.outerCSBuilder,
callInfo.lhs, callInfo.lhs,
@@ -137,8 +137,7 @@ class FirSyntheticCallGenerator(
typeArguments = emptyList(), typeArguments = emptyList(),
session = session, session = session,
containingFile = file, containingFile = file,
implicitReceiverStack = implicitReceiverStack, implicitReceiverStack = implicitReceiverStack
containingDeclaration = container
) { it.resultType } ) { it.resultType }
private fun generateSyntheticSelectFunction(callableId: CallableId, isVararg: Boolean = true): FirSimpleFunctionImpl { private fun generateSyntheticSelectFunction(callableId: CallableId, isVararg: Boolean = true): FirSimpleFunctionImpl {
@@ -0,0 +1,6 @@
// Should be something like TYPE_MISMATCH here
@file:Some(return x)
const val x = 42
annotation class Some(val value: Int)
@@ -0,0 +1,13 @@
FILE: annotationWithReturn.kt
@FILE:R|Some|(^ R|/x|)
public final const val x: R|kotlin/Int| = Int(42)
public get(): R|kotlin/Int|
public final annotation class Some : R|kotlin/Annotation| {
public constructor(value: R|kotlin/Int|): R|Some| {
super<R|kotlin/Annotation|>()
}
public final val value: R|kotlin/Int| = R|<local>/value|
public get(): R|kotlin/Int|
}
@@ -389,6 +389,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/resolve/expresssions"), Pattern.compile("^([^.]+)\\.kt$"), true); KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/resolve/expresssions"), Pattern.compile("^([^.]+)\\.kt$"), true);
} }
@TestMetadata("annotationWithReturn.kt")
public void testAnnotationWithReturn() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/annotationWithReturn.kt");
}
@TestMetadata("annotations.kt") @TestMetadata("annotations.kt")
public void testAnnotations() throws Exception { public void testAnnotations() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/annotations.kt"); runTest("compiler/fir/resolve/testData/resolve/expresssions/annotations.kt");