diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ArgumentGenerator.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/ArgumentGenerator.kt index 8e69642331a..da8b53750a6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ArgumentGenerator.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ArgumentGenerator.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.codegen +import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.resolve.calls.model.DefaultValueArgument import org.jetbrains.kotlin.resolve.calls.model.ExpressionValueArgument import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument @@ -31,7 +32,12 @@ abstract class ArgumentGenerator { * * @see kotlin.reflect.jvm.internal.KCallableImpl.callBy */ - open fun generate(valueArgumentsByIndex: List, actualArgs: List): DefaultCallArgs { + open fun generate( + valueArgumentsByIndex: List, + actualArgs: List, + // may be null for a constructor of an object literal + calleeDescriptor: CallableDescriptor? + ): DefaultCallArgs { assert(valueArgumentsByIndex.size == actualArgs.size) { "Value arguments collection should have same size, but ${valueArgumentsByIndex.size} != ${actualArgs.size}" } @@ -48,7 +54,8 @@ abstract class ArgumentGenerator { } } - val defaultArgs = DefaultCallArgs(valueArgumentsByIndex.size) + // Use unwrapped version, because additional synthetic parameters can't have default values + val defaultArgs = DefaultCallArgs(calleeDescriptor?.unwrapFrontendVersion()?.valueParameters?.size ?: 0) for (argumentWithDeclIndex in actualArgsWithDeclIndex) { val argument = argumentWithDeclIndex.arg diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/CallBasedArgumentGenerator.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/CallBasedArgumentGenerator.java index 76502211980..c79cd34ee86 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/CallBasedArgumentGenerator.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/CallBasedArgumentGenerator.java @@ -17,6 +17,8 @@ package org.jetbrains.kotlin.codegen; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.descriptors.CallableDescriptor; import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor; import org.jetbrains.kotlin.psi.KtExpression; import org.jetbrains.kotlin.psi.ValueArgument; @@ -54,11 +56,12 @@ public class CallBasedArgumentGenerator extends ArgumentGenerator { @Override public DefaultCallArgs generate( @NotNull List valueArgumentsByIndex, - @NotNull List valueArgs + @NotNull List valueArgs, + @Nullable CallableDescriptor calleeDescriptor ) { boolean shouldMarkLineNumbers = this.codegen.isShouldMarkLineNumbers(); this.codegen.setShouldMarkLineNumbers(false); - DefaultCallArgs defaultArgs = super.generate(valueArgumentsByIndex, valueArgs); + DefaultCallArgs defaultArgs = super.generate(valueArgumentsByIndex, valueArgs, calleeDescriptor); this.codegen.setShouldMarkLineNumbers(shouldMarkLineNumbers); return defaultArgs; } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index d817254a58d..49d351a61c5 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -1709,7 +1709,7 @@ public class ExpressionCodegen extends KtVisitor impleme ArgumentGenerator argumentGenerator = new CallBasedArgumentGenerator(ExpressionCodegen.this, defaultCallGenerator, valueParameters, mappedTypes); - argumentGenerator.generate(valueArguments, valueArguments); + argumentGenerator.generate(valueArguments, valueArguments, null); } Collection constructors = classDescriptor.getConstructors(); @@ -2867,7 +2867,11 @@ public class ExpressionCodegen extends KtVisitor impleme assert valueArguments != null : "Failed to arrange value arguments by index: " + resolvedCall.getResultingDescriptor(); DefaultCallArgs defaultArgs = - argumentGenerator.generate(valueArguments, new ArrayList(resolvedCall.getValueArguments().values())); + argumentGenerator.generate( + valueArguments, + new ArrayList(resolvedCall.getValueArguments().values()), + resolvedCall.getResultingDescriptor() + ); if (tailRecursionCodegen.isTailRecursion(resolvedCall)) { tailRecursionCodegen.generateTailRecursion(resolvedCall); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java index 4fce9cdc44a..3646148bade 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java @@ -883,7 +883,7 @@ public abstract class StackValue { newReceiver.put(newReceiver.type, v); callGenerator.processAndPutHiddenParameters(false); - defaultArgs = generator.generate(valueArguments, valueArguments); + defaultArgs = generator.generate(valueArguments, valueArguments, call.getResultingDescriptor()); } private ArgumentGenerator createArgumentGenerator() { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java index 5fee263c9c5..ee9a449f7b7 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.java @@ -1154,13 +1154,13 @@ public class KotlinTypeMapper { } @NotNull - private static String getDefaultDescriptor(@NotNull Method method, @Nullable String dispatchReceiverDescriptor, boolean isExtension) { + private static String getDefaultDescriptor( + @NotNull Method method, + @Nullable String dispatchReceiverDescriptor, + @NotNull CallableDescriptor callableDescriptor + ) { String descriptor = method.getDescriptor(); - int argumentsCount = Type.getArgumentTypes(descriptor).length; - if (isExtension) { - argumentsCount--; - } - int maskArgumentsCount = (argumentsCount + Integer.SIZE - 1) / Integer.SIZE; + int maskArgumentsCount = (callableDescriptor.getValueParameters().size() + Integer.SIZE - 1) / Integer.SIZE; String additionalArgs = StringUtil.repeat(Type.INT_TYPE.getDescriptor(), maskArgumentsCount); additionalArgs += (isConstructor(method) ? DEFAULT_CONSTRUCTOR_MARKER : OBJECT_TYPE).getDescriptor(); String result = descriptor.replace(")", additionalArgs + ")"); @@ -1186,7 +1186,7 @@ public class KotlinTypeMapper { String descriptor = getDefaultDescriptor( jvmSignature, isStaticMethod(kind, functionDescriptor) || isConstructor ? null : ownerType.getDescriptor(), - functionDescriptor.getExtensionReceiverParameter() != null + CodegenUtilKt.unwrapFrontendVersion(functionDescriptor) ); return new Method(isConstructor ? "" : jvmSignature.getName() + JvmAbi.DEFAULT_PARAMS_IMPL_SUFFIX, descriptor); diff --git a/compiler/testData/codegen/box/coroutines/32defaultParametersInSuspend.kt b/compiler/testData/codegen/box/coroutines/32defaultParametersInSuspend.kt new file mode 100644 index 00000000000..6903dcf0a31 --- /dev/null +++ b/compiler/testData/codegen/box/coroutines/32defaultParametersInSuspend.kt @@ -0,0 +1,80 @@ +// WITH_RUNTIME +// WITH_COROUTINES +import kotlin.coroutines.experimental.* +import kotlin.coroutines.experimental.intrinsics.* + +class Controller { + suspend fun suspendHere( + a: String = "abc", + i1: Int = 1, + i2: Int = 1, + i3: Int = 1, + i4: Int = 1, + i5: Int = 1, + i6: Int = 1, + i7: Int = 1, + i8: Int = 1, + i9: Int = 1, + i10: Int = 1, + i11: Int = 1, + i12: Int = 1, + i13: Int = 1, + i14: Int = 1, + i15: Int = 1, + i16: Int = 1, + i17: Int = 1, + i18: Int = 1, + i19: Int = 1, + i20: Int = 1, + i21: Int = 1, + i22: Int = 1, + i23: Int = 1, + i24: Int = 1, + i25: Int = 1, + i26: Int = 1, + i27: Int = 1, + i28: Int = 1, + i29: Int = 1, + i30: Int = 1, + i31: Int = 1 + ): String = suspendCoroutineOrReturn { x -> + x.resume(a + "#" + (i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15 + i16 + i17 + i18 + i19 + i20 + i21 + i22 + i23 + i24 + i25 + i26 + i27 + i28 + i29 + i30 + i31)) + COROUTINE_SUSPENDED + } +} + +fun builder(c: suspend Controller.() -> Unit) { + c.startCoroutine(Controller(), EmptyContinuation) +} + +fun box(): String { + var result = "OK" + + builder { + var a = suspendHere() + if (a != "abc#31") { + result = "fail 1: $a" + throw RuntimeException(result) + } + + a = suspendHere("cde") + if (a != "cde#31") { + result = "fail 2: $a" + throw RuntimeException(result) + } + + a = suspendHere(i2 = 6) + if (a != "abc#36") { + result = "fail 3: $a" + throw RuntimeException(result) + } + + a = suspendHere("xyz", 9) + if (a != "xyz#39") { + result = "fail 4: $a" + throw RuntimeException(result) + } + } + + return result +} diff --git a/compiler/testData/codegen/box/enum/manyDefaultParameters.kt b/compiler/testData/codegen/box/enum/manyDefaultParameters.kt new file mode 100644 index 00000000000..a094da96f27 --- /dev/null +++ b/compiler/testData/codegen/box/enum/manyDefaultParameters.kt @@ -0,0 +1,55 @@ +enum class ClassTemplate( + // var bug: Int = 1, + var code: Int, + var nameTemplate: Int = 1, + + val parent: Int = 1, + val previous: Int = 1, + val progressionEquivalent: Int = 1, + + var idDiscipline: Int = 1, + var strictRunningOrder: Int = 1, + var pointsMethod: Int = 1, + + var noTimeFaults: Int = 1, + var combineHeights: Int = 1, + + var column: Int = 1, + var runningOrderSort: Int = 1, + var programme: Int = 1, + var eliminationTime: Int = 1, + var courseTimeCode: Int = 1, + var teamSize: Int = 1, + var sponsor: Int = 1, + var lateEntryCredits: Int = 1, + var lateEntryFee: Int = 1, + + var courseLengthNeeded: Int = 1, + + var discretionaryCourseTime: Int = 1, + var isRelay: Int = 1, + var isQualifier: Int = 1, + var generateChildren: Int = 1, + var feedFromParent: Int = 1, + + var isNfcAllowed: Int = 1, + var isAddOnAllowed: Int = 1, + var isSpecialEntry: Int = 1, + var isUkaProgression: Int = 1, + var canEnterDirectly: Int = 1, + var isPointRanked: Int = 1, + var isPointRankedDesc: Int = 1 +) { + UNDEFINED(code = 56, nameTemplate = 3), + BLAH(code = 57, nameTemplate = 4) +} + +fun box(): String { + val x = ClassTemplate.UNDEFINED + val y = ClassTemplate.BLAH + + if (x.code != 56 || x.nameTemplate != 3 || x.isAddOnAllowed != 1) return "fail 1" + if (y.code != 57 || y.nameTemplate != 4 || y.isAddOnAllowed != 1) return "fail 2" + + return "OK" +} diff --git a/compiler/testData/codegen/light-analysis/coroutines/32defaultParametersInSuspend.txt b/compiler/testData/codegen/light-analysis/coroutines/32defaultParametersInSuspend.txt new file mode 100644 index 00000000000..97e3594a8e3 --- /dev/null +++ b/compiler/testData/codegen/light-analysis/coroutines/32defaultParametersInSuspend.txt @@ -0,0 +1,37 @@ +@kotlin.Metadata +public final class Controller { + public method (): void + public synthetic static method suspendHere$default(p0: Controller, p1: java.lang.String, p2: int, p3: int, p4: int, p5: int, p6: int, p7: int, p8: int, p9: int, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, p16: int, p17: int, p18: int, p19: int, p20: int, p21: int, p22: int, p23: int, p24: int, p25: int, p26: int, p27: int, p28: int, p29: int, p30: int, p31: int, p32: int, p33: kotlin.coroutines.experimental.Continuation, p34: int, p35: java.lang.Object): java.lang.Object + public final @org.jetbrains.annotations.Nullable method suspendHere(@org.jetbrains.annotations.NotNull p0: java.lang.String, p1: int, p2: int, p3: int, p4: int, p5: int, p6: int, p7: int, p8: int, p9: int, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, p16: int, p17: int, p18: int, p19: int, p20: int, p21: int, p22: int, p23: int, p24: int, p25: int, p26: int, p27: int, p28: int, p29: int, p30: int, p31: int, @org.jetbrains.annotations.NotNull p32: kotlin.coroutines.experimental.Continuation): java.lang.Object +} + +@kotlin.Metadata +public final class CoroutineUtilKt { + public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation + public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation +} + +@kotlin.Metadata +public class EmptyContinuation { + public final static field Companion: EmptyContinuation.Companion + private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext + inner class EmptyContinuation/Companion + public @synthetic.kotlin.jvm.GeneratedByJvmOverloads method (): void + public method (@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.CoroutineContext): void + public synthetic method (p0: kotlin.coroutines.experimental.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void + public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext + public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void + public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void +} + +@kotlin.Metadata +public final static class EmptyContinuation/Companion { + inner class EmptyContinuation/Companion + private method (): void +} + +@kotlin.Metadata +public final class _32defaultParametersInSuspendKt { + public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String + public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function2): void +} diff --git a/compiler/testData/codegen/light-analysis/enum/manyDefaultParameters.txt b/compiler/testData/codegen/light-analysis/enum/manyDefaultParameters.txt new file mode 100644 index 00000000000..b783fddbf67 --- /dev/null +++ b/compiler/testData/codegen/light-analysis/enum/manyDefaultParameters.txt @@ -0,0 +1,107 @@ +@kotlin.Metadata +public enum class ClassTemplate { + public final static field BLAH: ClassTemplate + public final static field UNDEFINED: ClassTemplate + private field canEnterDirectly: int + private field code: int + private field column: int + private field combineHeights: int + private field courseLengthNeeded: int + private field courseTimeCode: int + private field discretionaryCourseTime: int + private field eliminationTime: int + private field feedFromParent: int + private field generateChildren: int + private field idDiscipline: int + private field isAddOnAllowed: int + private field isNfcAllowed: int + private field isPointRanked: int + private field isPointRankedDesc: int + private field isQualifier: int + private field isRelay: int + private field isSpecialEntry: int + private field isUkaProgression: int + private field lateEntryCredits: int + private field lateEntryFee: int + private field nameTemplate: int + private field noTimeFaults: int + private final field parent: int + private field pointsMethod: int + private final field previous: int + private field programme: int + private final field progressionEquivalent: int + private field runningOrderSort: int + private field sponsor: int + private field strictRunningOrder: int + private field teamSize: int + protected method (p0: java.lang.String, p1: int, p2: int, p3: int, p4: int, p5: int, p6: int, p7: int, p8: int, p9: int, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, p16: int, p17: int, p18: int, p19: int, p20: int, p21: int, p22: int, p23: int, p24: int, p25: int, p26: int, p27: int, p28: int, p29: int, p30: int, p31: int, p32: int, p33: int): void + synthetic method (p0: java.lang.String, p1: int, p2: int, p3: int, p4: int, p5: int, p6: int, p7: int, p8: int, p9: int, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, p16: int, p17: int, p18: int, p19: int, p20: int, p21: int, p22: int, p23: int, p24: int, p25: int, p26: int, p27: int, p28: int, p29: int, p30: int, p31: int, p32: int, p33: int, p34: int, p35: kotlin.jvm.internal.DefaultConstructorMarker): void + public final method getCanEnterDirectly(): int + public final method getCode(): int + public final method getColumn(): int + public final method getCombineHeights(): int + public final method getCourseLengthNeeded(): int + public final method getCourseTimeCode(): int + public final method getDiscretionaryCourseTime(): int + public final method getEliminationTime(): int + public final method getFeedFromParent(): int + public final method getGenerateChildren(): int + public final method getIdDiscipline(): int + public final method getLateEntryCredits(): int + public final method getLateEntryFee(): int + public final method getNameTemplate(): int + public final method getNoTimeFaults(): int + public final method getParent(): int + public final method getPointsMethod(): int + public final method getPrevious(): int + public final method getProgramme(): int + public final method getProgressionEquivalent(): int + public final method getRunningOrderSort(): int + public final method getSponsor(): int + public final method getStrictRunningOrder(): int + public final method getTeamSize(): int + public final method isAddOnAllowed(): int + public final method isNfcAllowed(): int + public final method isPointRanked(): int + public final method isPointRankedDesc(): int + public final method isQualifier(): int + public final method isRelay(): int + public final method isSpecialEntry(): int + public final method isUkaProgression(): int + public final method setAddOnAllowed(p0: int): void + public final method setCanEnterDirectly(p0: int): void + public final method setCode(p0: int): void + public final method setColumn(p0: int): void + public final method setCombineHeights(p0: int): void + public final method setCourseLengthNeeded(p0: int): void + public final method setCourseTimeCode(p0: int): void + public final method setDiscretionaryCourseTime(p0: int): void + public final method setEliminationTime(p0: int): void + public final method setFeedFromParent(p0: int): void + public final method setGenerateChildren(p0: int): void + public final method setIdDiscipline(p0: int): void + public final method setLateEntryCredits(p0: int): void + public final method setLateEntryFee(p0: int): void + public final method setNameTemplate(p0: int): void + public final method setNfcAllowed(p0: int): void + public final method setNoTimeFaults(p0: int): void + public final method setPointRanked(p0: int): void + public final method setPointRankedDesc(p0: int): void + public final method setPointsMethod(p0: int): void + public final method setProgramme(p0: int): void + public final method setQualifier(p0: int): void + public final method setRelay(p0: int): void + public final method setRunningOrderSort(p0: int): void + public final method setSpecialEntry(p0: int): void + public final method setSponsor(p0: int): void + public final method setStrictRunningOrder(p0: int): void + public final method setTeamSize(p0: int): void + public final method setUkaProgression(p0: int): void + public static method valueOf(p0: java.lang.String): ClassTemplate + public static method values(): ClassTemplate[] +} + +@kotlin.Metadata +public final class ManyDefaultParametersKt { + public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String +} diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index b24e5d3e618..2e648cffd9b 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -4684,6 +4684,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class Coroutines extends AbstractIrBlackBoxCodegenTest { + @TestMetadata("32defaultParametersInSuspend.kt") + public void test32defaultParametersInSuspend() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/coroutines/32defaultParametersInSuspend.kt"); + doTest(fileName); + } + @TestMetadata("accessorForSuspend.kt") public void testAccessorForSuspend() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/coroutines/accessorForSuspend.kt"); @@ -7223,6 +7229,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes doTest(fileName); } + @TestMetadata("manyDefaultParameters.kt") + public void testManyDefaultParameters() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/manyDefaultParameters.kt"); + doTest(fileName); + } + @TestMetadata("modifierFlags.kt") public void testModifierFlags() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/modifierFlags.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 917794eb593..3393a3c37ca 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -4684,6 +4684,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class Coroutines extends AbstractBlackBoxCodegenTest { + @TestMetadata("32defaultParametersInSuspend.kt") + public void test32defaultParametersInSuspend() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/coroutines/32defaultParametersInSuspend.kt"); + doTest(fileName); + } + @TestMetadata("accessorForSuspend.kt") public void testAccessorForSuspend() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/coroutines/accessorForSuspend.kt"); @@ -7223,6 +7229,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("manyDefaultParameters.kt") + public void testManyDefaultParameters() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/manyDefaultParameters.kt"); + doTest(fileName); + } + @TestMetadata("modifierFlags.kt") public void testModifierFlags() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/modifierFlags.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 938fc94ab2e..703d49474ed 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -5405,6 +5405,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class Coroutines extends AbstractJsCodegenBoxTest { + @TestMetadata("32defaultParametersInSuspend.kt") + public void test32defaultParametersInSuspend() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/coroutines/32defaultParametersInSuspend.kt"); + doTest(fileName); + } + @TestMetadata("accessorForSuspend.kt") public void testAccessorForSuspend() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/coroutines/accessorForSuspend.kt"); @@ -8094,6 +8100,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); } + @TestMetadata("manyDefaultParameters.kt") + public void testManyDefaultParameters() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/manyDefaultParameters.kt"); + doTest(fileName); + } + @TestMetadata("modifierFlags.kt") public void testModifierFlags() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/enum/modifierFlags.kt");