Denis Zharkov
e1e149a062
FIR: Support coercion-to-unit semantics for callable references
2020-05-18 11:17:45 +03:00
Denis Zharkov
5bbb459993
FIR: Refactor FirTowerResolverSession.enumerateTowerLevels
...
- Leave only onScope callback as onLocalScope/onNonLocalScope are the same in most cases
- Pass towerGroup to callbacks as they are the same all the time
2020-05-15 16:04:44 +03:00
Denis Zharkov
475671563b
FIR: Get rid of obsolete local scopes optimizations
...
They are already filtered out (see FirTowerResolverSession#localScopes initializer)
2020-05-15 16:04:44 +03:00
Denis Zharkov
e7a67c7a16
FIR: Extract StandardClassIds.KClass
2020-05-15 16:04:44 +03:00
Denis Zharkov
b691b13d8e
FIR: Add separate local scopes for blocks
2020-05-15 16:04:44 +03:00
Denis Zharkov
b084399b58
FIR: Cleanup local scope tracking
2020-05-15 16:04:44 +03:00
Denis Zharkov
e7e84b18cd
FIR: Do not retrieve symbol for type construction
2020-05-15 16:04:44 +03:00
Denis Zharkov
25bee057e0
FIR: Do not retrieve file for callable until it's needed
2020-05-15 16:04:44 +03:00
Denis Zharkov
295f7d7500
FIR: Do not add trivial constraints
2020-05-15 16:04:44 +03:00
Denis Zharkov
27aa0040be
FIR: Cache supetypes scopes when building callable scopes for qualifier
2020-05-15 16:04:44 +03:00
Denis Zharkov
774c5b55c3
FIR: Avoid creating empty nested classes scopes
2020-05-15 16:04:44 +03:00
Denis Zharkov
cd149957ee
FIR: Filter out irrelevant local scopes during resolution
2020-05-15 16:04:44 +03:00
Denis Zharkov
beb9a72e9d
FIR: Optimize constructor of FirTowerResolverSession
2020-05-15 16:04:44 +03:00
Denis Zharkov
2e91bf7e50
FIR: Minor. Clarify name for addNonLocalTowerDataElements
2020-05-15 16:04:44 +03:00
Denis Zharkov
288db4fb1c
Revert "FIR: make both ImplicitReceiverStack.get implementations consistent"
...
This reverts commit b058ca635c .
Change is not necessary anymore since there are no kinds for implicit
receivers
2020-05-15 16:04:44 +03:00
Denis Zharkov
f64c12efac
FIR: Drop MutableImplicitReceiverStack and its implementation
2020-05-15 16:04:44 +03:00
Denis Zharkov
35e3942afb
FIR: Drop unused ImplicitDispatchReceiverKind
2020-05-15 16:04:44 +03:00
Denis Zharkov
0ef1628751
FIR: Refactor scope structure on body resolve stage
...
Before this change:
- Local scopes, implicit receivers and type parameter scopes were separated.
- Static scopes for super classes were not present as a concept.
Instead of them, all-inherited-static for the current class has been used.
- During call resolution we were processing implicit receivers first and then non-local scopes,
while we should process them in the order of their syntax appearance from the closest
to the most distant
All these facts affect semantics (see test data changed here and the following commits)
The architecture changes are the following:
- FirTowerDataElement introduced as tower level that is used in resolution
(effectively it's a union type between scope and implicit receiver + isLocal flag)
- FirTowerDataContext introduced for sake of encapsulation of tower data elements' list
(it also has redundant implicitReceiverStack and localScopes)
- For each regular class we collect relevant tower data elements and add them to the current context
- Also, we preserve a special tower data context for static entities of the class
(it doesn't have class' dispatch receiver and generic parameters)
2020-05-15 16:04:44 +03:00
Denis Zharkov
5268802d5d
FIR: Minor. Move "storeFunction" call to transformSimpleFunction
...
It's only neede there and also scope structure will be cleaned up after transformFunctionWithGivenSignature
in the following commits
2020-05-15 16:04:44 +03:00
Denis Zharkov
3d6eedc962
FIR: Do not store nested local classes to local scopes
2020-05-15 16:04:44 +03:00
Denis Zharkov
07be2ae5c7
FIR: Use containers structure in FirContractResolveTransformer
...
transformDeclarationContent call remembers the container
2020-05-15 16:04:44 +03:00
Denis Zharkov
a67e9966b8
FIR: Adapt DataFlowAnalyzer to PersistentReceiverStackImpl
...
It will be used as main implementation in further commits
2020-05-15 16:04:44 +03:00
Denis Zharkov
687a58843f
FIR: Rewrite visibility checking
...
Unbound it from implicit receiver stack as it only needs scope structure/declaration nestedness
Semantics for protected has been changed in a way it works in old FE
NB: We should report additional diagnostic in case of CallCompanionProtectedNonStatic.fir.kt
(see KT-38814)
2020-05-15 16:04:44 +03:00
Denis Zharkov
825cdd3841
FIR: Move PersistentImplicitReceiverStack to resolve module
2020-05-15 16:04:44 +03:00
Denis Zharkov
e8232fe471
FIR: Remove unused TowerGroupKind.Static
2020-05-15 16:04:44 +03:00
Denis Zharkov
56c793ffc6
FIR: Minor. Extract FirDeclarationsResolveTransformer::doTransformRegularClass
...
It's will be useful in the following commits
2020-05-15 16:04:44 +03:00
Denis Zharkov
7489b9f636
FIR: Minor. Inline processMembersForExplicitReceiver
2020-05-15 16:04:44 +03:00
Denis Zharkov
fee639258c
FIR: Simplify file imports scope tracking
2020-05-15 16:04:44 +03:00
Denis Zharkov
8a51bb7810
FIR: Minor. Unbound FirTowerResolverSession from FirLocalScope
2020-05-15 16:04:44 +03:00
Denis Zharkov
8363671cab
FIR: Inline constructor parameter at FirTowerResolverSession
2020-05-15 16:04:44 +03:00
Jinseong Jeon
615636ed55
FIR2IR: apply SAM conversion to arguments of functional type.
2020-05-15 15:08:43 +03:00
Jinseong Jeon
89a6ecd77d
[FIR] Update argument mapping while transforming integer operator.
2020-05-14 13:42:07 +03:00
Juan Chen
858731cac8
[FIR] add support for varargs in delegated constructor calls
...
Also add support for spread operators as named arguments.
2020-05-14 13:42:07 +03:00
simon.ogorodnik
86683e94fc
[FIR] Fix cfg crash with multiple postponed arguments
2020-05-13 19:20:02 +03: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
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
f48ff2679e
[FIR] Branch delegating constructor call resolve by isInner from start
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
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
4eb9eb0537
[FIR] Rename FirExtensionPoint to FirExtension
...
Also rename `FirExtensionPointService` to `FirExtensionsService`
2020-05-08 15:10:02 +03:00
Dmitriy Novozhilov
78b8a7b388
[FIR] Store extensions by plugin key
2020-05-08 15:10:01 +03:00
Dmitriy Novozhilov
fac57344a3
[FIR] Split plugin annotations for two groups. Introduce modes for meta annotations
2020-05-08 15:10:01 +03:00
Dmitriy Novozhilov
343928b97e
[FIR] Add proper extension key to FirExtensionPoint
2020-05-08 15:10:00 +03:00
Dmitriy Novozhilov
941e43a226
[FIR] Fix collecting annotations with meta annotations
2020-05-08 15:10:00 +03:00
Dmitriy Novozhilov
b52452ef84
[FIR] Don't resolve annotation to error types on annotation phase
2020-05-08 15:10:00 +03:00
Dmitriy Novozhilov
728e0604ac
[FIR] Add prototype of first generation phase
2020-05-08 15:09:59 +03:00