Commit Graph

1095 Commits

Author SHA1 Message Date
Alexander Udalov 6d664bcd10 JVM IR: fix operand type for CompareTo intrinsic
It's incorrect to take the first parameter type from the expression
itself because it can be nullable if smart casts are used. And if it's
nullable, it's mapped to the wrapper type and calling
`comparisonOperandType` for it makes no sense. Instead, take the type
from the callee function, as it's guaranteed to be mapped to a JVM
primitive type.

E.g. in `test1` function in the added test, the problem was that the
dispatch receiver type of the call expression is `Double?`, which is
mapped to `java/lang/Double`, whereas we clearly wanted to obtain the
primitive `D` (double) type.

 #KT-52163 Fixed
2022-05-05 23:06:21 +02:00
Zalim Bashorov 2c20a71d08 [Codegen tests] Specify JVM as target backend for inferenceFlexibleTToNullable.kt 2022-05-05 21:03:37 +00:00
Victor Petukhov fb76d819f0 [FE] Erase type parameters of super types during intersection type emptiness check as well 2022-04-27 19:50:27 +00:00
Victor Petukhov 0f1d212fc5 [FE] Fix tests 2022-04-27 19:50:27 +00:00
Dmitriy Dolovov c1a3bf1343 [Native][tests] Update testing information in HACKING.md 2022-04-19 16:02:46 +03:00
Dmitriy Dolovov 59a136574a [Native][tests] New test infra: fail immediately if static cache for libs from the distribution is required but there is no such cache 2022-04-15 15:11:41 +03:00
Dmitriy Dolovov 3b3dab3d43 [Native][tests] Forbid using thread state checker with cache 2022-04-15 15:11:41 +03:00
Igor Chevdar 231fe42c0a [klibs] Fixed a bug in the signature-to-descriptor searcher
#KT-51927 Fixed
2022-04-14 07:33:56 +00:00
Dmitriy Dolovov 24552a625c [Native][tests] Reorganize OUTPUT_DATA_FILE directive
Use it as one of [TestRunCheck]s.
2022-04-09 19:06:26 +00:00
Dmitriy Dolovov 996ff5085d [Native][tests] Introduce EXIT_CODE directive
It allows to specify the expected exit code for STANDALONE_NO_TR tests.
2022-04-09 19:06:25 +00:00
Dmitriy Dolovov 261e177b39 [Native][tests] Introduce EXPECTED_TIMEOUT_FAILURE directive
It allows to correctly handle tests that were failed by timeout where such failure is the expected behavior.
2022-04-09 19:06:24 +00:00
Dmitriy Dolovov 7cf3ca29af [Native][tests] Fix: Avoid including similar but mutually exclusive shared modules into the same compilation 2022-04-09 19:06:24 +00:00
Ilmir Usmanov 1e3f84402d Safely check for suspend function parent
The issue here is that the function can be in unlowered file, and
thus its parent package fragment and not class.

 #KT-49317 Fixed
2022-04-08 23:31:49 +02:00
Ilmir Usmanov 1488790cd3 Replace recursion with a loop
#KT-51530 Fixed
2022-04-07 01:08:22 +00:00
Alexander Udalov df86290083 Add another test for KT-49715 and fix JS IR behavior
#KT-49715
 #KT-51798 Fixed
2022-04-05 01:06:57 +02:00
Xin Wang 24105139ea Handle methods descriptor clash in data class
1. Extension functions declared in data classes are generated earlier by `generateMembersDeclaredInClassBody`
2. Extension functions fake override from parent class are generated earlier by `generateFakeOverrideMemberDeclarations`

So it is safe to filter out extension functions inside `generateAdditionalMembersForDataClass`

 #KT-49715
 #KT-51798
2022-04-05 01:06:57 +02:00
Ilmir Usmanov 7579be6c68 Generate CHECKCAST after ACONST_NULL in coroutines
If we do not do this, the state-machine builder will not know the type
of the ACONST_NULL, defaulting to Object, leading to VerifyError.
Alternatively, we could use LVT to deduce the type, but getting types
from LVT is something I got rid of long time ago, and I have no desire
to return it back.

Generating CHECKCAST hints the state-machine builder the type of the
variable avoiding the issue of VerifyError. However, this CHECKCAST
replaces StrictBasicValue.NULL_VALUE with BasicValue in
OptimizationBasicInterpreter. To preserve optimization on not-spilling
known nulls, introduce BasicValues, which represent typed nulls and
create BasicInterpreter, which is aware of them. This way we have the
best of two worlds - we do not spill known nulls, and we know the type
of ACONST_NULL.

 #KT-51718 Fixed
2022-03-30 14:27:29 +00:00
Dmitriy Dolovov 0bc6885b2c [Native][tests] W/A: Generate test suites for included KLIB with tests
Relates to KT-51375
2022-03-29 14:55:57 +03:00
Svyatoslav Scherbina cf581738c3 Native: improve ClassCastException message for local classes
Previously it was like "null cannot be cast to MyObject" or
"MyObject cannot be cast to null", because `KClass.qualifiedName` is
`null` for local classes (including anonymous ones).

Use `KClass.toString()` instead, for both object actual dynamic type
and cast target type. This string representation is generally more
meaningful for such cases, and contains useful details for local
classes.
2022-03-28 08:21:55 +00:00
Victor Petukhov 3aabc8d666 [FE 1.0] Substitute anonymous object's supertypes while using that in public declarations
^KT-46136 Fixed
2022-03-23 21:13:32 +00:00
wrongwrong c4735f9f29 Add tests for KFunction involving value classes
See KT-31141.
2022-03-10 23:28:40 +01:00
Alexander Udalov 1e26888dd9 Psi2ir: fix parameter indices when generating extension invoke call
Incorrect `valueParameter` was passed to `generateValueArgument`, which
resulted in incorrect type being considered for generating suspend
conversion.

 #KT-50949 Fixed
2022-03-09 15:19:38 +01:00
Alexander Udalov 328853dffe Add tests for obsolete issues
(Test for KT-37331 is added to multiplatform/defaultArguments/suspend.kt.)

 #KT-30080
 #KT-33641
 #KT-36237
 #KT-36952
 #KT-37331
 #KT-38920
 #KT-39256
 #KT-42415
 #KT-44636
 #KT-45704
 #KT-47084
 #KT-47894
2022-03-08 14:19:37 +01:00
Dmitry Petrov fdb01d96f0 JVM_IR JavaSamConversionEqualsHashCode 2022-03-03 09:01:42 +00:00
Alexander Udalov 157db778fd Rework support of Iterator.iterator optimization in ForLoopsLowering
- Fix the predicate used for finding the member function `next`: check
  that there's no extension receiver parameter, don't filter out
  abstract functions.
- Do not copy iterator expression, instead change the type in all
  references to the iterator variable.
- Fix some style issues.

 #KT-47171 Fixed
2022-02-28 01:39:31 +01:00
Xin Wang 1b776bd5b6 JVM_IR: Specialize iterator if possible
fixes KT-47171
2022-02-28 01:39:31 +01:00
Alexander Udalov b443848ea0 Fix type table serialization in DescriptorSerializer
Always serialize type table (and version requirement table) after
everything else, to prevent bugs like KT-51446 where inline class
underlying type was added to the type table after it has already been
serialized.

 #KT-51446 Fixed
2022-02-24 16:34:25 +01:00
Dmitry Petrov 872b81ac8a JVM prune exception edges in DFA in some cases 2022-02-24 10:06:47 +00:00
Ilmir Usmanov 8811f62300 Fix mapping of nullable generic underlying types of inline classes
#KT-32162 Fixed
2022-02-23 01:23:07 +03:00
Ilmir Usmanov c072448d22 Lower fun interface children's body during inline class lowering
#KT-51121 Fixed
2022-02-21 19:50:12 +03:00
Dmitriy Dolovov 9ba5bf72ce [Native][tests] Support one/two stage test modes 2022-02-17 12:45:39 +03:00
Dmitriy Dolovov ab765f6c87 [Native][tests] Do not run test executable to fetch the list of test names
Use test listing produced during compilation instead.

^KT-50316
2022-02-17 12:45:38 +03:00
Dmitriy Dolovov b44c0f6789 [Native][tests] Always run DumpedTestListing test at the host target
This is for simplification’s sake. We need to run executable file with --ktest_list_tests flag and compare test listing with the test listing produced during the compilation.

^KT-50316
2022-02-17 12:45:38 +03:00
Dmitriy Dolovov 26ffd66a54 [Native][tests] Tests to check dumped test listing
^KT-50316
2022-02-17 12:45:38 +03:00
Dmitriy Dolovov 5500e3a332 [Native][tests] Support parsing dumped test listing
^KT-50316
2022-02-17 12:45:38 +03:00
Dmitriy Dolovov 5a26f58b24 [Native][tests] Refactoring: Rename TestListing* to GTestListing*
^KT-50316
2022-02-17 12:45:37 +03:00
Ilmir Usmanov 05457c291d Minor. Update test 2022-02-17 09:00:37 +03:00
Ilmir Usmanov f4407c213a Rename some tests with long names
Otherwise, their path on WIN will be longer than MAXPATH, leading to
V8 load error.
2022-02-16 23:46:30 +03:00
Ilmir Usmanov 714c5091cc Add regression test for KT-51254
#KT-51254 Fixed
2022-02-15 08:11:21 +01:00
Ilmir Usmanov 00a08fc6a4 Minor. Add tests and comment about copying generic parameters to
constructor, but not function reference to the constructor.

 #KT-32162
2022-02-15 08:11:19 +01:00
Ilmir Usmanov 2fedb97d16 Correctly map nullable generic underlying value of inline class
if upper bound is primitive type.
 #KT-32162
2022-02-15 08:11:17 +01:00
Ilmir Usmanov cece7120df Minor. Add more tests 2022-02-15 08:11:13 +01:00
Ilmir Usmanov c8817893d4 Support default parameters of inline type with generic underlying value
#KT-32162
2022-02-15 08:11:11 +01:00
Ilmir Usmanov 4f95171472 Minor. Add tests 2022-02-15 08:11:10 +01:00
Ilmir Usmanov 9060168542 Support generic underlying type of inline class
Use upper bound in JVM representation.
 #KT-32162
2022-02-15 08:11:08 +01:00
Ilmir Usmanov 8f23fc54a4 Mangle bridges if its return type is not inline
#KT-51235 Fixed
2022-02-14 13:06:13 +01:00
Dmitriy Dolovov 7ad69ea8eb [Native][tests] Regenerated native tests 2022-02-14 13:50:40 +03:00
Dmitriy Dolovov 4f0785cbb2 [Native][tests] Rename test tag "klib" to "klib-abi" to be more specific 2022-02-14 13:40:59 +03:00
Dmitriy Dolovov ca45252143 [Native][tests] Add separate Gradle tasks to run tests for stdlib and kotlin-test libraries 2022-02-14 13:40:59 +03:00
Dmitriy Dolovov 174f4cd220 [Native][tests] Rename Gradle task "externalTest" to "codegenBoxTest" 2022-02-14 13:40:59 +03:00