[JS FIR] Enable FirJsLineNumberTests for FIR
^KT-64426 Fixed
This commit is contained in:
committed by
Space Team
parent
ac30911497
commit
6df0e0c847
+1
-1
@@ -46,7 +46,7 @@ There are multiple kinds of tests. Here are some of them:
|
||||
Such tests must contain a `fn box(): String` function. If this function returns `"OK"`,
|
||||
the test is considered passed, and if it returns anything else, the test is considered failed.
|
||||
- Line number tests, located in `js/js.translator/testData/lineNumbers`. These are to ensure that the debug info in the generated JavaScript matches some expectation.
|
||||
The expectation is written in a comment staring with `// LINES(JS):` or `// LINES(JS_IR):`.
|
||||
The expectation is written in a comment staring with `// LINES(JS_IR):` or `// LINES(ClassicFrontend JS):` or `// LINES(FIR JS_IR):`.
|
||||
These comments contain a list of line numbers in the test file that the compiler output is generated from.
|
||||
The actual line numbers can be viewed in the generated JS file whose name ends with `-lines.js`.
|
||||
- TypeScript export tests, located in `js/js.translator/testData/typescript-export`.
|
||||
|
||||
@@ -165,10 +165,9 @@ fun main(args: Array<String>) {
|
||||
// model("typescript-export/", pattern = "^([^_](.+))\\.kt$")
|
||||
// }
|
||||
|
||||
// see todo on defining class
|
||||
// testClass<AbstractJsFirLineNumberTest> {
|
||||
// model("lineNumbers/")
|
||||
// }
|
||||
testClass<AbstractFirJsLineNumberTest> {
|
||||
model("lineNumbers/")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("js/js.tests/tests-gen", "compiler/testData", testRunnerMethodName = "runTest0") {
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.js.test.converters.JsIrBackendFacade
|
||||
import org.jetbrains.kotlin.js.test.converters.incremental.RecompileModuleJsIrBackendFacade
|
||||
import org.jetbrains.kotlin.js.test.handlers.JsDebugRunner
|
||||
import org.jetbrains.kotlin.js.test.handlers.JsIrRecompiledArtifactsIdentityHandler
|
||||
import org.jetbrains.kotlin.js.test.handlers.createFirJsLineNumberHandler
|
||||
import org.jetbrains.kotlin.parsing.parseBoolean
|
||||
import org.jetbrains.kotlin.test.Constructor
|
||||
import org.jetbrains.kotlin.test.FirParser
|
||||
@@ -134,16 +135,25 @@ open class AbstractFirJsCodegenInlineTest : AbstractFirJsTest(
|
||||
// }
|
||||
//}
|
||||
|
||||
// TODO: implement separate expectations for FIR/JS to reuse testdata, disabled for now
|
||||
//open class AbstractJsFirLineNumberTest : AbstractFirJsTest(
|
||||
// pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/",
|
||||
// testGroupOutputDirPrefix = "firLineNumbers/"
|
||||
//) {
|
||||
// override fun configure(builder: TestConfigurationBuilder) {
|
||||
// super.configure(builder)
|
||||
// configureJsIrLineNumberTest(builder)
|
||||
// }
|
||||
//}
|
||||
open class AbstractFirJsLineNumberTest : AbstractFirJsTest(
|
||||
pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/",
|
||||
testGroupOutputDirPrefix = "firLineNumbers/"
|
||||
) {
|
||||
override fun configure(builder: TestConfigurationBuilder) {
|
||||
super.configure(builder)
|
||||
with(builder) {
|
||||
defaultDirectives {
|
||||
+JsEnvironmentConfigurationDirectives.KJS_WITH_FULL_RUNTIME
|
||||
+JsEnvironmentConfigurationDirectives.NO_COMMON_FILES
|
||||
-JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER
|
||||
JsEnvironmentConfigurationDirectives.DONT_RUN_GENERATED_CODE.with(listOf("JS", "JS_IR", "JS_IR_ES6"))
|
||||
}
|
||||
configureJsArtifactsHandlersStep {
|
||||
useHandlers(::createFirJsLineNumberHandler)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open class AbstractFirJsSteppingTest : AbstractFirJsTest(
|
||||
pathToTestDir = "compiler/testData/debug/stepping/",
|
||||
|
||||
@@ -9,39 +9,36 @@ import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.CompilationOutputs
|
||||
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.TranslationMode
|
||||
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.safeModuleName
|
||||
import org.jetbrains.kotlin.js.backend.ast.JsProgram
|
||||
import org.jetbrains.kotlin.js.facade.TranslationResult
|
||||
import org.jetbrains.kotlin.js.test.utils.LineCollector
|
||||
import org.jetbrains.kotlin.js.test.utils.LineOutputToStringVisitor
|
||||
import org.jetbrains.kotlin.js.util.TextOutputImpl
|
||||
import org.jetbrains.kotlin.test.backend.handlers.JsBinaryArtifactHandler
|
||||
import org.jetbrains.kotlin.test.model.BinaryArtifacts
|
||||
import org.jetbrains.kotlin.test.model.FrontendKind
|
||||
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.assertions
|
||||
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.moduleStructure
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* Verifies the `// LINE` comments in lineNumber tests.
|
||||
*
|
||||
* The test file is expected to contain the `// LINE(backend)` directive, followed by the line numbers that the corresponding JS statements
|
||||
* are generated from.
|
||||
* The test file is expected to contain the `// LINE($linePattern)` directive,
|
||||
* followed by the line numbers that the corresponding JS statements are generated from.
|
||||
*
|
||||
* This handler traverses the JS AST and collects the actual line numbers using [LineCollector], and generates a JavaScript file
|
||||
* with those line numbers printed as comments for ease of debugging these tests.
|
||||
*/
|
||||
class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler(testServices) {
|
||||
|
||||
private class JsLineNumberHandler(private val frontend: FrontendKind<*>, testServices: TestServices) : JsBinaryArtifactHandler(testServices) {
|
||||
private val translationModeForIr = TranslationMode.PER_MODULE_DEV
|
||||
|
||||
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {}
|
||||
|
||||
override fun processModule(module: TestModule, info: BinaryArtifacts.Js) {
|
||||
when (val artifact = info.unwrap()) {
|
||||
is BinaryArtifacts.Js.OldJsArtifact ->
|
||||
verifyModule(module, TranslationMode.FULL_DEV, artifact.translationResult.cast<TranslationResult.Success>().program, "JS")
|
||||
is BinaryArtifacts.Js.JsIrArtifact -> {
|
||||
val testModules = testServices.moduleStructure.modules
|
||||
val moduleId2TestModule = testModules.associateBy { it.name.safeModuleName }
|
||||
@@ -58,7 +55,7 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler(
|
||||
}
|
||||
}
|
||||
|
||||
verifyModule(module, translationModeForIr, compilationOutputs.jsProgram!!, "JS_IR")
|
||||
verifyModule(module, translationModeForIr, compilationOutputs.jsProgram!!)
|
||||
verifiedModuleCount += 1
|
||||
}
|
||||
|
||||
@@ -77,8 +74,7 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler(
|
||||
private fun verifyModule(
|
||||
module: TestModule,
|
||||
translationMode: TranslationMode,
|
||||
jsProgram: JsProgram,
|
||||
backendPattern: String
|
||||
jsProgram: JsProgram
|
||||
) {
|
||||
val baseOutputPath = JsEnvironmentConfigurator.getJsModuleArtifactPath(testServices, module.name, translationMode)
|
||||
|
||||
@@ -96,12 +92,12 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler(
|
||||
writeText(generatedCode)
|
||||
}
|
||||
|
||||
val linesPattern = Regex("^ *// *LINES\\($backendPattern\\): *(.*)$", RegexOption.MULTILINE)
|
||||
val linesPattern = Regex("^ *// *LINES\\((?:$frontend )? *JS_IR\\): *(.*)$", RegexOption.MULTILINE)
|
||||
|
||||
val linesMatcher = module.files
|
||||
.firstNotNullOfOrNull { linesPattern.find(it.originalContent) }
|
||||
?: testServices.assertions.fail {
|
||||
"'// LINES($backendPattern): ' comment was not found in source file. Generated code is:\n$generatedCode"
|
||||
"'// LINES(${linesPattern.pattern}): ' comment was not found in source file. Generated code is:\n$generatedCode"
|
||||
}
|
||||
|
||||
fun List<Int?>.render() = joinToString(" ") { it?.toString() ?: "*" }
|
||||
@@ -117,3 +113,11 @@ class JsLineNumberHandler(testServices: TestServices) : JsBinaryArtifactHandler(
|
||||
testServices.assertions.assertEquals(expectedLines, actualLines) { generatedCode }
|
||||
}
|
||||
}
|
||||
|
||||
fun createIrJsLineNumberHandler(testServices: TestServices): JsBinaryArtifactHandler {
|
||||
return JsLineNumberHandler(FrontendKinds.ClassicFrontend, testServices)
|
||||
}
|
||||
|
||||
fun createFirJsLineNumberHandler(testServices: TestServices): JsBinaryArtifactHandler {
|
||||
return JsLineNumberHandler(FrontendKinds.FIR, testServices)
|
||||
}
|
||||
|
||||
@@ -138,7 +138,17 @@ open class AbstractJsIrLineNumberTest : AbstractJsIrTest(
|
||||
) {
|
||||
override fun configure(builder: TestConfigurationBuilder) {
|
||||
super.configure(builder)
|
||||
configureJsIrLineNumberTest(builder)
|
||||
with(builder) {
|
||||
defaultDirectives {
|
||||
+JsEnvironmentConfigurationDirectives.KJS_WITH_FULL_RUNTIME
|
||||
+JsEnvironmentConfigurationDirectives.NO_COMMON_FILES
|
||||
-JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER
|
||||
JsEnvironmentConfigurationDirectives.DONT_RUN_GENERATED_CODE.with(listOf("JS", "JS_IR", "JS_IR_ES6"))
|
||||
}
|
||||
configureJsArtifactsHandlersStep {
|
||||
useHandlers(::createIrJsLineNumberHandler)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,20 +203,6 @@ open class AbstractWebDemoExamplesTest : AbstractJsIrTest(
|
||||
}
|
||||
}
|
||||
|
||||
private fun configureJsIrLineNumberTest(builder: TestConfigurationBuilder) {
|
||||
with(builder) {
|
||||
defaultDirectives {
|
||||
+JsEnvironmentConfigurationDirectives.KJS_WITH_FULL_RUNTIME
|
||||
+JsEnvironmentConfigurationDirectives.NO_COMMON_FILES
|
||||
-JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER
|
||||
JsEnvironmentConfigurationDirectives.DONT_RUN_GENERATED_CODE.with(listOf("JS", "JS_IR", "JS_IR_ES6"))
|
||||
}
|
||||
configureJsArtifactsHandlersStep {
|
||||
useHandlers(::JsLineNumberHandler)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open class AbstractIrJsSteppingTest : AbstractJsIrTest(
|
||||
pathToTestDir = "compiler/testData/debug/stepping/",
|
||||
testGroupOutputDirPrefix = "debug/irStepping/"
|
||||
|
||||
+343
@@ -0,0 +1,343 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.js.test.fir;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TargetBackend;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Nested;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateJsTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("js/js.translator/testData/lineNumbers")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class FirJsLineNumberTestGenerated extends AbstractFirJsLineNumberTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInLineNumbers() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/lineNumbers"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("andAndWithSideEffect.kt")
|
||||
public void testAndAndWithSideEffect() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/andAndWithSideEffect.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("backingField.kt")
|
||||
public void testBackingField() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/backingField.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("catch.kt")
|
||||
public void testCatch() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/catch.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("chainedCall.kt")
|
||||
public void testChainedCall() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/chainedCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classCapturingLocals.kt")
|
||||
public void testClassCapturingLocals() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/classCapturingLocals.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("closure.kt")
|
||||
public void testClosure() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/closure.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexExpressionAsDefaultArgument.kt")
|
||||
public void testComplexExpressionAsDefaultArgument() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/complexExpressionAsDefaultArgument.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("conditionalDecomposed.kt")
|
||||
public void testConditionalDecomposed() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/conditionalDecomposed.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("coroutine.kt")
|
||||
public void testCoroutine() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/coroutine.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("coroutineNullAssertion.kt")
|
||||
public void testCoroutineNullAssertion() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/coroutineNullAssertion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("dataClass.kt")
|
||||
public void testDataClass() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/dataClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegateMemberVal.kt")
|
||||
public void testDelegateMemberVal() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/delegateMemberVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegatedProperty.kt")
|
||||
public void testDelegatedProperty() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/delegatedProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("delegation.kt")
|
||||
public void testDelegation() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/delegation.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("destructuring.kt")
|
||||
public void testDestructuring() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/destructuring.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("destructuringInline.kt")
|
||||
public void testDestructuringInline() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/destructuringInline.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("doWhileWithComplexCondition.kt")
|
||||
public void testDoWhileWithComplexCondition() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/doWhileWithComplexCondition.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("elvis.kt")
|
||||
public void testElvis() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/elvis.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumCompanionObject.kt")
|
||||
public void testEnumCompanionObject() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/enumCompanionObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("enumObject.kt")
|
||||
public void testEnumObject() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/enumObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("expressionAsFunctionBody.kt")
|
||||
public void testExpressionAsFunctionBody() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/expressionAsFunctionBody.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("for.kt")
|
||||
public void testFor() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/for.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("increment.kt")
|
||||
public void testIncrement() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/increment.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlineArguments.kt")
|
||||
public void testInlineArguments() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/inlineArguments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlineLocalVarsRef.kt")
|
||||
public void testInlineLocalVarsRef() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/inlineLocalVarsRef.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlineReturn.kt")
|
||||
public void testInlineReturn() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/inlineReturn.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlining.kt")
|
||||
public void testInlining() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/inlining.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inliningWithLambda.kt")
|
||||
public void testInliningWithLambda() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/inliningWithLambda.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("innerClass.kt")
|
||||
public void testInnerClass() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/innerClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("isOperator.kt")
|
||||
public void testIsOperator() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/isOperator.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jsCode.kt")
|
||||
public void testJsCode() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/jsCode.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lambdaWithClosure.kt")
|
||||
public void testLambdaWithClosure() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/lambdaWithClosure.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lastExpressionInInlineLambda.kt")
|
||||
public void testLastExpressionInInlineLambda() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/lastExpressionInInlineLambda.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("literals.kt")
|
||||
public void testLiterals() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/literals.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("longLiteral.kt")
|
||||
public void testLongLiteral() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/longLiteral.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("memberFunWithDefaultParam.kt")
|
||||
public void testMemberFunWithDefaultParam() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/memberFunWithDefaultParam.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multipleReferences.kt")
|
||||
public void testMultipleReferences() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/multipleReferences.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("objectInstanceFunction.kt")
|
||||
public void testObjectInstanceFunction() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/objectInstanceFunction.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("optionalArgs.kt")
|
||||
public void testOptionalArgs() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/optionalArgs.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("propertyWithoutInitializer.kt")
|
||||
public void testPropertyWithoutInitializer() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/propertyWithoutInitializer.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("simple.kt")
|
||||
public void testSimple() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/simple.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("stringLiteral.kt")
|
||||
public void testStringLiteral() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/stringLiteral.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("syntheticCodeInConstructors.kt")
|
||||
public void testSyntheticCodeInConstructors() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/syntheticCodeInConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("syntheticCodeInEnums.kt")
|
||||
public void testSyntheticCodeInEnums() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/syntheticCodeInEnums.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("valParameter.kt")
|
||||
public void testValParameter() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/valParameter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("whenEntryWithMultipleConditions.kt")
|
||||
public void testWhenEntryWithMultipleConditions() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("whenEntryWithMultipleConditionsNonOptimized.kt")
|
||||
public void testWhenEntryWithMultipleConditionsNonOptimized() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/whenEntryWithMultipleConditionsNonOptimized.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("whenIn.kt")
|
||||
public void testWhenIn() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/whenIn.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("whenIs.kt")
|
||||
public void testWhenIs() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/whenIs.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("whileWithComplexCondition.kt")
|
||||
public void testWhileWithComplexCondition() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/whileWithComplexCondition.kt");
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("js/js.translator/testData/lineNumbers/inlineMultiModule")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class InlineMultiModule {
|
||||
@Test
|
||||
public void testAllFilesPresentInInlineMultiModule() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/lineNumbers/inlineMultiModule"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("simple.kt")
|
||||
public void testSimple() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/inlineMultiModule/simple.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
@@ -205,6 +205,12 @@ public class JsIrLineNumberTestGenerated extends AbstractJsIrLineNumberTest {
|
||||
runTest("js/js.translator/testData/lineNumbers/isOperator.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("jsCode.kt")
|
||||
public void testJsCode() throws Exception {
|
||||
runTest("js/js.translator/testData/lineNumbers/jsCode.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lambdaWithClosure.kt")
|
||||
public void testLambdaWithClosure() throws Exception {
|
||||
|
||||
@@ -6,5 +6,4 @@ fun box(x: Int, y: Int) {
|
||||
|
||||
fun foo(x: Int) = x
|
||||
|
||||
// LINES(JS): 1 5 3 3 4 3 3 3 3 * 3 3 4 4 4 4 * 4 4 4 4 2 3 7 7 7
|
||||
// LINES(JS_IR): 1 1 * 3 3 3 * 3 3 * 4 4 4 * 4 4 2 7 7 7 7
|
||||
// LINES(JS_IR): 1 1 * 3 3 3 * 3 3 * 4 4 4 * 4 4 2 7 7 7 7
|
||||
|
||||
+1
-2
@@ -12,5 +12,4 @@ open class A {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 2 4 4 2 2 2 2 5 5 5 6 7 12 8 9 10 11
|
||||
// LINES(JS_IR): 1 1 2 2 4 4 2 2 2 2 2 2 7 8 9 10 10 11 5 6 6 5 6
|
||||
// LINES(JS_IR): 1 1 2 2 4 4 2 2 2 2 2 2 7 8 9 10 10 11 5 6 6 5 6
|
||||
|
||||
+1
-2
@@ -19,5 +19,4 @@ fun bar() {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 11 3 3 5 5 6 6 8 8 9 9 2 2 * 13 20 15 15 18 18
|
||||
// LINES(JS_IR): 1 1 3 3 * 5 5 6 6 * 8 8 9 9 * 13 13 15 15 17 17 18 18
|
||||
// LINES(JS_IR): 1 1 3 3 * 5 5 6 6 * 8 8 9 9 * 13 13 15 15 17 17 18 18
|
||||
|
||||
+1
-2
@@ -14,5 +14,4 @@ class C {
|
||||
val baz: dynamic get() = null
|
||||
}
|
||||
|
||||
// LINES(JS): 1 9 2 4 3 2 6 8 7 6 11 12 12 12 14 14 14
|
||||
// LINES(JS_IR): 1 1 2 4 3 2 6 8 7 6 11 11 12 12 12 14 14 14
|
||||
// LINES(JS_IR): 1 1 2 4 3 2 6 8 7 6 11 11 12 12 12 14 14 14
|
||||
|
||||
@@ -14,5 +14,4 @@ fun A.foo() {
|
||||
|
||||
fun baz() = 23
|
||||
|
||||
// LINES(JS): 1 * 5 5 5 6 9 7 7 8 8 * 3 13 4 4 11 11 12 12 15 15 15
|
||||
// LINES(JS_IR): 1 1 3 3 4 11 11 12 12 15 15 15 15 5 3 4 5 * 6 7 7 8 8
|
||||
// LINES(JS_IR): 1 1 3 3 4 11 11 12 12 15 15 15 15 5 3 4 5 * 6 7 7 8 8
|
||||
|
||||
+1
-2
@@ -5,5 +5,4 @@ fun box(x: Int, y: Int): Int {
|
||||
return foo(y)
|
||||
}
|
||||
|
||||
// LINES(JS): 2 2 2 4 4 1 6 2 2 5 5
|
||||
// LINES(JS_IR): 1 1 5 5 2 1 3 4 4 4
|
||||
// LINES(JS_IR): 1 1 5 5 2 1 3 4 4 4
|
||||
|
||||
+1
-2
@@ -11,5 +11,4 @@ fun baz() = 1
|
||||
|
||||
fun bar() = 2
|
||||
|
||||
// LINES(JS): 1 3 3 2 2 4 3 4 4 4 5 5 2 8 8 10 10 10 12 12 12
|
||||
// LINES(JS_IR): 1 2 8 * 4 3 4 5 * 8 8 10 10 10 10 12 12 12 12
|
||||
// LINES(JS_IR): 1 2 8 * 4 3 4 5 * 8 8 10 10 10 10 12 12 12 12
|
||||
|
||||
@@ -14,5 +14,5 @@ private inline fun foo(): Int {
|
||||
return 23
|
||||
}
|
||||
|
||||
// LINES(JS): 1 10 3 3 3 4 3 6 13 13 3 14 2 12 15 13 13 14 14
|
||||
// LINES(JS_IR): 1 1 * 3 4 6 * 13 13 14 2 12 12 13 13 14 14
|
||||
// LINES(ClassicFrontend JS_IR): 1 1 * 3 4 6 * 13 13 14 2 12 12 13 13 14 14
|
||||
// LINES(FIR JS_IR): 1 1 * 4 4 6 * 13 13 14 2 12 12 13 13 14 14
|
||||
|
||||
@@ -14,5 +14,4 @@ suspend fun bar(): Unit {
|
||||
println(a + b)
|
||||
}
|
||||
|
||||
// LINES(JS): 39 4 4 4 7 5 5 45 45 5 93 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9
|
||||
// LINES(JS_IR): 4 4 * 93 3 45 45 7 7 6 9 9 * 9 * 9 * 10 10 * 11 * 11 12 12 * 13 * 13 14 14 15 15
|
||||
|
||||
@@ -8,5 +8,4 @@ suspend fun foo() {
|
||||
suspend fun delay() {
|
||||
}
|
||||
|
||||
// LINES(JS): 1 6 1 1 * 1 6 2 2 2 2 2 * 3 3 4 4 4 4 4 5 5 * 1 6 1 1 1 1 8 9
|
||||
// LINES(JS_IR): 1 1 * 8 8 9 9 1 * 1 * 2 * 3 3 3 * 5 5 6 6
|
||||
|
||||
+2
-2
@@ -3,5 +3,5 @@ data class A(
|
||||
val y: String
|
||||
)
|
||||
|
||||
// LINES(JS): 1 2 3 * 1 2 2 1 3 3 1 1 1 2 3 1 1 1 2 3 1 1 1 2 3 1 1 1 1 1 2 3
|
||||
// LINES(JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 1 1 1 1 1 1 1 2 3 1 1 1 1 2 3 1 1 * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||
// LINES(ClassicFrontend JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 1 1 1 1 1 1 1 2 3 1 1 1 1 2 3 1 1 * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||
// LINES(FIR JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 1 1 1 1 1 1 1 1 1 1 1 1 * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||
|
||||
@@ -13,5 +13,5 @@ class Delegate(val f: () -> Int) {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 3 * 2 2 3 3 3 3 * 6 8 7 7 10 10 11 13 12 12
|
||||
// LINES(JS_IR): 3 3 3 3 1 1 3 3 3 2 3 3 3 2 1 2 6 6 7 7 10 10 10 10 10 10 10 11 12 12 2 2 18 * 2
|
||||
// LINES(FIR JS_IR): 3 3 3 3 1 1 3 3 3 3 3 3 6 6 7 7 10 10 10 10 10 10 10 11 12 12 3 3 18 * 3
|
||||
// LINES(ClassicFrontend JS_IR): 3 3 3 3 1 1 3 3 3 2 3 3 3 2 1 2 6 6 7 7 10 10 10 10 10 10 10 11 12 12 2 2 18 * 2
|
||||
|
||||
@@ -15,5 +15,5 @@ class B {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 3 4 5 * 4 4 4 * 8 9 11 10 10 13 15 14 14
|
||||
// LINES(JS_IR): 3 3 5 5 4 5 5 5 4 1 4 5 4 5 5 5 4 1 4 8 8 9 10 10 13 14 14 4 4 20 * 4 20 * 4 4 20 * 4 20
|
||||
// LINES(ClassicFrontend JS_IR): 3 3 5 5 4 5 5 5 4 1 4 5 4 5 5 5 4 1 4 8 8 9 10 10 13 14 14 4 4 20 * 4 20 * 4 4 20 * 4 20
|
||||
// LINES(FIR JS_IR): 3 3 5 5 4 5 5 5 5 5 5 8 8 9 10 10 13 14 14 5 5 20 * 5 20 * 5 5 20 * 5 20
|
||||
|
||||
@@ -18,5 +18,4 @@ val o = object : I {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 3 2 2 2 2 2 2 2 * 11 12 12 12 15 15 15 16 18 17 17
|
||||
// LINES(JS_IR): 11 11 * 11 11 * 1 1 3 3 1 1 1 1 1 1 1 1 1 * 11 11 12 12 12 16 17 17 15 15 15 * 1 * 11
|
||||
|
||||
+2
-2
@@ -27,5 +27,5 @@ fun bar(f: (Pair<String, String>) -> Unit) {
|
||||
}
|
||||
|
||||
|
||||
// LINES(JS): 15 22 16 16 17 18 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 5 5 6 7 11 11 12 12 15 15 25 27 26 26 * 1 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 6 9 7 9 11 11 12 12 15 15 25 25 26 26 15 16 15 17 16 18 16 20 20 21 21 22 22 * 1
|
||||
// LINES(ClassicFrontend JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 6 9 7 9 11 11 12 12 15 15 25 25 26 26 15 16 15 17 16 18 16 20 20 21 21 22 22 * 1
|
||||
// LINES(FIR JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 5 9 6 7 11 11 12 12 15 15 25 25 26 26 15 16 15 17 18 20 20 21 21 22 22 * 1
|
||||
|
||||
@@ -32,5 +32,5 @@ inline operator fun P.component1() = a
|
||||
|
||||
inline operator fun P.component2() = b
|
||||
|
||||
// LINES(JS): 15 22 17 17 31 18 18 33 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 6 6 31 7 7 33 11 11 12 12 15 15 25 27 26 26 29 29 29 * 31 31 31 33 33 33 * 1 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 * 6 31 9 * 7 33 9 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 16 * 18 33 16 20 20 21 21 22 22 * 1
|
||||
// LINES(ClassicFrontend JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 * 6 31 9 * 7 33 9 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 16 * 18 33 16 20 20 21 21 22 22 * 1
|
||||
// LINES(FIR JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 5 9 * 6 31 6 * 7 33 7 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 17 * 18 33 18 20 20 21 21 22 22 * 1
|
||||
|
||||
@@ -13,5 +13,4 @@ fun box() {
|
||||
)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 14 8 8 7 3 2 2 3 3 3 8 8 11 11 * 3 7 12 3 3 4 4
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 * 8 8 8 8 11 11 * 7 12
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 * 8 8 8 8 11 11 * 7 12
|
||||
|
||||
@@ -9,5 +9,4 @@ fun box(x: String?) {
|
||||
|
||||
fun foo() = "bar"
|
||||
|
||||
// LINES(JS): 3 8 7 7 4 4 4 5 5 7 7 7 7 * 5 4 5 10 10 10 * 1 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 4 * 5 5 * 7 7 7 * 5 4 4 10 10 10 10 * 1
|
||||
|
||||
@@ -6,5 +6,4 @@ enum class Foo {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 1 1 1 1 1 1 1 2 2 4 * 2 2 2 2 4 4 5 5 * 4 4 4 4 4 4 4 * 1 1 1 * 1 1 1 1 1 1
|
||||
// LINES(JS_IR): 4 4 * 5 5 5 5 5 * 1 * 1 1 * 1 * 1 1
|
||||
// LINES(JS_IR): 4 4 * 5 5 5 5 5 * 1 * 1 1 * 1 * 1 1
|
||||
|
||||
+1
-2
@@ -10,5 +10,4 @@ enum class E {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 1 1 1 1 1 1 1 2 2 4 8 * 2 2 2 2 4 4 4 5 5 5 * 4 4 4 4 8 8 8 9 9 9 * 8 8 8 8 * 1 1 1 * 1 1 1 1 1 1 1 1 1 1
|
||||
// LINES(JS_IR): 4 4 * 5 5 5 * 8 8 * 9 9 9 * 1 * 1 1 * 1 * 1 1
|
||||
// LINES(JS_IR): 4 4 * 5 5 5 * 8 8 * 9 9 9 * 1 * 1 1 * 1 * 1 1
|
||||
|
||||
@@ -4,5 +4,4 @@ fun box() =
|
||||
fun foo() =
|
||||
23
|
||||
|
||||
// LINES(JS): 1 2 2 4 5 5
|
||||
// LINES(JS_IR): 1 2 2 2 4 5 5 5
|
||||
|
||||
+1
-2
@@ -17,6 +17,5 @@ fun box() {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16
|
||||
// LINES(JS_IR): 1 1 * 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 10 10 10 10 11 11 14 15 15 15 15 15 15 15 15 16 16
|
||||
// LINES(JS_IR): 1 1 * 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 10 10 10 10 11 11 14 15 15 15 15 15 15 15 15 16 16
|
||||
|
||||
|
||||
+1
-2
@@ -8,5 +8,4 @@ fun foo(x: Int) {
|
||||
println(y)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 9 2 2 3 3 4 4 5 5 6 6 7 7 8 8
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 7 7 8 8
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 7 7 8 8
|
||||
|
||||
@@ -11,5 +11,4 @@ inline fun foo(x: Int) {
|
||||
|
||||
fun bar() = 23
|
||||
|
||||
// LINES(JS): 3 5 4 4 8 8 9 9 7 10 8 8 9 9 12 12 12 * 1 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 * 4 8 8 9 9 7 7 8 8 9 9 12 12 12 12 * 1
|
||||
|
||||
@@ -9,5 +9,4 @@ fun bar() {
|
||||
foo(42)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 1 1 1 6 2 2 3 3 4 4 8 10 2 2 9 2 3 3 4 4
|
||||
// LINES(JS_IR): 1 1 2 3 3 3 4 4 8 8 * 2 9 2 3 3 3 4 4
|
||||
// LINES(JS_IR): 1 1 2 3 3 3 4 4 8 8 * 2 9 2 3 3 3 4 4
|
||||
|
||||
@@ -8,8 +8,7 @@ inline fun foo(x: String) {
|
||||
println("foo2($x);")
|
||||
}
|
||||
|
||||
// LINES(JS): 6 6 6 6 6 9 7 7 8 8
|
||||
// LINES(JS_IR): 6 6 7 7 8 8
|
||||
// LINES(JS_IR): 6 6 7 7 8 8
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
@@ -22,5 +21,4 @@ fun box() {
|
||||
foo("42")
|
||||
}
|
||||
|
||||
// LINES(JS): 6 20 23 7 7 21 7 8 8 21 8 7 7 22 7 8 8 22 8
|
||||
// LINES(JS_IR): 20 20 * 7 7 8 7 8 8 * 7 7 8 7 8 8
|
||||
// LINES(JS_IR): 19 19 * 7 7 8 7 8 8 * 7 7 8 7 8 8
|
||||
|
||||
+1
-2
@@ -21,5 +21,4 @@ fun bar(x: Int) {
|
||||
println("%")
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 1 1 1 1 1 1 1 17 2 2 3 3 4 7 7 9 9 10 10 11 14 14 16 16 19 22 20 20 20 20 17 2 2 3 3 4 3 7 7 9 9 10 10 11 10 14 14 16 16 20 21 21
|
||||
// LINES(JS_IR): 1 1 2 2 2 3 3 4 7 7 9 9 9 10 10 11 14 14 16 16 19 19 * 20 * 20 2 2 2 3 3 4 * 7 7 9 9 9 10 10 11 * 14 14 16 16 20 20 21 21
|
||||
// LINES(JS_IR): 1 1 2 2 2 3 3 4 7 7 9 9 9 10 10 11 14 14 16 16 19 19 * 20 * 20 2 2 2 3 3 4 * 7 7 9 9 9 10 10 11 * 14 14 16 16 20 20 21 21
|
||||
|
||||
+1
-2
@@ -11,5 +11,4 @@ inline fun bar() {
|
||||
println("bar2")
|
||||
}
|
||||
|
||||
// LINES(JS): 1 7 2 2 10 10 11 11 4 4 10 10 11 11 6 6 9 9 9 9 9 12 10 10 11 11
|
||||
// LINES(JS_IR): 1 1 2 2 * 10 10 11 11 4 4 * 10 10 11 11 6 6 9 9 10 10 11 11
|
||||
// LINES(JS_IR): 1 1 2 2 * 10 10 11 11 4 4 * 10 10 11 11 6 6 9 9 10 10 11 11
|
||||
|
||||
@@ -16,5 +16,4 @@ inline fun foo(f: () -> Unit) {
|
||||
println("after")
|
||||
}
|
||||
|
||||
// LINES(JS): 1 11 2 2 14 14 4 4 16 16 6 6 14 14 8 8 16 16 10 10 13 13 13 13 13 17 14 14 15 15 16 16
|
||||
// LINES(JS_IR): 1 1 2 2 * 14 14 * 4 4 16 16 6 6 * 14 14 * 8 8 16 16 10 10 13 13 14 14 15 15 16 16
|
||||
// LINES(JS_IR): 1 1 2 2 * 14 14 * 4 4 16 16 6 6 * 14 14 * 8 8 16 16 10 10 13 13 14 14 15 15 16 16
|
||||
|
||||
+1
-2
@@ -6,5 +6,4 @@ class A(val x: Int) {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 2 2 3 5 4 4
|
||||
// LINES(JS_IR): 2 2 2 2 3 4 4 1 1 1 1 1 1 1
|
||||
// LINES(JS_IR): 2 2 2 2 3 4 4 1 1 1 1 1 1 1
|
||||
|
||||
+1
-2
@@ -11,5 +11,4 @@ inline fun foo(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
// LINES(JS): 3 7 4 4 4 10 10 4 11 4 5 5 9 12 10 10 11 11 * 1 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 * 4 4 * 10 10 11 4 4 4 5 5 9 9 10 10 11 11 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 * 4 4 * 10 10 11 4 4 4 5 5 9 9 10 10 11 11 * 1
|
||||
|
||||
+1
-4
@@ -5,7 +5,4 @@ fun foo() {
|
||||
println("after: $x")
|
||||
}
|
||||
|
||||
// DONT_TARGET_EXACT_BACKEND: JS_IR
|
||||
// ^There is a better stepping test
|
||||
|
||||
// LINES(JS): 1 6 2 2 3 3 4 4 5 5
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5
|
||||
|
||||
@@ -4,5 +4,4 @@ fun foo(x: Int): () -> Unit = {
|
||||
|
||||
fun bar() = 23
|
||||
|
||||
// LINES(JS): 1 1 1 3 2 2 3 3 1 1 1 5 5 5
|
||||
// LINES(JS_IR): 1 1 3 3 1 5 5 5 5 1 1 1 2 2 3 3
|
||||
// LINES(JS_IR): 1 1 3 3 1 5 5 5 5 1 1 1 2 2 3 3
|
||||
|
||||
@@ -24,5 +24,4 @@ fun baz() = "baz"
|
||||
|
||||
fun boo() = "boo"
|
||||
|
||||
// LINES(JS): 1 17 9 4 6 6 7 7 3 3 3 * 13 12 13 13 14 19 21 20 20 23 23 23 25 25 25
|
||||
// LINES(JS_IR): 1 1 * 4 * 6 7 * 13 12 13 19 19 20 20 23 23 23 23 25 25 25 25
|
||||
// LINES(JS_IR): 1 1 * 4 * 6 7 * 13 12 13 19 19 20 20 23 23 23 23 25 25 25 25
|
||||
|
||||
+1
-2
@@ -26,5 +26,4 @@ fun bar(vararg x: Any?) {
|
||||
println(x)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 22 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 * 25 27 26 26
|
||||
// LINES(JS_IR): 1 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 25 25 26 26
|
||||
// LINES(JS_IR): 1 1 2 3 4 5 6 7 8 9 10 13 14 15 16 17 18 19 20 25 25 26 26
|
||||
|
||||
+1
-2
@@ -5,5 +5,4 @@ fun foo() {
|
||||
0L)
|
||||
}
|
||||
|
||||
// LINES(JS): 3 * 5 1 6 2 4
|
||||
// LINES(JS_IR): 1 1 2 3 4 5
|
||||
// LINES(JS_IR): 1 1 2 3 4 5
|
||||
|
||||
@@ -10,5 +10,4 @@ class B : A() {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 2 2 2 2 2 2 2 2 4 4 4 * 7 7 8 10 9 9
|
||||
// LINES(JS_IR): 1 1 2 2 2 2 2 * 4 4 4 7 7 7 8 9 9
|
||||
// LINES(JS_IR): 1 1 2 2 2 2 2 * 4 4 4 7 7 7 8 9 9
|
||||
|
||||
@@ -12,5 +12,4 @@ object O {
|
||||
val y = 23
|
||||
}
|
||||
|
||||
// LINES(JS): 1 9 2 2 3 3 4 4 6 6 7 7 8 8 11 11 12 12 * 11 11 11 11 11 11
|
||||
// LINES(JS_IR): 1 1 2 2 3 3 4 4 6 6 7 7 8 8 11 11 * 12 12 12 12 12
|
||||
// LINES(JS_IR): 1 1 2 2 3 3 4 4 6 6 7 7 8 8 11 11 * 12 12 12 12 12
|
||||
|
||||
@@ -4,5 +4,4 @@ fun foo() {
|
||||
println("foo")
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 * 1 1 1 1 1 1 3 5 4 4
|
||||
// LINES(JS_IR): 1 1 * 3 3 4 4
|
||||
// LINES(JS_IR): 1 1 * 3 3 4 4
|
||||
|
||||
+1
-2
@@ -7,5 +7,4 @@ fun box(
|
||||
println(y)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 8 2 2 2 2 3 3 3 4 6 6 7 7
|
||||
// LINES(JS_IR): 1 2 3 5 2 4 6 6 7 7
|
||||
// LINES(JS_IR): 1 2 3 5 2 4 6 6 7 7
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
open class A {
|
||||
abstract class A {
|
||||
val x: Int
|
||||
|
||||
open val y: Int
|
||||
abstract val y: Int
|
||||
|
||||
init {
|
||||
x = 23
|
||||
y = 42
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 4 7 7 8 8 4 4 4
|
||||
// LINES(JS_IR): 1 1 7 7 8 8 2 2 2 4 4 4
|
||||
class B(override val y: Int): A()
|
||||
|
||||
// LINES(JS_IR): 1 1 7 7 2 2 2 12 12 12 12 12 12 12 12
|
||||
|
||||
+1
-2
@@ -3,5 +3,4 @@ fun box() {
|
||||
println("bar")
|
||||
}
|
||||
|
||||
// LINES(JS): 1 4 2 2 3 3
|
||||
// LINES(JS_IR): 1 1 2 2 3 3
|
||||
// LINES(JS_IR): 1 1 2 2 3 3
|
||||
|
||||
+1
-2
@@ -4,5 +4,4 @@ fun box(x: Int): String {
|
||||
"suffix"
|
||||
}
|
||||
|
||||
// LINES(JS): 1 5 2 2 3 4
|
||||
// LINES(JS_IR): 1 1 2 2 3 4
|
||||
// LINES(JS_IR): 1 1 2 2 3 4
|
||||
|
||||
@@ -25,5 +25,4 @@ class C : A {
|
||||
)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 3 * 1 1 1 1 1 1 7 * 9 10 11 * 15 15 16 17 14 19 15 15 22 22 23 24 22 22
|
||||
// LINES(JS_IR): 1 1 * 3 * 7 7 9 9 10 11 15 15 16 17 15 19 * 15 15 * 22 23 24 23 * 22 * 14
|
||||
// LINES(JS_IR): 1 1 * 3 * 7 7 9 9 10 11 15 15 16 17 15 19 * 15 15 * 22 23 24 23 * 22 * 14
|
||||
|
||||
@@ -8,5 +8,4 @@ enum class E {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 1 1 1 1 1 1 1 2 2 3 3 4 * 2 2 2 2 * 3 3 3 3 4 4 4 6 6 * 4 4 4 4 * 1 1 1 * 1 1 1 1 1 1 1 1 1 1
|
||||
// LINES(JS_IR): 4 4 * 6 6 * 1 * 1 1 * 1 * 1 1
|
||||
// LINES(JS_IR): 4 4 * 6 6 * 1 * 1 1 * 1 * 1 1
|
||||
|
||||
+1
-2
@@ -7,5 +7,4 @@ fun foo() {
|
||||
A(23, "foo")
|
||||
}
|
||||
|
||||
// LINES(JS): 1 2 3 * 6 8 7 7
|
||||
// LINES(JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 6 6 7 7
|
||||
// LINES(JS_IR): 1 2 3 1 2 2 3 3 2 2 2 3 3 3 6 6 7 7
|
||||
|
||||
@@ -18,5 +18,5 @@ fun box(x: Int) {
|
||||
)
|
||||
}
|
||||
|
||||
// LINES(JS): 1 19 4 4 3 3 4 6 9 9 6 11 13 13 11 16 16 3 2
|
||||
// LINES(JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16
|
||||
// LINES(ClassicFrontend JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16
|
||||
// LINES(FIR JS_IR): 1 1 2 6 4 6 7 4 7 8 4 8 9 11 4 11 12 4 12 13 16
|
||||
|
||||
+2
-2
@@ -28,5 +28,5 @@ fun four() = 4
|
||||
|
||||
fun five() = 5
|
||||
|
||||
// LINES(JS): 1 19 4 4 3 6 4 6 4 7 4 8 9 9 11 4 11 4 12 13 13 16 16 2 21 21 21 23 23 23 25 25 25 27 27 27 29 29 29
|
||||
// LINES(JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16 21 21 21 21 23 23 23 23 25 25 25 25 27 27 27 27 29 29 29 29
|
||||
// LINES(ClassicFrontend JS_IR): 1 1 2 8 7 6 4 6 7 4 7 8 4 8 9 12 11 4 11 12 4 12 13 16 21 21 21 21 23 23 23 23 25 25 25 25 27 27 27 27 29 29 29 29
|
||||
// LINES(FIR JS_IR): 1 1 2 6 4 6 7 4 7 8 4 8 9 11 4 11 12 4 12 13 16 21 21 21 21 23 23 23 23 25 25 25 25 27 27 27 27 29 29 29 29
|
||||
|
||||
+1
-2
@@ -13,5 +13,4 @@ fun foo(): Int = 23
|
||||
|
||||
fun bar(): IntRange = 1000..2000
|
||||
|
||||
// LINES(JS): 1 10 2 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 12 12 12 14 14 14
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 7 7 7 7 8 8 12 12 12 12 14 14 14 14
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 7 7 7 7 8 8 12 12 12 12 14 14 14 14
|
||||
|
||||
+1
-2
@@ -13,5 +13,4 @@ open class A
|
||||
|
||||
open class B : A()
|
||||
|
||||
// LINES(JS): 1 10 2 2 2 2 3 3 4 4 5 5 6 6 8 8 12 * 14 14
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 8 8 12 12 14 14 14
|
||||
// LINES(JS_IR): 1 1 2 3 3 4 4 5 5 6 6 8 8 12 12 14 14 14
|
||||
|
||||
@@ -12,5 +12,4 @@ fun box() {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 13 5 5 4 2 2 3 5 5 8 8 * 3 4 9 3 11 11
|
||||
// LINES(JS_IR): 1 1 2 * 3 * 5 5 5 5 8 8 * 4 9 * 11 11
|
||||
// LINES(JS_IR): 1 1 2 * 3 * 5 5 5 5 8 8 * 4 9 * 11 11
|
||||
|
||||
Reference in New Issue
Block a user