Commit Graph

39636 Commits

Author SHA1 Message Date
Igor Laevsky 3de1235fda [WASM] Add command line option to enable/disable assertions 2022-04-26 20:41:52 +00:00
Dmitriy Novozhilov 19f4c3edda [CLI] Report compilation error if compiler plugins are enabled alongside with K2 compiler
^KT-52037 Fixed
2022-04-26 21:03:04 +04:00
Alexander Korepanov 7920b8302c [JS IR] Fix race condition of IC hash calculator
^KT-52154 Fixed
2022-04-26 11:30:00 +00:00
Kristoffer Andersen 4f8ef8c315 [EE-IR] Support Local Functions
This commit introduces support for calling and referencing local functions and
objects in evaluate expression on the IR backend.

The primary incision is a lowering inserted after Local Declaration Lowering,
that uses the intermediate data structures recorded by LDL to rewrite calls to
local functions to the appropriate function in the binary, instead of predicting
the compilation strategy. The required changes to the rest of the pipeline
facilitate piping the required data around.

The key to this transformation is that _captures by the local function_ must be
introduced as _captures by the fragment function_, such that the evaluator
infrastructure can find the appropriate values at run-time. This is necessary
due to the strategy of compiling local functions to static functions instead of
closures.

Additional test coverage of stepping behavior support the corresponding changes
in the Evaluator, part of the Kotlin Debugger plug-in.
2022-04-25 16:59:04 +03:00
Stanislav Erokhin 249dc1e1d2 Fix potential AbstractMethodError on KotlinJvmBinaryClass.getContainingLibrary()
Compiler supposed to generate such method inside the
LocalFileKotlinClass class, but because of the KT-18489 method
getContainingLibrary is not generated. Because of that we potentially
could get AbstractMethodError. In order to fix that we are adding
explicit ovverride in java super class
2022-04-22 16:21:10 +00:00
Ilya Chernikov 352fa7540c Fix versions in poms, etc, unmute and fix appropriate test 2022-04-22 15:04:26 +02:00
Alexander Udalov 24f3c7dc7d Psi2Ir: fix usage of flexible vararg type after approximation
This only affects JVM IR, and this is similar to how this was done in
the old JVM backend in `CallBasedArgumentGenerator.generateVararg`.

 #KT-52146 Fixed
2022-04-22 14:15:28 +02:00
Roman Golyshev 1d5cb8ab75 [FIR] Get FirSession from declaration in ReturnTypeCalculatorWithJump
If the session is from the other module, it might not know about
FirFiles which are relevant for transforming and resolving the
declaration

^KT-52136 Fixed
2022-04-21 19:23:20 +00:00
Hung Nguyen 6d3e679a59 Implement cache eviction for classpath snapshot cache
Implement an in-memory cache that uses a combination of strong
references and `SoftReference`s so that it adapts to memory
availability.

Cache eviction is currently performed after loading a classpath snapshot
(this can be changed later if necessary).

Evicted cache entries' values will be converted from strong references
into `SoftReference`s so that they can still be used for as long as the
JVM allows them.

There are 2 types of cache eviction:
  - Least recently used: Oldest entries will be evicted
  - Memory usage limit: If memory is limited, all entries will be
    evicted

Test: Added InMemoryCacheWithEvictionTest unit test

^KT-51978 In Progress
2022-04-21 17:34:01 +00:00
Alexander Udalov 6734f542b3 JVM IR: sanitize indy lambda proxy names correctly
In case there are several proxy functions for indy lambdas in the same
container, its names are "...__proxy", "...__proxy-0", "...__proxy-1",
..., yet before this change, only the first one was sanitized. So if
it's happening inside a constructor, `<init>` was left unrenamed which
led to ClassFormatError.

 #KT-52040 Fixed
2022-04-21 17:06:16 +02:00
Victor Petukhov 2cfba51a29 [Compiler PSI] Make getContextReceivers default to preserve compatibility
^KT-51747 Fixed
2022-04-21 13:41:30 +00:00
Nicolay Mitropolsky ccb6331e10 LC: better facade detection to fix KTIJ-21223
Merge-request: KT-MR-6130
Merged-by: Nicolay Mitropolsky <nicolay.mitropolsky@jetbrains.com>
2022-04-21 10:52:29 +00:00
Kristoffer Andersen aafab7800b [EE-IR] Add "different classloader" check to synthetic accessor lowering 2022-04-20 23:33:38 +02:00
Mikhail Glukhikh f65364b191 FIR: add test for #KT-49438 Obsolete 2022-04-20 22:31:54 +03:00
Alexander Udalov 2e515f3945 Prohibit JVM target 1.6
But still compile stdlib, reflect, kotlin.test and scripting runtimes
with JVM target 1.6 to simplify migration from Kotlin 1.6 to 1.7.

 #KT-45165 Fixed
2022-04-19 22:54:40 +02:00
Alexander Udalov ef6d30dd51 Remove usages of JVM target 1.6 from compiler tests
#KT-45165
2022-04-19 22:54:40 +02:00
Aleksei.Cherepanov 3d8f140d6b [JPS] Fix incremental build after changing Java enum used in Kotlin when
EnumWhenTracker implemented for tracking changed java enum class items, that used in kotlin when expression.

#KT-47824 Fixed
2022-04-19 18:39:41 +00:00
Mikhail Glukhikh 16d5c28622 Unmute FIR spec tests muted for KT-38340 2022-04-19 15:56:00 +00:00
Artem Kobzar 315ff0beeb fix(KT-38262): add ability to create classes with methods that have reserved keyword as an identifier. 2022-04-19 13:20:13 +00:00
Artem Kobzar 9d0c7a55b1 chore: rename method and remove FIXME comment. 2022-04-19 13:14:22 +00:00
Artem Kobzar 93dcc48512 fix(KT-50157): prevent boxing for char comparison. 2022-04-19 13:14:22 +00:00
Vyacheslav Gerasimov d9e8f0c180 Build: Rework test workers calculation with respect to available memory
#KTI-787
2022-04-19 11:45:23 +00:00
Dmitriy Novozhilov 4e4c4c8d39 [FE] Make ContextReceivers feature not unstable
It's already impossible to use declarations with context receivers
  if this feature is not enabled, so there is no need to additionally
  poison binaries with prerelease flag if this feature is enabled
2022-04-19 10:49:45 +00:00
Ilya Kirillov 9088da7b33 [fir] use correct session for supertype symbol search
During supertype resolution we may encount a supeclass came from other source session.
In this case, we should search for it containing FirFile inside that session
2022-04-19 12:37:49 +02:00
Ivan Kochurkin 3b8183a736 [FIR] Support of importing optional annotation classes (JS/Native), ^KT-51757 Fixed 2022-04-18 15:36:21 +00:00
Ivan Kochurkin 73e7b99e05 [FIR] LightTree builder: get rid of unwanted asText calls 2022-04-18 15:36:20 +00:00
Ivan Kochurkin 541fba1531 [FIR] Type argument instead of unexpected type parameter for TypeMismatch error
^KT-49035
^KT-51201 Fixed
2022-04-18 15:36:20 +00:00
Ivan Kochurkin 8c7fad9a5e [FIR] Support of type arguments in annotations ^KT-48444 Fixed 2022-04-18 15:36:19 +00:00
Ivan Kochurkin 05bed8f751 [FIR] Hide local type for return type of single expression function ^KT-51418 Fixed 2022-04-18 15:36:18 +00:00
Mikhail Glukhikh 0ecba0ad0b FIR: don't create incorrect constraints in CallableReferenceResolution
#KT-50994 Fixed
Related to KT-49477
2022-04-18 14:27:42 +00:00
Aleksei.Cherepanov e0029b14ee Rebuild module on plugin classpaths change
Add another one reason for rebuild: if pluginClasspaths was changed or even its jar content, module will be marked for rebuild

Merge-request: KT-MR-5839
Merged-by: Aleksei Cherepanov <aleksei.cherepanov@jetbrains.com>
2022-04-18 11:06:15 +00:00
Anton Bannykh 281e381223 JS IR: materialize Unit in lambdas
^KT-52010 fixed
2022-04-16 09:59:51 +03:00
Dmitry Gridin e737015d5f [jps][tests] remove hardcoded dist path
^KTIJ-20456
2022-04-15 22:00:19 +07:00
Denis.Zharkov 9c7fea24d1 Fix exception when reporting WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE
^KT-51979 Fixed
2022-04-15 12:36:05 +00:00
Denis.Zharkov b8ea48fdc2 Fix exception happening while parsing an incorrect file
^KTIJ-21546 Fixed
2022-04-15 09:10:09 +00:00
Dmitriy Novozhilov 989cef6c3c [FE 1.0] Don't report OVERRIDE_DEPRECATION on default accessors of deprecated properties
^KT-51893 Fixed
2022-04-15 08:30:05 +00:00
Anton Bannykh 90ee8662da rra/ilgonmic/kt-51973
[JS IR] Add non overridden property and method insode exported class

[JS IR] Add method into exported interface in test

[JS IR] Add interface properties cases to all file export test

[JS IR] Fix usage of isExported inside IrJsUtils


Co-authored-by: Anton Bannykh <Anton.Bannykh@jetbrains.com>

Merge-request: KT-MR-6087
Merged-by: Ilya Goncharov <Ilya.Goncharov@jetbrains.com>

^KT-51973 fixed
2022-04-14 16:59:54 +00:00
Alexander Korepanov d908eb6e84 [JS IR] Fix callable references ignoring bound parameters
^KT-51102 Fixed
2022-04-14 13:48:19 +00:00
Jerome Prinet 44b2905800 Fix JavaApplication.setMainClassName deprecation 2022-04-14 14:21:31 +03:00
Jerome Prinet 6aec88446a Fix JavaExec.main deprecation 2022-04-14 14:21:31 +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
Dmitry Gridin 57b9648041 make jps-plugin testable from IJ infrastructure
^KTIJ-20456
2022-04-14 11:17:47 +07:00
wrongwrong 2da8d53791 Fix callBy for InlineClassAwareCaller in case of >=32 parameters
#KT-51804 Fixed
2022-04-13 23:35:48 +02:00
Jinseong Jeon 6a9ed82fdc FIR/LC: restructure light identifiers
* introduced KtLightIdentifierBase so that both FIR LC and ULC share
  basic implementations

* detach PsiCompiledElement as per KTIJ-21412,
  while introducing KtLightIdentifierWithOrigin so that
  UastLightIdentifier can still inherit origin computation logic

^KTIJ-21412 In Progress
2022-04-13 13:43:21 +02:00
Jinseong Jeon ef94582059 LC: use lazyPub to initialize identifier of parameter 2022-04-13 13:43:19 +02:00
Mikhail Glukhikh 815d1ad54b Don't check KtIntersectionType in raw FIR testPsiConsistency 2022-04-13 14:34:59 +03:00
Ilya Kirillov ffdef50424 [symbol lc] actualize testdata for symbol LC tests 2022-04-13 12:53:30 +02:00
Ilya Kirillov a5c8a20b69 [fir] add detailed error messages for MultipleModuleDataProvider checks 2022-04-13 12:53:28 +02:00
Ilya Kirillov 66df69ea2c [low level fir, tests] temporary mute some tests with the latest full jdk
full jdk paths are not handled well after test infra rework
2022-04-13 12:53:27 +02:00
Ilya Kirillov 69a53bc742 [low level fir] use correct FirModuleData for declarations provided by FirJavaFacade 2022-04-13 12:53:23 +02:00