Commit Graph

2564 Commits

Author SHA1 Message Date
Mikhail Glukhikh d8398bb0ab [FIR2IR] Handle external declaration parents more accurately
This allows us to set declaration parent immediately,
not at some moment after its creation
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh 6beee004a3 [FIR2IR] Take callables from scope in external declaration generator
This commit fixes 2 more unmuted BB tests
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh 12c0cbee94 [FIR2IR] Don't enter same class twice while override searching
This commit fixes 21 unmuted BB tests after previous one
2020-05-14 13:40:37 +03:00
Mikhail Glukhikh 00fcb6cb02 [FIR2IR] Minor refactoring of populateOverriddenSymbols 2020-05-14 13:40:36 +03:00
Mikhail Glukhikh e7e80be34a [FIR2IR] Populate overridden symbols even for !isOverride
Before this commit we considered !isOverride as a sign that
function / field / accessor has no overridden symbols.
However, it's false for deserialized, because isOverride
is always false there.

This commit fixes 68 BB tests but breaks 25 BB tests (not yet muted)
2020-05-14 13:40:36 +03:00
Jinseong Jeon bcf277d885 Add comments for generators about data/inline class (in psi2ir and fir2ir) and annotations (fir2ir). 2020-05-14 09:41:11 +03:00
Jinseong Jeon e844c59e7e FIR2IR: filter correct use-site target for value parameter annotations. 2020-05-14 09:41:11 +03:00
Jinseong Jeon 76e679a6ca FIR2IR: refactor annotation generations. 2020-05-14 09:41:11 +03:00
Jinseong Jeon 931ba4892a FIR2IR: split property annotations according to use-site targets. 2020-05-14 09:41:11 +03:00
Steven Schäfer 497df0922a JVM IR: Fix corresponding properties in inline classes 2020-05-13 20:57:52 +02:00
simon.ogorodnik 86683e94fc [FIR] Fix cfg crash with multiple postponed arguments 2020-05-13 19:20:02 +03:00
pyos 8809abdbac JVM_IR: do not handle Nothing in suspend tail call bridges
Else they wouldn't be tail call, would they?
2020-05-13 05:54:37 -07:00
Ilmir Usmanov 0acaedef92 Fix attribute clash between STATIC_INLINE_CLASS_REPLACEMENT and original
Attributes are used to name continuation classes and are generated
before inline classes processing. During the processing, for override
functions in inlined classes, the compiler generates
STATIC_INLINE_CLASS_REPLACEMENT function with body of the override.
The override's body is replaced with delegating call to
STATIC_INLINE_CLASS_REPLACEMENT. However, since we need to keep the name
of the continuation class, we copy attributes from the override to
STATIC_INLINE_CLASS_REPLACEMENT. This leads to attribute clash during
AddContinuationLowering.
So, to fix the issue, do not use the attribute of
STATIC_INLINE_CLASS_REPLACEMENT in original->suspend map.
As an optimization, do not generate continuation for the override
function.
2020-05-13 14:53:37 +02:00
Mark Punzalan b5b361bb09 Add tests for nullable loop variable in for-loop over unsigned progression. 2020-05-13 13:54:35 +02:00
Mark Punzalan 0e6af517d7 Generate tests for unsigned progressions using
GenerateSteppedRangesCodegenTestData.
2020-05-13 13:54:35 +02:00
Jinseong Jeon 6034fcdc46 FIR2IR: apply SAM conversion to arguments if needed 2020-05-13 11:28:48 +03:00
Alexander Udalov 0ce16b9d8c Support non-reified type parameters in typeOf in JVM and JVM_IR
#KT-30279 Fixed
2020-05-13 10:04:28 +02:00
Alexander Udalov ea413cefb4 Remove TypeOfChecker for JVM frontend
This is needed to support typeOf with non-reified type parameters.

 #KT-30279
2020-05-13 10:04:26 +02:00
Mikhail Glukhikh 0c0f4ef3db FIR CFG: handle 'Dead' properly in edge kind merging 2020-05-13 10:37:08 +03:00
Mikhail Glukhikh 41f241f608 FIR CFG: merge DFA + CFA edge in Simple edge 2020-05-13 10:37:08 +03:00
Mikhail Glukhikh 32cfee50e0 FIR CFG: remove duplicating lambda enter -> exit connection 2020-05-13 10:37:08 +03:00
Mikhael Bogdanov 5ef37148ea Add flag for proper array convention with default args calls 2020-05-13 08:51:57 +02:00
Mikhail Bogdanov adc770b604 Process default arguments in array convention calls
#KT-16520 Fixed
2020-05-13 08:51:57 +02:00
Jinseong Jeon 30e5748fec FIR: set proper visibility of property accessors. 2020-05-12 19:47:37 +03:00
Mikhail Glukhikh 6a2461f2c6 [FIR] Refactor boolean flags related to constructors: !no -> include 2020-05-12 16:57:08 +03:00
Mikhail Glukhikh db694dd7ab [FIR] Extract ConstructorScopeTowerLevel 2020-05-12 16:57:08 +03:00
Mikhail Glukhikh 22e7264460 [FIR] Use all implicit receivers for del. constructors, not just one 2020-05-12 16:57:08 +03:00
Mikhail Glukhikh 535b4434a8 [FIR TEST] Add extra test for inner classes inside hierarchy 2020-05-12 16:57:08 +03:00
Mikhail Glukhikh f48ff2679e [FIR] Branch delegating constructor call resolve by isInner from start 2020-05-12 16:57:07 +03:00
Mikhail Glukhikh 28c0dac36f [FIR] Set FirJavaClass.isInner properly 2020-05-12 16:57:07 +03:00
Mikhail Glukhikh 3aca40538b [FIR TEST] Fix error in exposedSupertype test 2020-05-12 16:57:07 +03:00
Mikhail Glukhikh 457fb09e3a [FIR] Use tower to resolve delegated constructors, set dispatch receiver 2020-05-12 16:57:07 +03:00
Victor Petukhov 11d05c1abd NI: propagate isNullabilityConstraint flag into constraint injector and inherit it
^KT-37510 Fixed
2020-05-12 16:15:07 +03:00
Pavel Kirpichenkov 003ba1c8f5 [NI] CST: add preemptive recursion detection
For single super type constructor create star projection argument when types for that argument are equal to the original types.
Captured star projections are replaced with their corresponding supertypes during this check.
Skip check for `in` parameters, for which recursive cst calculation does not happen.
Adjust constant in fallback recursion condition.

^KT-38544 Fixed
2020-05-12 11:13:43 +03:00
Jinseong Jeon fd584e6f13 FIR2IR: fix offsets for calls. 2020-05-09 21:11:40 +03:00
Victor Petukhov 585e98a835 NI: support inferring lambda receiver type by explicit receiver of anonymous function (which is another postponed argument) 2020-05-09 12:34:06 +03:00
Mikhail Glukhikh 1dd50ba1f2 [FIR] Use JvmGeneratorExtensions also from CLI 2020-05-08 17:57:55 +03:00
Jinseong Jeon eac9af521e [FIR2IR] differentiate external Java stub origin from external stub 2020-05-08 17:45:39 +03:00
Mikhail Glukhikh b271b6d7a8 [FIR2IR] Add conversion of value parameter annotations 2020-05-08 17:30:28 +03:00
Mikhail Glukhikh 76f6e27e37 [FIR2IR] Add initial support of collection literals 2020-05-08 17:30:24 +03:00
Mikhail Glukhikh f3e2dbf360 [FIR2IR] Add conversion of function annotations 2020-05-08 17:30:19 +03:00
Alexander Udalov 91ef053fbc IR: keep local scope with counter maps across LDL invocations
Since LocalDeclarationsLowering is a BodyLoweringPass, local
functions inside one declaration are handled independently of local
functions in the other declaration. This can lead to name clashes, in
case a local function with the same name and signature is declared in
overloads in the same container, which results in a signature clash
error in JVM IR.

The issue became more common with the introduction of adapted function
references, where psi2ir generates a local adapter-function with a
predefined name, which can easily clash with another reference to the
same target in an overload. This led to a compilation error when
bootstrapping Kotlin with JVM IR, for example in GradleIRBuilder.kt
where there are a lot of references to the same function.
2020-05-08 14:33:34 +02:00
Dmitriy Novozhilov ad09eb5416 [FIR] Add ability to rewrite attributes in FirDeclarationAttributes 2020-05-08 15:10:13 +03:00
Dmitriy Novozhilov 239837fd14 [FIR] Introduce FirDeclarationAttributes for FirDeclaration 2020-05-08 15:10:12 +03:00
Dmitriy Novozhilov b348ae689a [FIR] Introduce different implementations of ArrayMapOwner
- ComponentArrayOwner for services
- AttributeArrayOwner for attributes like userdata or type attributes
2020-05-08 15:10:12 +03:00
Dmitriy Novozhilov 959ecceaf7 [FIR-PLUGIN] Move fir plugin prototype out from :compiler module 2020-05-08 15:10:02 +03:00
Dmitriy Novozhilov ab7613f6a4 [FIR-PLUGIN] Rename FirExtensionPoint to FirExtension 2020-05-08 15:10:02 +03:00
Dmitriy Novozhilov 4eb9eb0537 [FIR] Rename FirExtensionPoint to FirExtension
Also rename `FirExtensionPointService` to `FirExtensionsService`
2020-05-08 15:10:02 +03:00
Dmitriy Novozhilov 6af3b289a3 [FIR-PLUGIN] Add plugin key to allopen extensions 2020-05-08 15:10:01 +03:00
Dmitriy Novozhilov 78b8a7b388 [FIR] Store extensions by plugin key 2020-05-08 15:10:01 +03:00