Try substituting TypeAlias types that start with `__` in favour
of TypeAlias without the underscored prefix
^KT-48287 Verification Pending
^KT-48286 Verification Pending
CirProvided.ExportedForwardDeclarationClass will now correctly
report artificial superclasses.
The InlineTypeAliasCirNodeTransformer does not need to know anything
about artificial supertypes anymore. When inlining any
type alias, it is enough to resolve the type-alias's expansions
supertypes.
^KT-47430
This will make follow-up commits easier:
forward declarations are closer to dependencies than being part
of the library. They will be used in the module, bot not
directly provided.
This commit also enables tracking of provided dependency classifiers
in the CirTreeRoot and CirRootNode
^KT-47430
This commit still has some left-over todos that shall be done
in a separate commit.
TODOs:
- CirClassifierIndex is calculated once too often
- Reconsider position of classifierIndices in 'CirKnownClassifiers'
- Add documentation/description to complicated 'ClassSuperTypeCommonizer'
- Add documentation/description to CirSupertypesResolver
^KT-47430 Verification Pending
This implementation runs as regular part of the commonization.
Previous implementation inside the CommonizationVisitor was fully
replaced by it.
As a side effect: CirClass.supertypes was now marked immutable.
^KT-47430 In Progress
When inlining any TypeAlias pointing towards forward declarations,
the inlined class will respect implicit supertypes.
This logic is analog to
KlibResolvedModuleDescriptorsFactoryImpl.createForwardDeclarationsModule
^KT-47430 In Progress
^KT-47775 Verification Pending
This implementation will be lenient toward the common
*Test.dependsOn(*Main) mistake.
^KT-47053 Verification Pending
Support source sets that do not have a dedicated
shared native compilation. Also support additional visible source sets
coming from associate compilations.
Seperate checker for platforms that do not support this language feature yet
Synthetic implementations of annotations are generated on-demand with proper
equals, hashCode, and annotationType methods
#KT-47699 Fixed
This has the advantage, that the substitution only has to run on
functions or properties that are 'incomplete' (missing at least
one other target declaration)
^KT-47433 Verification Pending
This will substitute non-commonizable classifiers with known
type-aliases (which might be commonizable).
A simple example depending on this substitution comes from posix:
Most function and properties use the `FILE` typealias which
is available across all platforms.
Some linux platforms use `__IO_FILE` in their signature, which
is just linux specific. This type substitution will figure out, that
this type can be substituted with `FILE`.
^KT-47433 Verification Pending
This marker interface is not necessary anymore, since no new actuals
will be generated by the Commonizer. It was used to filter declarations
during the serializ
Some of IDEA services (like in `com.intellij/execution`) was copied,
because they are used in tests but jars with them compiled with
jdk 11 and we run our tests on jdk 8, so their bytecode can not
be read
^KT-47574 The fix done here supports only one level of substituting
underlying type-arguments.
HierarchicalTypeAliasCommonizationTest.`KT-47574 - test long typealias chain`
will assert proper behaviour for nested chains.
This drastically improves performance for now, since the previous
Adapter implementation was at least O(n^2). While the Adapter
implementation could have been reduced to O(n), the Signature of
StatelessCommonizer was misleading.
StatelessCommonizer will be introduced back later when other
Commonizer implementations are ready to be converted to a new
Signature.