Sergey Bogolepov
cf3296c94c
[K/N] LLVM attributes at call-sites
...
(I messed up commit history and all changes had to be squashed. Sorry.)
The commit is originated from KT-48591. The root of the problem is
following: we unconditionally added sext to all value parameters of
imported functions. To fix this problem we have to pass zext/sext
depending on the parameter type.
To make things right and future-proof, we decided to refactor
a significant part of IR to bitcode translator: when generating callsite
compiler "looks" at callee and applies its attributes to the callsite.
There are several sources of attributes:
1. External LLVM functions from runtime: just copy-paste attributes.
2. Direct IR calls: infer attributes from the declaration.
3. Virtual calls: use available declaration, so almost the same as prev.
4. External declarations functions: manual labor!
Specifying attributes at all callsites (including Kotlin->Kotlin) makes
things uniform and a little easier to implement.
All in all, the delta is significant, but comprehensible. In some places
I managed to make it seamless by changing declaration type and its
usages types simultaneously. In others (ObjCExport), unfortunately,
things got a little messy.
#KT-48722 fixed
2021-10-29 04:07:28 +00:00
Svyatoslav Kuzmich
a13329fc65
[JS IR] Regenerate and mute test
2021-10-28 22:39:09 +03:00
Artem Kobzar
790e8843f9
fix(JS_IR): add outer classes resolving inside the function inliner.
2021-10-28 17:34:58 +00:00
Artem Kobzar
7f7aa9a921
feat(Inner Classes): generate typescript type definitions and JS for Inner Classes.
2021-10-28 17:33:41 +00:00
Ivan Kochurkin
744191099c
[FIR] Fix false positive "return required" for if/else with inlined return in branch
...
^KT-49289 Fixed
2021-10-28 20:02:25 +03:00
Svyatoslav Kuzmich
5b10396f48
[stdlib] Test that modification of the array returned by toCharArray() doesn't affect the original string
2021-10-28 15:49:00 +00:00
Svyatoslav Kuzmich
f7d3cb269f
[Wasm] Support passing lambdas from Kotlin to JS
2021-10-28 18:47:38 +03:00
Svyatoslav Kuzmich
766377a041
[Wasm] Remove WasmForeign annotation
...
No longer needed since external interfaces are supported
2021-10-28 18:47:38 +03:00
Roman Artemev
23ad0e7c63
[TEST] Add test checking cast to DNN type
...
muted temporary due to required support in backends
2021-10-28 18:03:14 +03:00
Roman Artemev
5b19c41373
unmute jvm test
2021-10-28 18:03:13 +03:00
Roman Artemev
4424512bd6
[TEST] Add irText test for DefinitelyNotNull type
2021-10-28 18:03:12 +03:00
Roman Artemev
d809e260cb
[KLIB] Support DefinitelyNotNull type in KLIB
...
- add proto message
- serialize/deserialize
2021-10-28 18:03:11 +03:00
Roman Artemev
29728efbf7
[PSI2IR] Support DefinitelyNotNull type translation in Psi2Ir
2021-10-28 18:03:11 +03:00
Roman Artemev
101afded69
[IR] Introduce IrDefinitelyNotNullType in IR
...
- support it in render
- support in IR copy
- KEEP-268
2021-10-28 18:03:09 +03:00
Tianyu Geng
b48870c11f
FIR checker: pass expected array type in ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION
...
This is needed by the IDE quickfix to generate the correct `arrayOf` (or
`intArrayOf`, etc`) wrapper call.
2021-10-28 16:36:02 +03:00
Mikhail Glukhikh
9f062df258
FE: fix factory and message for EXPOSED_FROM_PRIVATE_IN_FILE
...
#KT-49442 Fixed
2021-10-28 16:24:43 +03:00
Ivan Kylchik
1a52512578
[JS TESTS] Restore AbstractIrCodegenWasmJsInteropJsTest in generator
2021-10-28 15:18:30 +03:00
Dmitriy Novozhilov
0cce0fbbfb
[FIR] Remove unused methods from FirProvider
...
Those methods were created for first prototype of FIR plugin API, and
now they are completely redundant
2021-10-28 15:01:22 +03:00
Dmitriy Novozhilov
acab58a314
[FIR] Cleanup builder inference utility
2021-10-28 15:01:20 +03:00
Dmitriy Novozhilov
4490f64666
[FIR] Get rid of FirAnnotatedDeclaration
...
Now all fir declarations have annotations
^KT-49260 Fixed
2021-10-28 15:01:18 +03:00
Nikolay Lunyak
0eb2d117ef
[FIR] KT-45972, KT-49072: Add visibility checks to the type resolution
2021-10-28 14:31:27 +03:00
Jinseong Jeon
2dc2a90755
Introduce an API to convert TypeConstructorMarker to TypeParameterMarker
2021-10-28 12:54:45 +03:00
Sergej Jaskiewicz
a367b91aa1
[IR] [Refactoring] Add toString and String::plus to IrBuiltins
...
Also use `OperatorNameConventions` constants instead of magic strings
2021-10-28 08:35:11 +00:00
Alexander Dudinsky
f8dd1b3512
Fix Gradle Integration Tests MPP and Android on MacOS
2021-10-28 11:34:06 +03:00
Ilya Chernikov
600529fe21
temp: fix testdata until diagnostic reporting is fixed properly
...
currently some old backend reporting schemes are used in IR backend that
rely on the PSI alement passing. This conflicts with updated generic
diagnostic infrastructure that is shared between FIR and IR backends.
As soon as such places will be abstracted out and the IR will be
completely switched to the new diagnostic infrastructure, this and
similar changes could be reverted.
2021-10-27 22:17:42 +02:00
Ilya Chernikov
cb513ee333
IR: fix ACCIDENTAL_OVERRIDE reporting on annotation implementations
2021-10-27 22:17:42 +02:00
Ilya Chernikov
81e4f3091a
[minor] unmute suppress test on FIR - suppression works properly now
2021-10-27 22:17:42 +02:00
Ilya Chernikov
5bdda9c7f8
Implement suppression cache based on IR tree, use it in reporter
2021-10-27 22:17:42 +02:00
Ilya Chernikov
932eab8dfc
Implement semi-lazy PSI-based suppress cache for IR
...
calculates suppressions per root (KtFile) basis on demand.
2021-10-27 22:17:42 +02:00
Ilya Chernikov
bfe31c97ac
Add support for ASTs without parents to suppress cache
2021-10-27 22:17:42 +02:00
Ilya Chernikov
7ef806b2ed
Extract AbstractKotlinSuppressCache to frontend.common
2021-10-27 22:17:42 +02:00
Ilya Chernikov
70259cc228
Extract psi- and descriptior-independent suppress cache logic
2021-10-27 22:17:41 +02:00
Ilya Chernikov
70366dc7a6
Refactor diagnostic & result reporters...
...
to better reflect actual roles
2021-10-27 22:17:41 +02:00
Ilya Chernikov
ea1edc2bd9
Add equality to diagnostic context, simplifying deduplication
2021-10-27 22:17:41 +02:00
Ilya Chernikov
34cbb3d356
Add support for new backend diagnostic to test infrastructure
2021-10-27 22:17:41 +02:00
Ilya Chernikov
fc176e9845
Refactor IR reporting and infrastructure
2021-10-27 22:17:41 +02:00
Ilya Chernikov
da2d3f29da
Add multiple renderer sources support to new diagnostics infrastructure
2021-10-27 22:17:41 +02:00
Ilya Chernikov
0de6f8b915
Add multiple renderer sources supprt to new diagnostics infrastructure (move only to save history)
2021-10-27 22:17:41 +02:00
Ilya Chernikov
1ce4075112
Prepare CLI reporting infrastructure for non-PSI diagnostics
2021-10-27 22:17:40 +02:00
Ilya Chernikov
5446168770
Add path to FirFile to pass it to the DiagnosticContext
2021-10-27 22:17:40 +02:00
Ilya Chernikov
1e056a7aa8
Report IR errors via new diagnostic infrastructure
2021-10-27 22:17:40 +02:00
Ilya Chernikov
21ea92cd4a
Extract mutable diagnostic context to separate interface
2021-10-27 22:17:40 +02:00
Ilya Chernikov
9e60c70db7
Add abstract source element and switch diagnostics to it
2021-10-27 22:17:40 +02:00
Ilya Chernikov
524e40708d
Move report helpers to frontend.common
2021-10-27 22:17:40 +02:00
Ilya Chernikov
d3f3aa4b29
Move specific diagnostics infrastructure to frontend.common-psi
2021-10-27 22:17:40 +02:00
Ilya Chernikov
e9f59e8d1d
Move common diagnostics infrastructure to frontend.common
2021-10-27 22:17:39 +02:00
Ilya Chernikov
f1d0ead652
Fix fir analysis api after refactorings
2021-10-27 22:17:39 +02:00
Ilya Chernikov
31c58767cf
Rearrange fir diagnostic for further reuse
2021-10-27 22:17:39 +02:00
Ilya Chernikov
a5bf8f5f91
Rearrange fir diagnostic for further reuse (rename to save history)
2021-10-27 21:44:19 +02:00
Ilya Chernikov
a65beb2dc5
Move Fir*SourceElement to frontend.common, rename to Kt* (complete)
2021-10-27 21:44:11 +02:00