Nikolay Lunyak
41c3f98419
[FIR] Make resolution of classes in FirProvider more reasonable.
...
See the `privateInFile.fir.kt` test.
Type mismatches are simply confusing.
`inheritorOfExpectSealedClass.out`
reports unresolved reference probably
because now it resolves into the expect
declaration, rather than the actual one.
K1 doesn't report UNRESOLVED_REFERENCE
in this case. But this is red code
anyway. And this behavior still
depends on the order in which the compiler
receives both the declarations.
^KT-59927
^KT-62567
2023-10-13 11:56:54 +00:00
Nikolay Lunyak
a9ceae9667
[FIR] Add the privateInFileInDifferentModule test
...
We only see the redeclaration
diagnostics on the declarations inside
the second file, because of
`FirRecorder::visitRegularClass`.
`data.state.classifierContainerFileMap`
references the last file, so
when checking the visibility of
the first `private class C { ... }`
(when collecting declarations that
conflict with the second `private class C`)
the provider returns the second file
instead of the first one, so the class
behaves as it is visible, and
`collectTopLevelConflict` returns in
this case.
As for why `INVISIBLE_*`s are reported
inside the first file: this is because
`data.state.classifierMap` stores the
last classifier it sees instead of
the first one.
^KT-62537
2023-10-13 11:56:54 +00:00
Sergej Jaskiewicz
df0f86bf8d
[FIR generator] Use a single list of parent TypeRefs for elements
...
(Instead of storing the list of parent elements + the map of parent
arguments)
2023-10-13 10:11:38 +00:00
Ivan Kylchik
350ee4be1d
[Native] Replace consequence line and column calls with a single one
2023-10-13 08:50:47 +00:00
Ivan Kylchik
1be98b8f08
[IR] Extract some common code into AbstractIrFileEntry
2023-10-13 08:50:47 +00:00
Ivan Kylchik
6039d39546
[IR] Add new method IrFileEntry.getLineAndColumnNumbers
...
Calling this method instead of sequence of `getLineNumber` and
`getLineNumber` is faster because we eliminate one exess
`getLineNumber` call.
2023-10-13 08:50:47 +00:00
Ivan Kylchik
a30d0aeeb0
[JVM] Replace AbstractInsnNode.getType with new util function
...
This change speeds up backend by approximately 0.96%.
2023-10-13 08:50:47 +00:00
Ivan Kylchik
67460962c3
[JVM] Use HashSet instead of SmartSet in MaxStackFrameSizeAndLocalsCalculator
...
This change speeds up backend by approximately 0.25%.
2023-10-13 08:50:47 +00:00
Ivan Kylchik
05b364a5f1
[JVM] Simplify equals method in StrictBasicValue
2023-10-13 08:50:47 +00:00
Ivan Kylchik
84a47a2298
[IR] Drop SLRUCache usages from NaiveSourceBasedFileEntryImpl
...
Access to `SLRUCache` is a bottleneck when we call `getLineNumber`.
We are very rarely going to access the same offset. This change
speeds up backend by approximately 0.43%.
2023-10-13 08:50:47 +00:00
Ivan Kylchik
4a07454d8d
[IR] Drop excess resolveFakeOverride from EVALUATION_MODE
...
This change doesn't affect semantic and speeds up
backend by approximately 0.06%.
2023-10-13 08:50:47 +00:00
Ivan Kylchik
3335db0aa8
[IR] Simplify unsigned check in EVALUATION_MODE
...
This way we are not creating useless intermediate lists. This change
speeds up backend by approximately 0.38%.
2023-10-13 08:50:47 +00:00
Ivan Kylchik
f36f37bf47
[IR] Drop isNan fun from IrInterpreterCommonChecker
...
It is not used anymore after 858f432807
2023-10-13 08:50:47 +00:00
Ivan Kylchik
9135e9d13d
[JVM_IR] Drop reversed call from writeLocalVariablesInTable
...
It is better to use simple for loop. This change speeds up
backend by approximately 0.07%.
2023-10-13 08:50:47 +00:00
Pavel Kunyavskiy
156c341eeb
[K/N] Implement objc overridablity condition for IR
...
^KT-61511
2023-10-13 08:15:01 +00:00
Pavel Kunyavskiy
202f30f910
[K/N] Extract ObjcOverridabilityCondition to separate file
...
^Kt-61511
2023-10-13 08:15:00 +00:00
Ilya Goncharov
1fd9706f47
[K2] KT-60080 Fix packageFqn for property accessor symbol
...
^KT-60080 fixed
2023-10-12 17:44:47 +00:00
Ilya Kirillov
4d38cc4548
[Analysis API Standalone] fix exception on invalid KLib from symbol provider
...
^KT-62244 fixed
2023-10-12 15:15:05 +00:00
Mikhail Glukhikh
d005d1cd68
Add accidentally forgotten IrSourceRangesDumpHandler to IR text tests
2023-10-12 15:06:47 +00:00
Igor Chevdar
a8c6074c45
[IR] Use InlineFunctionResolver for inlinable function references
...
#KT-62313 Fixed
2023-10-12 13:34:13 +00:00
Igor Chevdar
c6470a684d
[box-tests] Added a reproducer for #KT-62313
2023-10-12 13:34:13 +00:00
Svyatoslav Kuzmich
d9cb41d242
Refactor: remove empty overrides in K2 checkers
2023-10-12 13:26:58 +00:00
Svyatoslav Kuzmich
c73e1f678e
Fix copyright year in Wasm K2 checkers
2023-10-12 13:26:58 +00:00
Svyatoslav Kuzmich
881997585a
[Wasm] Add K2 checkers.web.common module (KT-56849)
...
This module is created to share JS and Wasm checker logic
Extract isEffectivelyExternal util fun from K/JS in order to
reuse it in Wasm checkers
2023-10-12 13:26:58 +00:00
Svyatoslav Kuzmich
a10042f909
[Wasm] Add K2 checkers.wasm module (KT-56849)
...
Add first K2 checker ExternalInheritanceChecker to test the infra
2023-10-12 13:26:58 +00:00
Svyatoslav Kuzmich
0da9cf8159
[Wasm] Add K2 diagnostic tests (KT-56849)
2023-10-12 13:26:58 +00:00
Ivan Kylchik
96a2da4906
[JVM] Split mergeControlFlowEdge into full and fast versions
...
This is needed because for `FastStackAnalyzer` we actually
will use only `fast` version, that can potentially improve overall
performance.
2023-10-12 13:04:43 +00:00
Ivan Kylchik
07c7792693
[JVM] Drop toArray call where iterator can be used
2023-10-12 13:04:43 +00:00
Ivan Kylchik
2387fe302c
[JVM] Use reference comparison for objects defined in StrictBasicValue
2023-10-12 13:04:43 +00:00
Ivan Kylchik
c1c04376cf
[JVM] Replace open functions in FastAnalyzer with constructor args
2023-10-12 13:04:43 +00:00
Ivan Kylchik
99655cfa15
[JVM] Make newFrame constructor's parameter for FastAnalyzer
2023-10-12 13:04:43 +00:00
Ivan Kylchik
cfe38470af
[JVM] Use composition instead of inheritance in FixStackAnalyzer
...
This way we will be able to pass `createFrame` argument
directly to `FastAnalyzer`.
2023-10-12 13:04:43 +00:00
Ivan Kylchik
2327800a95
[JVM] Make BoxingInterpreter an abstract class instead of open
...
This way, it is a little bit easier to fit the semantics of this
class in the head.
2023-10-12 13:04:43 +00:00
Ivan Kylchik
38dd75c6c8
[JVM] Drop boxingInterpreter constructor parameter from BoxingFrame
2023-10-12 13:04:43 +00:00
Ivan Kylchik
6d57cbe23c
[JVM] Reorganize positions of methods in FastAnalyzer
2023-10-12 13:04:43 +00:00
Ivan Kylchik
895afc736d
[JVM] Drop I : Interpreter<V> type parameter from FastAnalyzer
2023-10-12 13:04:43 +00:00
Ivan Kylchik
87c46db3d5
[JVM] Drop getFrame and setFrame methods from FastAnalyzer
2023-10-12 13:04:43 +00:00
Ivan Kylchik
f7f253d2bf
[JVM] Move isTcbStart computation in FastAnalyzer
2023-10-12 13:04:43 +00:00
Ivan Kylchik
53d9b3c54f
[JVM] Combine all mergeControlFlowEdge methods
...
This is just a refactoring commit. All fast analyzers are doing the
same thing in `mergeControlFlowEdge`, so we extract it in common
`FastAnalyzer`. The only exception is `FastStackAnalyzer`.
There was no `isMergeNode` check, but this is an optimization
that allows us to reuse a frame and not copy it.
2023-10-12 13:04:42 +00:00
Ivan Kylchik
68e4a7a318
[JVM] Combine all analyzeInstruction methods
2023-10-12 13:04:42 +00:00
Ivan Kylchik
58473b94a7
[JVM] Reuse visitNopInsn method in all Fast...Analyzer classes
2023-10-12 13:04:42 +00:00
Ivan Kylchik
ed95ebc585
[JVM] Move visit...Insn methods in FastAnalyzer
...
They are actually the same.
2023-10-12 13:04:42 +00:00
Ivan Kylchik
7845e6bb0a
[JVM] Drop visitControlFlowExceptionEdge method from FastStackAnalyzer
...
There is no class that overrides this method.
Also replaced `newValue` call with `newExceptionValue`. Under the hood,
`newExceptionValue` still calls `newValue` if the interpreter doesn't
redefine it. And it kind of makes sense to call `newExceptionValue`
here because we are handling try-catch block.
2023-10-12 13:04:42 +00:00
Ivan Kylchik
e9019e9fb3
[JVM] Drop StoreLoadInterpreter class
2023-10-12 13:04:42 +00:00
Ivan Kylchik
364faa9506
[JVM] Drop StoreLoadValue interface
2023-10-12 13:04:42 +00:00
Roman Efremov
a05b37c652
[K2] Support reporting of SUPERTYPE_INITIALIZED_IN_EXPECTED_CLASS
...
...on regular classes and enum entries.
^KT-59979 Fixed
2023-10-12 13:01:40 +00:00
Roman Efremov
32a87836c2
[Test] Improve test of SUPERTYPE_INITIALIZED_IN_EXPECTED_CLASS diagnostic
...
Add case where explicit primary constructor is present in expect,
so that SUPERTYPE_INITIALIZED_WITHOUT_PRIMARY_CONSTRUCTOR is not
reported.
^KT-59979
2023-10-12 13:01:40 +00:00
Simon Ogorodnik
13b6653899
[FIR] Add todo to remove violation of lookup tag contract
2023-10-12 12:27:54 +00:00
Simon Ogorodnik
024e94a479
[K2] Document KMP implementation in the K2 Compiler
...
Add comprehensive documentation explaining the implementation and
functions of the Kotlin multiplatform (KMP) support in the K2 Compiler.
2023-10-12 12:27:54 +00:00
Sergej Jaskiewicz
04c0cc5a5c
[FIR generator] In properties always print get() ... on new line
...
This is to unify the code formatting with IR classes.
2023-10-12 11:45:55 +00:00