Commit Graph

747 Commits

Author SHA1 Message Date
Roman Artemev 6e01ec8dd3 [IR] Fix translation of synthetic generic java properties
- Compute substituted accessor descriptor to avoid unbound type parameters
2020-03-27 10:52:33 +03:00
Roman Artemev 4bebfd33b9 [IR] Fix unbound type parameter symbol for jvm corner cases 2020-03-27 10:52:33 +03:00
Dmitriy Novozhilov 48fb279721 [FIR] Add constraint to flexible type for declared argument for java parameter 2020-03-27 10:17:12 +03:00
Denis Zharkov cdd7e41891 FIR: Support proper implicit return type computation for local classes 2020-03-25 14:53:34 +03:00
Jinseong Jeon cdf5a2a5a1 FIR: set dispatch receiver parameter for inner class's constructor. 2020-03-25 12:40:09 +03:00
simon.ogorodnik f83c20065d [FIR-test] Unmute passing tests, mostly fir2ir 2020-03-24 18:58:19 +03:00
simon.ogorodnik ae54815132 [FIR] Fix varargs of unsigned numbers 2020-03-24 18:58:17 +03:00
Mikhail Glukhikh ca22e05acd [FIR2IR] Support safe calls 2020-03-23 15:13:50 +03:00
Jinseong Jeon e46a4246d2 FIR: regard property accessor without body as FirDefaultPropertyAccessor 2020-03-23 15:12:54 +03:00
Dmitry Petrov b0e916769d Add test for KT-37570 2020-03-23 12:27:58 +03:00
Georgy Bronnikov 4742057b51 IR: generate lambdas in place in Psi2Ir
even when arguments are to be rearranged.
Lambdas have no side effects, and storing them in temporary variables
prevents processing in the backend
(such as inserting continuation parameter in AddContinuationLowering).
2020-03-23 11:09:30 +03:00
Dmitriy Novozhilov 6ce8d661ad [FIR] Add nullability to ILT. #KT-37639 Fixed 2020-03-20 23:11:28 +03:00
Dmitriy Novozhilov 5f9f01fe4e [FIR] Implement new completion mode calculator
Note that `testDelegates` now fails due to KT-37638 and
    `testSimpleIn` fails due to problems with type parameters
    of inner classes
2020-03-20 23:11:28 +03:00
Dmitriy Novozhilov ea02855ba6 [FIR] Fix type arguments and substitution for flexible types 2020-03-20 23:11:28 +03:00
Dmitriy Novozhilov 7bfe7061e7 [FIR] Add proper nullability for java enums 2020-03-20 23:11:28 +03:00
Mikhail Glukhikh 9836520287 [FIR2IR] Generate synthetic bodies for Enum.values() and valueOf() 2020-03-20 11:55:34 +03:00
Mikhail Glukhikh 95108a1bce [FIR2IR] Enable type parameter index >= 0 requirement 2020-03-18 17:09:36 +03:00
Mikhail Glukhikh 1036d8a35a [FIR] Provide dispatch receiver for 'field' synthetic variable 2020-03-18 17:09:36 +03:00
Mikhail Glukhikh 51c83e5f62 [FIR2IR] Move delegating constructor call to body start 2020-03-18 17:09:36 +03:00
Mikhail Glukhikh 10c2aa1657 [FIR2IR] Set origin properly for set field / variable 2020-03-18 17:09:35 +03:00
Mikhail Glukhikh c0f8be5d4e [FIR2IR] Generate setter call for assignments, if any 2020-03-18 17:09:35 +03:00
Dmitriy Novozhilov 2b986194fb [FIR] Add desugaring of array assignments and resolve of it
#KT-37516 Fixed
2020-03-18 11:31:53 +03:00
Dmitriy Novozhilov 820da6edaa [FIR] Don't set up expected type for function body 2020-03-16 17:04:28 +03:00
Roman Artemev d27954a6d4 [IR] Use erased types in backing field initializer in case of generic delegated property
- Since neither IrProperty nor IrField is Type Parameter container
 using of proprty's type parameter in IrField related code leads to
 creation of "hanging" type parameters which should be considered as
 incorrect IR.
 - Such code designed to be prohibited in LV 1.5
 - The fix makes use of erased type in such case
 where type parameter is expected.
2020-03-13 17:28:31 +03:00
Roman Artemev 13a73b67de [IR] Fix IrPropertyReference for delegated property
- Make sure that property CR passed to `getValue` doesn't have type
 arguments.
2020-03-13 17:28:30 +03:00
Mikhail Glukhikh 20c4a7b244 [FIR2IR] Introduce staged transformation (first step)
Now FE IR -> BE IR transformation is performed in multiple stages
controller by Fir2IrConverter. Stages are
 * files & classes registration
 * supertypes & type parameters handling
 * functions & properties signature generation
 * body generation

After each step we have guarantee (with exception of local classes &
type inference combination, and external symbols) that required symbols
(class/function/property/variable/type parameter)
are already bound to real declarations and have correct parents.

This commit also fixes incorrect parents for local classes
2020-03-13 12:18:02 +03:00
Mikhail Glukhikh 6fd8ccc293 [FIR2IR] Support (simple) conversion of captured types 2020-03-12 15:17:51 +03:00
Dmitry Petrov c0b15b1768 KT-37448 'this' in delegating constructor call may refer to outer object 2020-03-12 13:40:14 +03:00
Mikhail Glukhikh 3d17ce05b5 [FIR] Introduce FirResolvedArgumentList with argument-parameter mapping
#KT-36345 Fixed
2020-03-11 22:08:59 +03:00
Mikhail Glukhikh 47ebd38534 FIR2IR: fix origin of object literal constructor call 2020-03-11 16:01:58 +03:00
Mikhail Glukhikh 8231377f6b FIR2IR: convert qualifiers inside getClass properly 2020-03-11 16:01:57 +03:00
Mikhail Glukhikh 1812b490a1 FIR: set anonymous object constructor return type properly 2020-03-11 16:01:57 +03:00
Dmitry Petrov 90d012cecb Handle unbound extension receiver in callable reference adaptation 2020-03-10 16:56:48 +03:00
Mikhail Glukhikh 2651fe9fb8 FIR2IR: use CLASS kind for anonymous objects 2020-03-10 15:19:35 +03:00
Mikhail Glukhikh e9699e7173 FIR2IR: provide correct origins for arithmetic operators 2020-03-10 15:19:35 +03:00
Mikhail Glukhikh 64e71e9d25 FIR2IR: use IR_EXTERNAL_DECLARATION_STUB for external classes 2020-03-10 15:19:34 +03:00
Mikhail Glukhikh ed6c9e67a1 FIR2IR: convert qualifiers to companion objects, if any 2020-03-10 15:19:34 +03:00
Dmitry Petrov eba45d4f89 KT-36963 Deparenthesize !! argument when generating expression 2020-03-06 14:55:41 +03:00
Dmitry Petrov 71e4b0c9ad KT-31649 Use 'Any#hashCode' in generated hashCode if class has none 2020-03-06 14:55:40 +03:00
Pavel Kirpichenkov dc42b20ae3 [NI] Use alternative to intersection type in public declarations
The new inference uses inferred intersection types normally, unlike the old inference.
However, intersection types in public declarations are approximated to supertype, which
potentially may give a less presice type, then it would be with the OI.
For non-related T1, T2 the NI approximates {T1 & T2} to Any in public declarations,
and if the OI was inferring T1 instead of the intersection type, it may lead to
less precise declaration type and related errors.

The solution is to remember an alternative for an intersection type when present.
Before approximation the alternative replaces the intersection type.

^KT-36249 Fixed
2020-03-05 20:20:47 +03:00
Dmitry Petrov 4038c758ca KT-37131 Record default arguments in argument adaptation
Also, don't adapt argument when expected type is base reflection type
(KCallable<T>, etc), since such types don't contain parameter types.
2020-03-05 19:32:39 +03:00
Dmitriy Novozhilov e3e7b40f85 [FIR] Fix determining coercion to Unit 2020-03-05 16:48:48 +03:00
Dmitriy Novozhilov 770dfb69ba [FIR] Analyze all statements in block except last one in independent mode
Some broken tests will be fixed in next commit
#KT-37176 Fixed
2020-03-05 16:48:47 +03:00
Dmitriy Novozhilov 25dc9f948a Revert "[FIR] Support deserialization of annotations on JVM"
This is needed because of that commit tragically decreases performance,
  so this changes will be delayed for now
2020-03-05 16:48:47 +03:00
Mikhail Glukhikh fe658ce47f FIR2IR: remove redundant receiver generation from visitor
Now static functions have no dispatch receiver: they really shouldn't.
2020-03-04 16:55:34 +03:00
Mikhail Glukhikh 0fee8a6946 FIR2IR: cache functions and their parents properly 2020-03-04 16:55:33 +03:00
Mikhail Glukhikh 940567b8bd FIR2IR: set enum class modality properly for complex entries case 2020-03-04 16:55:33 +03:00
Mikhail Glukhikh 3ffe1a1876 FIR2IR: create IrEnumConstructorCall even in complex entries 2020-03-04 16:55:33 +03:00
Mikhail Glukhikh 5af3d92271 FIR2IR: cache enum entry classes properly 2020-03-04 16:55:33 +03:00
Mikhail Glukhikh 03eab2ec6c FIR2IR: get rid of setParentAndContent + fixes around anonymous objects 2020-03-04 16:55:32 +03:00