Denis.Zharkov
7e6abffb62
FIR: Fix incorrectly serialized type
...
See the test added: there's a non-denotable T!! type inside flexible type
that wasn't handled before.
ConeKotlinType::contains handles flexible types content and some other cases
Also, it has better asymptotics
2021-01-29 10:50:23 +03:00
Ilya Kirillov
1b68f35f7c
FIR: create new ConeTypeCheckerContext on every supertypes calculation
...
It can be recursively used while calculating supertypes via IDE lazy resolve,
which is forbidden
2021-01-28 13:52:04 +01:00
Ilya Kirillov
c53d6ed5d2
FIR: remove SymbolProviderCache as it is unused now
2021-01-27 21:26:59 +01:00
Ilya Kirillov
6a83b8b5a4
FIR: migrate FirDependenciesSymbolProviderImpl to FirCachesFactory
2021-01-27 21:26:59 +01:00
Ilya Kirillov
7284acc9f9
FIR IDE: use FirCaches in JavaSymbolProvider
2021-01-27 21:26:58 +01:00
Simon Ogorodnik
e22711d17f
[FIR] Reuse empty scopes
2021-01-26 18:33:57 +03:00
Simon Ogorodnik
67267518f0
[FIR] Optimize tower group comparisons
...
Fix incorrect used bits calculation
bits debug
Disable tower group debugging
Extend comment
Proper to binary string
2021-01-26 18:33:57 +03:00
Simon Ogorodnik
4530cdefe5
[FIR] Implement proper equals/hashCode for TowerGroupKind.WithDepth
2021-01-26 18:33:57 +03:00
Victor Petukhov
f06a5321a6
Approximate definitely not-null types for type parameter's types if they are already not-null (has not-null upper bounds)
...
^KT-44440 Fixed
2021-01-25 14:17:58 +03:00
Mikhail Glukhikh
4cd6266bce
FIR: fix suspend type serialization
2021-01-23 10:56:40 +03:00
Mikhail Glukhikh
06ee768c6a
FIR: in case of smart cast, use original type for FirThisRcvrExpression
...
Before this commit, we used type after smart cast both for original
FirThisReceiverExpression and for wrapping FirExpressionWithSmartCast.
However, this makes FIR2IR implicit cast generator work incorrectly
(it decides not to insert implicit cast because original type is the same).
After this commit, expressions have different types and implicit cast
generator works properly.
2021-01-23 10:56:34 +03:00
Denis.Zharkov
b0b7f39c75
FIR: Do not use return statement for type of a block expression
...
Type of a block is a kind of irrelevant for lambdas: their type is much
more complicated and defined via FirDataFlowAnalyzer#returnExpressionsOfAnonymousFunction
at at FirCallCompleter.LambdaAnalyzerImpl#analyzeAndGetLambdaReturnArguments
2021-01-21 18:53:03 +03:00
Denis.Zharkov
4dc2653736
FIR: Do not complete finally parts of try-finally
...
It's been processed via Body transformer explicitly
2021-01-21 18:53:03 +03:00
Denis.Zharkov
7df4f67f7c
FIR: Minor. Drop unused parameter
2021-01-21 18:53:03 +03:00
Denis.Zharkov
9493e68584
FIR: Do not run completion for lambda's explicit return too early
...
See the test case
Completion for synthetic call: x ?: return@myRun materialize()
makes `materialize()` while it's obviously too early for that
2021-01-21 18:53:03 +03:00
Denis.Zharkov
5afebb4e78
FIR: Transform synthetic calls children even without incomplete candidate
...
It might be necessary for cases like
run @l1{
run {
if (...) return@l1 1
}
}
"if" is a synthetic call, but without candidate since there's just one branch
But return@l1 1 is incomplete because it's resolved in dependent context
and "1" is hang incomplete integer literal
2021-01-21 18:53:03 +03:00
Denis.Zharkov
5f0d00a83f
FIR: Use proper tower data contexts for postponed callable references
...
E.g., it should contain local scopes of containing lambdas
2021-01-21 18:53:03 +03:00
Denis.Zharkov
ad30c6c380
FIR: Fix callable references resolution when they're being returned from lambdas
2021-01-21 18:53:03 +03:00
Denis.Zharkov
0e368cc237
FIR: Analyze return statements for implicit lambda with independent context
2021-01-21 18:53:02 +03:00
Denis.Zharkov
5e83e10a72
FIR: Add callable references nodes to CFG
...
Otherwise, they are not being considered as return expressions from lambdas
2021-01-21 18:53:02 +03:00
Igor Yakovlev
2e4daee1d4
[FIR] Fix invalid diagnostic fir node sites and improved invalid type parameters count diagnostic report
2021-01-21 15:20:30 +03:00
Simon Ogorodnik
b7d3469819
[FIR] Remove transform/accept from FirResolvedTypeRef.delegateTypeRef
2021-01-21 15:20:30 +03:00
Igor Yakovlev
243f85a4d6
[FIR IDE] Add base support for FIR incomplete types resolve
2021-01-21 15:20:30 +03:00
Dmitriy Novozhilov
14108011ee
[FIR] Fix inferring arguments of bare types in different situations
...
- argument type is flexible
- supertype has flexible type argument
- type of expression is more specific than bare type
2021-01-21 12:02:01 +03:00
Ilya Kirillov
11a3126c8c
FIR: copy class supertypes list on iterating while calculating supertypes
...
This list is backed by mutable list and during iterating on it
we can resolve supertypes of that class via IDE light classes
as IJ Java resolve may resolve a lot of stuff by fir light classes
This causes ConcurrentModificationException
2021-01-19 14:34:57 +01:00
pyos
29f95c7df2
FIR: improve inference of implicit type arguments in casts
...
Type parameters do not necessarily match one-to-one, or preserve order.
2021-01-18 18:01:03 +03:00
Mikhail Glukhikh
9a5791ad6d
FIR: use correct context for enum entry resolve
...
Now the same resolve context is used for enum entries and
for constructors.
2021-01-18 08:34:46 +03:00
Mikhail Glukhikh
f85fc47383
FIR: introduce separate companion object resolve context
...
Before this commit, during the resolve of companion objects we used
the same context than for any nested class. However, during companion
object resolve we should not have companion object receiver itself
accessible in any case (in particular, it should not be accessible
in constructor). So in this commit we introduced separate context
for this purpose.
2021-01-18 08:32:06 +03:00
Mikhail Glukhikh
f282c3e547
Cleanup: FirTowerResolveTask
2021-01-18 08:28:49 +03:00
Mikhail Glukhikh
9f06c1a500
FIR cleanup: runResolverForDelegatingConstructor
2021-01-18 08:28:37 +03:00
Ilya Kirillov
16cd2f08fe
FIR: preserve delegatedTypeRef when transforming FirFunctionTypeRef
2021-01-15 17:23:11 +01:00
Ilya Kirillov
95eb701f75
FIR: introduce symbols for intersection override
2021-01-15 17:23:08 +01:00
Ilya Kirillov
e060778528
FIR IDE: implement assignment statement references
2021-01-15 17:23:07 +01:00
Ilya Kirillov
191a1ee242
FIR: add fake source fir element to it parameter
2021-01-15 17:23:05 +01:00
Ilya Kirillov
008260451c
FIR: make FirNestedClassifierScopeWithSubstitution to be name aware
2021-01-15 17:23:03 +01:00
Ilya Kirillov
a52674f181
FIR: use more meaningful error messages
2021-01-15 17:23:00 +01:00
Stanislav Erokhin
d24331955e
Rename FirConstKind to ConstantValueKind and move it to compiler.common
2021-01-14 12:12:25 +01:00
Jinseong Jeon
d53354057a
FIR: build functional type for SAM with receiver properly
2021-01-12 10:33:55 +03:00
pyos
f618763250
FIR: implement -Xfriend-paths
2021-01-12 10:33:45 +03:00
Mikhail Glukhikh
0c0dbd6245
[FIR] Perform more accurate pre-check of candidate receiver type
2021-01-11 17:57:04 +03:00
Mikhail Glukhikh
4e4293b609
[FIR] Introduce separate getTopLevelFunction/PropertySymbols
2021-01-11 17:52:51 +03:00
Mikhail Glukhikh
fd99f2b2cf
FirDefaultStarImportingScope: improve measurements
2021-01-11 17:52:05 +03:00
Mikhail Glukhikh
33037fd885
FirAbstractImportingScope: minor simplification
2021-01-11 17:52:00 +03:00
Mikhail Glukhikh
a6534c4653
[FIR] Fix completion of synthetic call arguments
2020-12-29 17:48:15 +03:00
Mikhail Glukhikh
74077bf6d2
[FIR] Don't attempt to process interface constructors
2020-12-29 12:18:03 +03:00
Mikhail Glukhikh
0d40fde713
FIR synthetics: make setter subtype check more precise #KT-43347 Fixed
2020-12-25 14:07:28 +03:00
Ilya Kirillov
9a86d2e10c
FIR IDE: do not mark declaration with some lazy resolve phase if only some children are resolved to that phase
...
Otherwise, we will not be able to resolve parent one
2020-12-23 17:16:19 +01:00
Ilya Kirillov
6ad396f417
FIR: use transformer creator from existing return type calculator when creating a new one
2020-12-23 17:16:16 +01:00
Ilya Kirillov
a30d9e0ed3
FIR: add fake source fir element to it parameter symbol
2020-12-23 17:15:56 +01:00
Jinseong Jeon
78fa8814c4
FIR: unwrap f/overrides when determining mutability of property reference
...
#KT-44010 Fixed
2020-12-22 12:04:56 +03:00