Commit Graph

65755 Commits

Author SHA1 Message Date
Dmitriy Novozhilov f76b57d260 [OI] Prefer candidate without @OverloadResolutionByLambdaReturnType 2020-05-29 09:36:33 +03:00
Dmitriy Novozhilov a604404bff [NI] Report warning if candidate was chosen using only @OverloadResolutionByLambdaReturnType 2020-05-29 09:36:33 +03:00
Dmitriy Novozhilov 82ce2e7b7c [NI] Update annotation used in testdata 2020-05-29 09:36:32 +03:00
Ilya Gorbunov e9ef6dbc28 Discriminate OverloadResolutionByLambdaReturnType annotated overloads...
instead of preferring them in case of unsolvable ambiguity.
2020-05-29 09:36:32 +03:00
Dmitriy Novozhilov e1418a5540 [NI] Check for maximally specific candidate chosen with factory resolution 2020-05-29 09:36:32 +03:00
Dmitriy Novozhilov e7869bd9d4 [NI] Analyse lambda in factory pattern resolution in independent context 2020-05-29 09:36:32 +03:00
Ilya Gorbunov a0c7bece93 Overload resolution by lambda return type
Make compiler recognize new annotation enabling this feature.

Change overload selection algorithm to consider all overloads
with that annotation, not just the first one.

#KT-38480
#KT-11265
2020-05-29 09:36:32 +03:00
Ilya Gorbunov 23414496c4 Annotation to enable overload resolution by lambda return type
#KT-38480
2020-05-29 09:36:32 +03:00
Dmitriy Novozhilov 1c32c62a87 [NI] Choose annotated candidate if call still ambiguous
#KT-11265
2020-05-29 09:36:31 +03:00
Dmitriy Novozhilov 8c524769b1 [NI] Add required FactoryPattern annotation for factory pattern resolve
#KT-11265
2020-05-29 09:36:31 +03:00
Dmitriy Novozhilov 865ddac07a [NI] Add feature for choosing candidate by lambda return type 2020-05-29 09:36:31 +03:00
Ilya Gorbunov f243b8946f Restore testOmittedStdlibVersion originally added in commit 15feeddc 2020-05-29 04:10:17 +03:00
Ilya Gorbunov d47981f07b Drop gradle ITs depending on AGP versions below 3.2
AGP of these versions cannot handle module-info class included in
kotlin-stdlib artifact from now on.
2020-05-29 04:10:17 +03:00
Dmitry Petrov a270ee094c Language feature for new inline class mangling rules (since 1.4) 2020-05-29 00:53:01 +03:00
Dmitry Petrov 94509bdb4e KT-39228 Fix inliner when latest 1.4 compiler used with 1.3 stdlib
Since 1.4.0-dev-8774, we mangle functions returning inline class values,
including functions with return type 'kotlin.Result'. This causes
incompatibility when 1.4 compiler is used with 1.3 (or just some
pre-1.4.0-dev-8774) standard library.

Also, write "message from the future" on functions returning inline
class values indicating that they can be used since compiler version 1.4
(otherwise 1.3 compiler using 1.4 stdlib would fail to find some
@InlineOnly functions such as 'Result.success' and 'Result.failure').
2020-05-29 00:53:00 +03:00
Mikhail Glukhikh ffdab473e2 IR symbols: enhance exception messages / toString() a bit 2020-05-28 22:59:13 +03:00
Mikhail Glukhikh b6cdcc8d50 [FIR2IR] Mute 2 failing BB tests 2020-05-28 22:51:20 +03:00
Mikhail Glukhikh 19f1a3de1a [FIR2IR] Populate overridden symbols also with public symbol inheritors 2020-05-28 22:19:21 +03:00
Mikhail Glukhikh 85760770a8 [FIR2IR] Initialize built-in symbols at start of conversion 2020-05-28 22:18:20 +03:00
Mikhail Glukhikh cd24745f1f [FIR2IR] Add primitive signature composer & use it for external classes 2020-05-28 22:18:13 +03:00
Mikhail Glukhikh 048e7a7075 [FIR] Add forgotten FirJvmBackendClassResolver to CLI 2020-05-28 22:18:05 +03:00
Andrey Uskov 0ed9356cd2 Fixed reporting duration between builds in gradle statistics 2020-05-28 22:08:18 +03:00
Andrey Uskov 8dcbc391fe Implemented collecting JS compilation mode
#KT-36410 Fixed
2020-05-28 22:08:13 +03:00
Andrey Uskov 97039926f0 Fixed import of transitive HMPP dependencies
#KT-36792 Fixed
2020-05-28 22:08:04 +03:00
Andrey Uskov a431e20b45 Fix import of js MPP source sets in both mode
#KT-38706 Fixed
2020-05-28 22:07:55 +03:00
Andrey Uskov 36c9d04cd3 Fix HMPP import tests 2020-05-28 22:07:51 +03:00
Andrey Uskov 9c2918bdd6 Drop import tests with module per source set disabled 2020-05-28 22:07:48 +03:00
Andrey Uskov 104eeb9ffd Fixed KNPE when serialized Kotlin Facet is broken
#KT-37428 Fixed
2020-05-28 22:07:44 +03:00
Andrey Uskov e6165ed785 Improved performance of MPP projects import
#KT-39059 Fixed
2020-05-28 22:07:39 +03:00
Andrey Uskov 8eca3c8aa8 Fixed building MPP model if project root directory does not exist 2020-05-28 22:07:36 +03:00
Andrey Uskov c7a53e4435 Fix android import tests 2020-05-28 22:07:31 +03:00
Andrey Uskov 351d706e0d Fixed reporting NPM download time
#KT-39109 Fixed
2020-05-28 22:07:27 +03:00
Andrey Uskov 15ead4cbe6 Fixed representation of project structure when MPP module is involved
KT-37125
2020-05-28 22:07:22 +03:00
Andrey Uskov 2eb354f211 Fixed import of MPP modules with single artifacts
#KT-38037 Fixed
2020-05-28 22:07:16 +03:00
Zalim Bashorov a8623b9b28 Make sure that library file still exists before calling loadMetadata from JsResolverForModuleFactory since IDE model could be outdated
#EA-218905 fixed
2020-05-28 21:38:01 +03:00
Zalim Bashorov 7f41dc4828 Add more detailed message for EA-227305 and EA-226744 2020-05-28 21:38:00 +03:00
Vyacheslav Karpukhin 7b55a49ddd Dependency on IDEA replaced with AS incompatibility 2020-05-28 19:29:22 +02:00
Steven Schäfer dc0ef996b7 JVM IR: Implement the new inline class ABI 2020-05-28 18:00:35 +03:00
Nicolay Mitropolsky e60a32e8d3 Uast: UastFakeLightMethod dependent generic type SOE fix KT-39155 2020-05-28 17:53:30 +03:00
Vladimir Ilmov de790a3e3b (UnusedSymbolInspection) Added support for typing per inspection tests
relates to #KT-38653
2020-05-28 15:27:58 +02:00
Alexander Udalov 1f1790d60e Do not rely on descriptors in KParameterImpl.equals/hashCode
For the same reason as in the previous commit: descriptors are cached
via weak references in moduleByClassLoader.kt and can be
garbage-collected at any point. So different instances of KParameterImpl
representing the same parameter may store different instances of
descriptors.
2020-05-28 14:17:37 +02:00
Alexander Udalov 55f384cb04 Do not rely on descriptors in KTypeParameterImpl.equals/hashCode
Descriptors are cached via weak references in moduleByClassLoader.kt and
can be garbage-collected at any point. So relying on identity of
descriptors in KTypeParameterImpl is dangerous because the same type
parameter can be represented by different descriptors. For example, the
test equalsOnFunctionParameters.kt was flaky before this change because
of this issue, and that could be reproduced by running it a few hundred
times in the same process.

Instead, use the type parameter's container (which is either KClass or
KCallable) and name, in equals/hashCode. KClass and KCallable already
have equals/hashCode independent of descriptors, so this works in case
the descriptor is invalidated.
2020-05-28 14:17:37 +02:00
Alexander Udalov d25f9dee62 Minor, remove temporary workarounds for JPS build 2020-05-28 14:17:36 +02:00
Victor Petukhov e72f7d9a1d NI: return optimization for adding constraints in ConstraintInjector.kt 2020-05-28 14:58:15 +03:00
anastasiia.spaseeva 6c1efbe812 [Spec tests] Update spec testData 2020-05-28 14:23:11 +03:00
Mikhail Glukhikh 25b1059f74 Cleanup: ExpectDependencyGenerator 2020-05-28 14:03:01 +03:00
Mikhail Glukhikh c9f2876368 [PSI2IR] Drop unnecessary forcing of type alias RHS referencing 2020-05-28 14:03:01 +03:00
Mikhail Glukhikh cef23a284f [PSI2IR] Use returnTarget.symbol directly in generateReturnExpression 2020-05-28 14:03:00 +03:00
Mikhail Glukhikh 8e8bb9bf08 [IR] Simplify class parent fetching in PrimitiveCompanionLowering 2020-05-28 14:03:00 +03:00
Mikhail Glukhikh 487a698e49 [IR] Add IrSymbolBase.toString() implementation 2020-05-28 14:02:59 +03:00