[FIR] Fix some source elements in light tree fir builder
This commit is contained in:
+27
-7
@@ -236,6 +236,7 @@ class ExpressionsConverter(
|
|||||||
buildFunctionCall {
|
buildFunctionCall {
|
||||||
source = binaryExpression.toFirSourceElement()
|
source = binaryExpression.toFirSourceElement()
|
||||||
calleeReference = buildSimpleNamedReference {
|
calleeReference = buildSimpleNamedReference {
|
||||||
|
source = this@buildFunctionCall.source
|
||||||
name = conventionCallName ?: operationTokenName.nameAsSafeName()
|
name = conventionCallName ?: operationTokenName.nameAsSafeName()
|
||||||
}
|
}
|
||||||
explicitReceiver = leftArgAsFir
|
explicitReceiver = leftArgAsFir
|
||||||
@@ -342,7 +343,10 @@ class ExpressionsConverter(
|
|||||||
}
|
}
|
||||||
buildFunctionCall {
|
buildFunctionCall {
|
||||||
source = unaryExpression.toFirSourceElement()
|
source = unaryExpression.toFirSourceElement()
|
||||||
calleeReference = buildSimpleNamedReference { name = conventionCallName }
|
calleeReference = buildSimpleNamedReference {
|
||||||
|
source = this@buildFunctionCall.source
|
||||||
|
name = conventionCallName
|
||||||
|
}
|
||||||
explicitReceiver = getAsFirExpression(argument, "No operand")
|
explicitReceiver = getAsFirExpression(argument, "No operand")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -495,26 +499,38 @@ class ExpressionsConverter(
|
|||||||
process(child)
|
process(child)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val source = callSuffix.toFirSourceElement()
|
||||||
|
|
||||||
val (calleeReference, explicitReceiver) = when {
|
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 -> {
|
additionalArgument != null -> {
|
||||||
buildSimpleNamedReference { this.name = OperatorNameConventions.INVOKE } to additionalArgument!!
|
buildSimpleNamedReference {
|
||||||
|
this.source = source
|
||||||
|
this.name = OperatorNameConventions.INVOKE
|
||||||
|
} to additionalArgument!!
|
||||||
}
|
}
|
||||||
|
|
||||||
superNode != null -> {
|
superNode != null -> {
|
||||||
buildErrorNamedReference {
|
buildErrorNamedReference {
|
||||||
val node = superNode!!
|
val node = superNode!!
|
||||||
source = node.toFirSourceElement()
|
this.source = node.toFirSourceElement()
|
||||||
diagnostic = ConeSimpleDiagnostic("Super cannot be a callee", DiagnosticKind.SuperNotAllowed)
|
diagnostic = ConeSimpleDiagnostic("Super cannot be a callee", DiagnosticKind.SuperNotAllowed)
|
||||||
} to null
|
} to null
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> buildErrorNamedReference {
|
else -> buildErrorNamedReference {
|
||||||
|
this.source = source
|
||||||
diagnostic = ConeSimpleDiagnostic("Call has no callee", DiagnosticKind.Syntax)
|
diagnostic = ConeSimpleDiagnostic("Call has no callee", DiagnosticKind.Syntax)
|
||||||
} to null
|
} to null
|
||||||
}
|
}
|
||||||
|
|
||||||
val builder: FirQualifiedAccessBuilder = if (hasArguments) {
|
val builder: FirQualifiedAccessBuilder = if (hasArguments) {
|
||||||
FirFunctionCallBuilder().apply {
|
FirFunctionCallBuilder().apply {
|
||||||
source = callSuffix.toFirSourceElement()
|
this.source = source
|
||||||
this.calleeReference = calleeReference
|
this.calleeReference = calleeReference
|
||||||
|
|
||||||
context.firFunctionCalls += this
|
context.firFunctionCalls += this
|
||||||
@@ -523,7 +539,7 @@ class ExpressionsConverter(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FirQualifiedAccessExpressionBuilder().apply {
|
FirQualifiedAccessExpressionBuilder().apply {
|
||||||
source = callSuffix.toFirSourceElement()
|
this.source = source
|
||||||
this.calleeReference = calleeReference
|
this.calleeReference = calleeReference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -745,6 +761,7 @@ class ExpressionsConverter(
|
|||||||
return buildFunctionCall {
|
return buildFunctionCall {
|
||||||
source = arrayAccess.toFirSourceElement()
|
source = arrayAccess.toFirSourceElement()
|
||||||
calleeReference = buildSimpleNamedReference {
|
calleeReference = buildSimpleNamedReference {
|
||||||
|
source = this@buildFunctionCall.source
|
||||||
name = if (getArgument == null) OperatorNameConventions.GET else OperatorNameConventions.SET
|
name = if (getArgument == null) OperatorNameConventions.GET else OperatorNameConventions.SET
|
||||||
}
|
}
|
||||||
explicitReceiver = firExpression
|
explicitReceiver = firExpression
|
||||||
@@ -791,7 +808,10 @@ class ExpressionsConverter(
|
|||||||
private fun convertSimpleNameExpression(referenceExpression: LighterASTNode): FirQualifiedAccessExpression {
|
private fun convertSimpleNameExpression(referenceExpression: LighterASTNode): FirQualifiedAccessExpression {
|
||||||
return buildQualifiedAccessExpression {
|
return buildQualifiedAccessExpression {
|
||||||
source = referenceExpression.toFirSourceElement()
|
source = referenceExpression.toFirSourceElement()
|
||||||
calleeReference = buildSimpleNamedReference { name = referenceExpression.asText.nameAsSafeName() }
|
calleeReference = buildSimpleNamedReference {
|
||||||
|
source = this@buildQualifiedAccessExpression.source
|
||||||
|
name = referenceExpression.asText.nameAsSafeName()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user