[K2/Diff] Rebase onto a fresher master
diff --git a/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/FirDifferences.kt b/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/FirDifferences.kt index 0179568..46ff11d 100644 --- a/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/FirDifferences.kt +++ b/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/FirDifferences.kt
@@ -109,6 +109,8 @@ "OPT_IN_USAGE_ERROR", "EXPRESSION_EXPECTED_PACKAGE_FOUND", "ADAPTED_CALLABLE_REFERENCE_AGAINST_REFLECTION_TYPE", + "NO_RECEIVER_ALLOWED", + "DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM", // ), // listOf( "CLASS_LITERAL_LHS_NOT_A_CLASS", @@ -157,6 +159,7 @@ "ASSIGNMENT_IN_EXPRESSION_CONTEXT", "EXPRESSION_EXPECTED", "EXPRESSION_REQUIRED", + "DECLARATION_IN_ILLEGAL_CONTEXT", // ), // listOf( "TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_IN_AUGMENTED_ASSIGNMENT_ERROR",
diff --git a/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/KnownIssues.kt b/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/KnownIssues.kt index 099b1b2..2ad77da 100644 --- a/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/KnownIssues.kt +++ b/compiler/k2-differences/tests/org/jetbrains/kotlin/test/frontend/fir/differences/KnownIssues.kt
@@ -499,6 +499,12 @@ "NESTED_JS_EXPORT" to IssueInfo("25-4874957", 62736), "JSCODE_NO_JAVASCRIPT_PRODUCED" to IssueInfo("25-4912778", 63204), "JSCODE_ERROR" to IssueInfo("25-4912779", 63205), + "OUTER_CLASS_ARGUMENTS_REQUIRED" to IssueInfo("25-5053078", 64661), + "BUILDER_INFERENCE_STUB_RECEIVER" to IssueInfo("25-5053079", 64662), + "TYPE_PARAMETER_AS_REIFIED" to IssueInfo("25-5053080", 64663), + "CALLABLE_REFERENCE_LHS_NOT_A_CLASS" to IssueInfo("25-5053081", 64664), + "DELEGATE_SPECIAL_FUNCTION_AMBIGUITY" to IssueInfo("25-5053082", 64665), + "JS_MODULE_PROHIBITED_ON_NON_NATIVE" to IssueInfo("25-5053083", 64666), //<::>knownDisappearedDiagnostics ) @@ -625,6 +631,18 @@ "JSCODE_ARGUMENT_NON_CONST_EXPRESSION" to IssueInfo("25-4912722", 63199), "JSCODE_CAN_NOT_VERIFY_JAVASCRIPT" to IssueInfo("25-4912723", 63200), "JSCODE_WARNING" to IssueInfo("25-4912724", 63201), + "ANONYMOUS_SUSPEND_FUNCTION" to IssueInfo("25-5053085", 64667), + "TYPE_PARAMETER_IS_NOT_AN_EXPRESSION" to IssueInfo("25-5053086", 64668), + "NEW_INFERENCE_ERROR" to IssueInfo("25-5053087", 64669), + "MANY_IMPL_MEMBER_NOT_IMPLEMENTED" to IssueInfo("25-5053088", 64670), + "MISSING_DEPENDENCY_CLASS" to IssueInfo("25-5053089", 64671), + "EXPECT_ACTUAL_INCOMPATIBILITY" to IssueInfo("25-5053090", 64672), + "ACTUAL_MISSING" to IssueInfo("25-5053091", 64673), + "EXPECT_ACTUAL_MISMATCH" to IssueInfo("25-5053092", 64674), + "DYNAMIC_RECEIVER_EXPECTED_BUT_WAS_NON_DYNAMIC" to IssueInfo("25-5053093", 64675), + "OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION" to IssueInfo("25-5053094", 64676), + "INCOMPATIBLE_OBJC_NAME_OVERRIDE" to IssueInfo("25-5053095", 64677), + "JS_MODULE_PROHIBITED_ON_NON_EXTERNAL" to IssueInfo("25-5053096", 64678), //<::>knownIntroducedDiagnostics )
diff --git a/compiler/testData/codegen/box/k2DifferencesChecks/EnumWOParenthesesConsistencyNestedScope.kt b/compiler/testData/codegen/box/k2DifferencesChecks/EnumWOParenthesesConsistencyNestedScope.kt new file mode 100644 index 0000000..2ccd315 --- /dev/null +++ b/compiler/testData/codegen/box/k2DifferencesChecks/EnumWOParenthesesConsistencyNestedScope.kt
@@ -0,0 +1,595 @@ +// ORIGINAL: /compiler/testData/diagnostics/tests/enum/EnumWOParenthesesConsistencyNestedScope.fir.kt +// WITH_STDLIB +class Context { + + enum class EnumerationAAA() { + ENTRY + } + + enum class EnumerationAAB() { + ENTRY; + } + + enum class EnumerationAAC() { + ENTRY1, + ENTRY2; + } + + enum class EnumerationAAD() { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationAAE() { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + + enum class EnumerationABA(arg: UserKlass = UserKlass()) { + ENTRY + } + + enum class EnumerationABB(arg: UserKlass = UserKlass()) { + ENTRY; + } + + enum class EnumerationABC(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + } + + enum class EnumerationABD(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationABE(arg: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + + enum class EnumerationACA(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY + } + + enum class EnumerationACB(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + } + + enum class EnumerationACC(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + } + + enum class EnumerationACD(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationACE(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + + enum class EnumerationADA(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + } + + enum class EnumerationADB(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + } + + enum class EnumerationADC(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + } + + enum class EnumerationADD(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationAEA(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + } + + enum class EnumerationAEB(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + } + + enum class EnumerationAEC(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + } + + enum class EnumerationAED(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationBAA constructor() { + ENTRY + } + + enum class EnumerationBAB constructor() { + ENTRY; + } + + enum class EnumerationBAC constructor() { + ENTRY1, + ENTRY2; + } + + enum class EnumerationBAD constructor() { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationBAE constructor() { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + + enum class EnumerationBBA constructor(arg: UserKlass = UserKlass()) { + ENTRY + } + + enum class EnumerationBBB constructor(arg: UserKlass = UserKlass()) { + ENTRY; + } + + enum class EnumerationBBC constructor(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + } + + enum class EnumerationBBD constructor(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationBBE constructor(arg: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + + enum class EnumerationBCA constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY + } + + enum class EnumerationBCB constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + } + + enum class EnumerationBCC constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + } + + enum class EnumerationBCD constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationBCE constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + + enum class EnumerationBDA constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + } + + enum class EnumerationBDB constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + } + + enum class EnumerationBDC constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + } + + enum class EnumerationBDD constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationBEA constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + } + + enum class EnumerationBEB constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + } + + enum class EnumerationBEC constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + } + + enum class EnumerationBED constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationCAA { + ENTRY; + + constructor() + } + + enum class EnumerationCAB { + ENTRY1, + ENTRY2; + + constructor() + } + + enum class EnumerationCAC { + ENTRY1, + ENTRY2(); + + constructor() + } + + enum class EnumerationCAD { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor() + + abstract fun abstractFunc() + } + + enum class EnumerationCBA { + ENTRY; + + constructor(arg: UserKlass = UserKlass()) + } + + enum class EnumerationCBB { + ENTRY1, + ENTRY2; + + constructor(arg: UserKlass = UserKlass()) + } + + enum class EnumerationCBC { + ENTRY1, + ENTRY2(); + + constructor(arg: UserKlass = UserKlass()) + } + + enum class EnumerationCBD { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg: UserKlass = UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationCCA { + ENTRY; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + } + + enum class EnumerationCCB { + ENTRY1, + ENTRY2; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + } + + enum class EnumerationCCC { + ENTRY1, + ENTRY2(); + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + } + + enum class EnumerationCCD { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationCDA { + ENTRY; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + } + + enum class EnumerationCDB { + ENTRY1, + ENTRY2; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + } + + enum class EnumerationCDC { + ENTRY1, + ENTRY2(); + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + } + + enum class EnumerationCDD { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + + abstract fun abstractFunc() + } + + enum class EnumerationCEA { + ENTRY; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() + } + + enum class EnumerationCEB { + ENTRY1, + ENTRY2; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() + } + + enum class EnumerationCEC { + ENTRY1, + ENTRY2(); + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() + } + + enum class EnumerationCED { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() + + abstract fun abstractFunc() + } + + enum class EnumerationDA { + ENTRY + } + + enum class EnumerationDB { + ENTRY; + } + + enum class EnumerationDC { + ENTRY1, + ENTRY2; + } + + enum class EnumerationDD { + ENTRY1, + ENTRY2(); + } + + enum class EnumerationDE { + ENTRY1 { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }, + ENTRY2() { + override fun abstractFunc() { + TODO("Not yet implemented") + } + }; + + abstract fun abstractFunc() + } + +} + + +class UserKlass + + +fun box() = "OK"
diff --git a/compiler/testData/codegen/box/k2DifferencesChecks/EnumWOParenthesesConsistencyTopLevel.kt b/compiler/testData/codegen/box/k2DifferencesChecks/EnumWOParenthesesConsistencyTopLevel.kt new file mode 100644 index 0000000..f3bdb573 --- /dev/null +++ b/compiler/testData/codegen/box/k2DifferencesChecks/EnumWOParenthesesConsistencyTopLevel.kt
@@ -0,0 +1,411 @@ +// ORIGINAL: /compiler/testData/diagnostics/tests/enum/EnumWOParenthesesConsistencyTopLevel.fir.kt +// WITH_STDLIB +enum class EnumerationAAA() { + ENTRY +} + +enum class EnumerationAAB() { + ENTRY; +} + +enum class EnumerationAAC() { + ENTRY1, + ENTRY2; +} + +enum class EnumerationAAD() { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationAAE() { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + +enum class EnumerationABA(arg: UserKlass = UserKlass()) { + ENTRY +} + +enum class EnumerationABB(arg: UserKlass = UserKlass()) { + ENTRY; +} + +enum class EnumerationABC(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; +} + +enum class EnumerationABD(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationABE(arg: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + +enum class EnumerationACA(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY +} + +enum class EnumerationACB(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; +} + +enum class EnumerationACC(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; +} + +enum class EnumerationACD(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationACE(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + +enum class EnumerationADA(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) +} + +enum class EnumerationADB(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) +} + +enum class EnumerationADC(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) +} + +enum class EnumerationADD(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationAEA(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) +} + +enum class EnumerationAEB(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) +} + +enum class EnumerationAEC(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) +} + +enum class EnumerationAED(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationBAA constructor() { + ENTRY +} + +enum class EnumerationBAB constructor() { + ENTRY; +} + +enum class EnumerationBAC constructor() { + ENTRY1, + ENTRY2; +} + +enum class EnumerationBAD constructor() { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationBAE constructor() { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + +enum class EnumerationBBA constructor(arg: UserKlass = UserKlass()) { + ENTRY +} + +enum class EnumerationBBB constructor(arg: UserKlass = UserKlass()) { + ENTRY; +} + +enum class EnumerationBBC constructor(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; +} + +enum class EnumerationBBD constructor(arg: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationBBE constructor(arg: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + +enum class EnumerationBCA constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY +} + +enum class EnumerationBCB constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; +} + +enum class EnumerationBCC constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; +} + +enum class EnumerationBCD constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationBCE constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + +enum class EnumerationBDA constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) +} + +enum class EnumerationBDB constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) +} + +enum class EnumerationBDC constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) +} + +enum class EnumerationBDD constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationBEA constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) +} + +enum class EnumerationBEB constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) +} + +enum class EnumerationBEC constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1, + ENTRY2(); + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) +} + +enum class EnumerationBED constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg: UserKlass = UserKlass()) : this(arg, UserKlass()) + constructor() : this(UserKlass(), UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationCAA { + ENTRY; + constructor() +} + +enum class EnumerationCAB { + ENTRY1, + ENTRY2; + constructor() +} + +enum class EnumerationCAC { + ENTRY1, + ENTRY2(); + constructor() +} + +enum class EnumerationCAD { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor() + abstract fun abstractFunc() +} + +enum class EnumerationCBA { + ENTRY; + constructor(arg: UserKlass = UserKlass()) +} + +enum class EnumerationCBB { + ENTRY1, + ENTRY2; + constructor(arg: UserKlass = UserKlass()) +} + +enum class EnumerationCBC { + ENTRY1, + ENTRY2(); + constructor(arg: UserKlass = UserKlass()) +} + +enum class EnumerationCBD { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg: UserKlass = UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationCCA { + ENTRY; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) +} + +enum class EnumerationCCB { + ENTRY1, + ENTRY2; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) +} + +enum class EnumerationCCC { + ENTRY1, + ENTRY2(); + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) +} + +enum class EnumerationCCD { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationCDA { + ENTRY; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) +} + +enum class EnumerationCDB { + ENTRY1, + ENTRY2; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) +} + +enum class EnumerationCDC { + ENTRY1, + ENTRY2(); + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) +} + +enum class EnumerationCDD { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + abstract fun abstractFunc() +} + +enum class EnumerationCEA { + ENTRY; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() +} + +enum class EnumerationCEB { + ENTRY1, + ENTRY2; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() +} + +enum class EnumerationCEC { + ENTRY1, + ENTRY2(); + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() +} + +enum class EnumerationCED { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + constructor(arg1: UserKlass = UserKlass(), arg2: UserKlass = UserKlass()) + constructor(arg: UserKlass = UserKlass()) + constructor() + abstract fun abstractFunc() +} + +enum class EnumerationDA { + ENTRY +} + +enum class EnumerationDB { + ENTRY; +} + +enum class EnumerationDC { + ENTRY1, + ENTRY2; +} + +enum class EnumerationDD { + ENTRY1, + ENTRY2(); +} + +enum class EnumerationDE { + ENTRY1 { override fun abstractFunc() { TODO("Not yet implemented") } }, + ENTRY2() { override fun abstractFunc() { TODO("Not yet implemented") } }; + abstract fun abstractFunc() +} + + +class UserKlass + + +fun box() = "OK"