[Native] Replace consequence line and column calls with a single one

This commit is contained in:
Ivan Kylchik
2023-09-18 11:28:56 +02:00
committed by Space Team
parent 1be98b8f08
commit 350ee4be1d
10 changed files with 79 additions and 65 deletions
@@ -64,7 +64,8 @@ private class PerformByIrFilePhase<Context : CommonBackendContext>(
} catch (e: Throwable) {
CodegenUtil.reportBackendException(e, "IR lowering", irFile.fileEntry.name) { offset ->
irFile.fileEntry.takeIf { it.supportsDebugInfo }?.let {
it.getLineNumber(offset) to it.getColumnNumber(offset)
val (line, column) = it.getLineAndColumnNumbers(offset)
line to column
}
}
}
@@ -113,7 +114,8 @@ private class PerformByIrFilePhase<Context : CommonBackendContext>(
thrownFromThread.get()?.let { (e, irFile) ->
CodegenUtil.reportBackendException(e, "Experimental parallel IR backend", irFile.fileEntry.name) { offset ->
irFile.fileEntry.takeIf { it.supportsDebugInfo }?.let {
it.getLineNumber(offset) to it.getColumnNumber(offset)
val (line, column) = it.getLineAndColumnNumbers(offset)
line to column
}
}
}
@@ -12,7 +12,8 @@ import org.jetbrains.kotlin.ir.IrFileEntry
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.backend.js.JsLoweredDeclarationOrigin
import org.jetbrains.kotlin.ir.backend.js.JsStatementOrigins
import org.jetbrains.kotlin.ir.backend.js.lower.*
import org.jetbrains.kotlin.ir.backend.js.lower.isBoxParameter
import org.jetbrains.kotlin.ir.backend.js.lower.isEs6ConstructorReplacement
import org.jetbrains.kotlin.ir.backend.js.sourceMapsInfo
import org.jetbrains.kotlin.ir.backend.js.utils.*
import org.jetbrains.kotlin.ir.declarations.*
@@ -618,8 +619,7 @@ inline fun IrElement.getSourceLocation(fileEntry: IrFileEntry, offsetSelector: I
if (startOffset == UNDEFINED_OFFSET || endOffset == UNDEFINED_OFFSET) return null
val path = fileEntry.name
val offset = offsetSelector()
val startLine = fileEntry.getLineNumber(offset)
val startColumn = fileEntry.getColumnNumber(offset)
val (startLine, startColumn) = fileEntry.getLineAndColumnNumbers(offset)
return JsLocation(path, startLine, startColumn)
}
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.backend.wasm.ir2wasm
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrFileEntry
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.wasm.ir.WasmExpressionBuilder
import org.jetbrains.kotlin.wasm.ir.source.location.SourceLocation
@@ -15,8 +14,7 @@ fun IrElement.getSourceLocation(fileEntry: IrFileEntry?): SourceLocation {
if (fileEntry == null) return SourceLocation.NoLocation("fileEntry is null")
val path = fileEntry.name
val startLine = fileEntry.getLineNumber(startOffset)
val startColumn = fileEntry.getColumnNumber(startOffset)
val (startLine, startColumn) = fileEntry.getLineAndColumnNumbers(startOffset)
if (startLine < 0 || startColumn < 0) return SourceLocation.NoLocation("startLine or startColumn < 0")
@@ -55,14 +55,17 @@ abstract class AbstractIrFileEntry : IrFileEntry {
return LineAndColumn(lineNumber, columnNumber)
}
override fun getSourceRangeInfo(beginOffset: Int, endOffset: Int): SourceRangeInfo =
SourceRangeInfo(
override fun getSourceRangeInfo(beginOffset: Int, endOffset: Int): SourceRangeInfo {
val (startLineNumber, startColumnNumber) = getLineAndColumnNumbers(beginOffset)
val (endLineNumber, endColumnNumber) = getLineAndColumnNumbers(endOffset)
return SourceRangeInfo(
filePath = name,
startOffset = beginOffset,
startLineNumber = getLineNumber(beginOffset),
startColumnNumber = getColumnNumber(beginOffset),
startLineNumber = startLineNumber,
startColumnNumber = startColumnNumber,
endOffset = endOffset,
endLineNumber = getLineNumber(endOffset),
endColumnNumber = getColumnNumber(endOffset)
endLineNumber = endLineNumber,
endColumnNumber = endColumnNumber
)
}
}
@@ -65,12 +65,15 @@ object PartialLinkageUtils {
data class IrBased(private val file: IrFile) : File {
override val module = Module.Real(file.module.name)
override fun computeLocationForOffset(offset: Int) = PartialLinkageLogger.Location(
moduleName = module.name,
filePath = file.fileEntry.name,
lineNumber = if (offset == UNDEFINED_OFFSET) UNDEFINED_LINE_NUMBER else file.fileEntry.getLineNumber(offset) + 1, // since humans count from 1, not 0
columnNumber = if (offset == UNDEFINED_OFFSET) UNDEFINED_COLUMN_NUMBER else file.fileEntry.getColumnNumber(offset) + 1
)
override fun computeLocationForOffset(offset: Int): PartialLinkageLogger.Location {
val (line, column) = file.fileEntry.getLineAndColumnNumbers(offset)
return PartialLinkageLogger.Location(
moduleName = module.name,
filePath = file.fileEntry.name,
lineNumber = if (offset == UNDEFINED_OFFSET) UNDEFINED_LINE_NUMBER else line + 1, // since humans count from 1, not 0
columnNumber = if (offset == UNDEFINED_OFFSET) UNDEFINED_COLUMN_NUMBER else column + 1
)
}
}
class LazyIrBased(packageFragmentDescriptor: PackageFragmentDescriptor) : File {