[FIR] Fix some source elements in light tree fir builder

This commit is contained in:
Dmitriy Novozhilov
2020-03-23 20:21:43 +03:00
parent 84ed3f5cf2
commit badd156def
@@ -236,6 +236,7 @@ class ExpressionsConverter(
buildFunctionCall {
source = binaryExpression.toFirSourceElement()
calleeReference = buildSimpleNamedReference {
source = this@buildFunctionCall.source
name = conventionCallName ?: operationTokenName.nameAsSafeName()
}
explicitReceiver = leftArgAsFir
@@ -342,7 +343,10 @@ class ExpressionsConverter(
}
buildFunctionCall {
source = unaryExpression.toFirSourceElement()
calleeReference = buildSimpleNamedReference { name = conventionCallName }
calleeReference = buildSimpleNamedReference {
source = this@buildFunctionCall.source
name = conventionCallName
}
explicitReceiver = getAsFirExpression(argument, "No operand")
}
}
@@ -495,26 +499,38 @@ class ExpressionsConverter(
process(child)
}
val source = callSuffix.toFirSourceElement()
val (calleeReference, explicitReceiver) = when {
name != null -> buildSimpleNamedReference { this.name = name.nameAsSafeName() } to null
name != null -> buildSimpleNamedReference {
this.source = source
this.name = name.nameAsSafeName()
} to null
additionalArgument != null -> {
buildSimpleNamedReference { this.name = OperatorNameConventions.INVOKE } to additionalArgument!!
buildSimpleNamedReference {
this.source = source
this.name = OperatorNameConventions.INVOKE
} to additionalArgument!!
}
superNode != null -> {
buildErrorNamedReference {
val node = superNode!!
source = node.toFirSourceElement()
this.source = node.toFirSourceElement()
diagnostic = ConeSimpleDiagnostic("Super cannot be a callee", DiagnosticKind.SuperNotAllowed)
} to null
}
else -> buildErrorNamedReference {
this.source = source
diagnostic = ConeSimpleDiagnostic("Call has no callee", DiagnosticKind.Syntax)
} to null
}
val builder: FirQualifiedAccessBuilder = if (hasArguments) {
FirFunctionCallBuilder().apply {
source = callSuffix.toFirSourceElement()
this.source = source
this.calleeReference = calleeReference
context.firFunctionCalls += this
@@ -523,7 +539,7 @@ class ExpressionsConverter(
}
} else {
FirQualifiedAccessExpressionBuilder().apply {
source = callSuffix.toFirSourceElement()
this.source = source
this.calleeReference = calleeReference
}
}
@@ -745,6 +761,7 @@ class ExpressionsConverter(
return buildFunctionCall {
source = arrayAccess.toFirSourceElement()
calleeReference = buildSimpleNamedReference {
source = this@buildFunctionCall.source
name = if (getArgument == null) OperatorNameConventions.GET else OperatorNameConventions.SET
}
explicitReceiver = firExpression
@@ -791,7 +808,10 @@ class ExpressionsConverter(
private fun convertSimpleNameExpression(referenceExpression: LighterASTNode): FirQualifiedAccessExpression {
return buildQualifiedAccessExpression {
source = referenceExpression.toFirSourceElement()
calleeReference = buildSimpleNamedReference { name = referenceExpression.asText.nameAsSafeName() }
calleeReference = buildSimpleNamedReference {
source = this@buildQualifiedAccessExpression.source
name = referenceExpression.asText.nameAsSafeName()
}
}
}