Commit Graph

3482 Commits

Author SHA1 Message Date
Pavel Kirpichenkov 873224dfbc [NI] Use new type substitutor for known type parameters
Use known type parameters substitutor after substitutor for fresh variables.
The old logic of substituions had the following order:
- replace known type parameters
- replace type parameters with type variables
- complete inference
- replace type variables with inferred types

According to the updated logic, replacement goes as follows:
- replace type parameters with type variables
- replace known type parameters; if they were variables, this will effectively remove them from inference
- complete inference
- replace remaining type variables with inferred types

Support projection substitution in new type substitutor.
It is needed for correct interaction with old type substitutor.
Old type substitutors can contain mappings constructor -> projection
which couldn't be expressed correctly with existing substitutor API in some cases.

^KT-41386 Fixed
2020-08-31 17:53:46 +03:00
Mikhail Glukhikh 1e360d9c91 [FIR2IR] Pass type context for type argument conversion properly 2020-08-31 14:31:58 +03:00
Jinseong Jeon 04af6846a7 FIR2IR: handle more vararg spreads for adapted callable references 2020-08-31 14:31:58 +03:00
Mikhail Glukhikh 5efabe063e [FIR] Fix JVM mapped function callable id 2020-08-31 14:31:57 +03:00
Mikhail Glukhikh db815c96c5 [FIR] Substitute copied type parameters in fake override properties 2020-08-31 14:31:57 +03:00
Mikhail Glukhikh dc9306367a FirClassSubstitutionScope: reorder companion functions 2020-08-31 14:31:57 +03:00
Mikhail Glukhikh 5ad453d927 [FIR] Substitute copied type parameters in fake override functions 2020-08-31 14:31:57 +03:00
Mikhail Glukhikh 458f89ef33 [FIR] Signature composer: return null signature for local declarations 2020-08-31 14:31:57 +03:00
Mikhail Glukhikh 02b6f34067 [FIR2IR] Add extension receiver parameter to delegated members 2020-08-31 14:31:57 +03:00
Mikhail Glukhikh 22c63c4e80 [FIR2IR] Add supertypes to delegated member type parameters 2020-08-31 14:31:56 +03:00
Mikhail Glukhikh 9ad55a0ee3 [FIR2IR] Don't create list under the hood in DelegatedMemberGenerator 2020-08-31 14:31:56 +03:00
Mikhail Glukhikh 5384ccf02f [FIR] Introduce & use FirDelegatedMemberScope 2020-08-31 14:31:56 +03:00
Mikhail Glukhikh f0af930288 [FIR] Eliminate unused FirDelegatedTypeRef 2020-08-31 14:31:56 +03:00
Mikhail Glukhikh ede910065a [FIR] Add problematic resolve test case with delegated super call 2020-08-31 14:31:56 +03:00
Mikhail Glukhikh 3f5beb77e8 [FIR2IR] Cache delegatable members properly 2020-08-31 14:31:55 +03:00
vldf b050ef9970 [FIR] Remove print in UnusedChecker 2020-08-30 14:18:01 +03:00
Steven Schäfer b02f0f0a25 JVM IR: Fix compilation of nested inner classes 2020-08-28 20:03:19 +02:00
Mikhail Zarechenskiy 23f87d413a Use initial system for completion if common one is effectively empty
Otherwise we can get unsubstituted type variables as expected types and
 then write wrong information for assertions

 #KT-41470 Fixed
2020-08-28 17:47:08 +03:00
Nick bb18203ae6 [FIR] Various checkers performance fixes 2020-08-28 17:07:35 +03:00
Ilya Kirillov 8faaff00fa FIR IDE: run lazy resolve on declaration when getting phased fir 2020-08-28 12:15:14 +03:00
Ilya Kirillov f76b5bbf1b FIR IDE: allow KtFirPackageScope to work without providers 2020-08-28 12:15:06 +03:00
Ilya Kirillov a156cca02a FIR: make class FirObjectImportedCallableScope to be name aware 2020-08-28 12:15:04 +03:00
Dmitriy Novozhilov 09ed0c3e82 [FIR-TEST] Update testdata 2020-08-28 10:59:54 +03:00
Dmitriy Novozhilov e7b5a88cbd [FIR] Remove dependency on :compiler:frontend from :compiler:fir:resolve 2020-08-28 10:59:54 +03:00
Dmitriy Novozhilov abeb42ca20 [FIR] Don't use ProjectExtensionDescriptor in FirExtensionRegistrar 2020-08-28 10:59:53 +03:00
Dmitriy Novozhilov f09e17a5ae [FIR] Remove unused import 2020-08-28 10:59:53 +03:00
Dmitriy Novozhilov e405a02e8e [FIR] Fix contract serialization 2020-08-28 10:59:53 +03:00
Dmitriy Novozhilov eaf8af919d [FIR] Use PersistentList instead of guava's ImmutableList in SupertypeResolution 2020-08-28 10:59:53 +03:00
Dmitriy Novozhilov 64766e125c Move common inference classes to :compiler:resolution.common 2020-08-28 10:59:53 +03:00
Dmitriy Novozhilov af0df35623 [NI] Get rid of FE 1.0 types in ConstraintInjector 2020-08-28 10:59:52 +03:00
Dmitriy Novozhilov ad039a28bd [NI] Get rid of left FE 1.0 types in NewConstraintSystemImpl 2020-08-28 10:59:52 +03:00
Dmitriy Novozhilov 6914aba5c2 [NI] Commonize detection of @OnlyInputTypes in NewConstraintSystemImpl 2020-08-28 10:59:52 +03:00
Dmitriy Novozhilov 64f0ee21c1 Get rid of FE 1.0 classes usage in ConstraintIncorporator 2020-08-28 10:59:52 +03:00
Dmitriy Novozhilov aae1681b76 [NI] Get rid of ResolvedAtom usage in ConstraintSystemCompletionContext 2020-08-28 10:59:51 +03:00
Dmitriy Novozhilov 970a2581a1 [NI] Extract PostponedArgumentsAnalyzerContext from PostponedArgumentsAnalyzer 2020-08-28 10:59:51 +03:00
Dmitriy Novozhilov b15f847943 [NI] Extract common parts from KotlinConstraintSystemCompleter 2020-08-28 10:59:51 +03:00
Dmitriy Novozhilov 12fbb93871 [NI] Extract FE 1.0 specific part from NewCommonSuperTypeCalculator 2020-08-28 10:59:51 +03:00
Dmitriy Novozhilov b21a0213df [NI] Get rid of FE 1.0 types in AbstractTypeApproximator 2020-08-28 10:59:51 +03:00
Dmitriy Novozhilov 527c5a771d [NI] Get rid of FE 1.0 types in AbstractTypeCheckerContextForConstraintSystem 2020-08-28 10:59:51 +03:00
Dmitriy Novozhilov 686c17a234 [NI] Rename NewConstraintSystem.diagnostics to errors 2020-08-28 10:59:50 +03:00
Dmitriy Novozhilov 59b2cb6393 [NI] Split KotlinCallDiagnostics and inference errors to different hierarchies 2020-08-28 10:59:50 +03:00
Dmitriy Novozhilov fae21d4db3 Introduce frontend independent constraint positions 2020-08-28 10:59:50 +03:00
Dmitriy Novozhilov be1033a4a7 [FIR] Implement ConeTypeContext.createTypeWithAlternativeForIntersectionResult 2020-08-28 10:59:50 +03:00
Dmitriy Novozhilov f247cc3165 [NI] Properly detecting suitability of candidate for builder inference
#KT-41430 Fixed
2020-08-28 10:34:18 +03:00
Simon Ogorodnik 7170a23f63 [FIR] Use coroutine intrinsics in tower resolver manager
To remove SafeContinuation overhead
2020-08-28 00:12:17 +03:00
Simon Ogorodnik 7cb5c0a6d8 [FIR] Cleanup hides members condition 2020-08-28 00:12:17 +03:00
Simon Ogorodnik bf2e17b133 [FIR] Extract invoke processing from TowerLevelHandler 2020-08-28 00:12:17 +03:00
Simon Ogorodnik 34f5cfbf96 [FIR] Fix integer approximation on safe calls 2020-08-28 00:12:17 +03:00
Simon Ogorodnik 2a4e1a0b99 [FIR] Clarify testData for invokes 2020-08-28 00:12:16 +03:00
Alexander Udalov 74c6d2b951 Do not generate non-standard compareTo as primitive comparison in all backends
Previous changes related to this in the old JVM backend were in
582b1c5e66 and
0482f7e9c5, but they did not affect the
`ProperIeee754Comparisons` mode which became the default in 1.4.0. As a
result, we had a regression here.

Since the `PRIMITIVE_NUMERIC_COMPARISON_INFO` slice is used in psi2ir to
determine how to generate the comparison, this fixes the regression both
in the old JVM backend, and in all IR backends.

 #KT-41426 Fixed
2020-08-27 19:00:11 +02:00