Commit Graph

87184 Commits

Author SHA1 Message Date
Svyatoslav Scherbina c9348b3512 Native: improve "could not build module" cinterop error message
Extract diagnostics from imported modules by instructing libclang to
serialize diagnostics to file. Then deserialize this file and use
first compilation errors in the error message.

^KT-35059 Fixed
2021-09-22 07:31:23 +00:00
Svyatoslav Scherbina 12f4cd5aa1 Native: add unit tests for modules support in Interop/Indexer 2021-09-22 07:31:22 +00:00
Svyatoslav Scherbina fb81ae0cd1 Native: fix deadlock in kotlinx.cinterop.typeOf impl for JVM
Don't use ConcurrentHashMap.computeIfAbsent for typeOf cache,
because the computation may call typeOf recursively for different type
(e.g. C enum var type computation calls typeOf for enum base integer type),
which might cause a deadlock in computeIfAbsent.
2021-09-22 07:31:22 +00:00
sebastian.sellmair a279f682bb [Commonizer] Add additional documentation to ClassOrTypeAliasTypeCommonizer
^KT-48288
2021-09-22 06:45:12 +00:00
sebastian.sellmair 6d17e4da57 [Commonizer] Implement disabled tests for ^KT-48288
^KT-48288
^KT-48850
2021-09-22 06:45:11 +00:00
sebastian.sellmair 104d2b347b [Commonizer] Minor: CirType: Use copyInterned over createInterned
^KT-48288
2021-09-22 06:45:11 +00:00
sebastian.sellmair 3b67bcbf4d [Commonizer] ClassOrTypeAliasTypeCommonizer: Remove faulty argument substitution
Underlying types from CirTypeAliasType do not require
parent argument replacement.

^KT-48288
2021-09-22 06:45:11 +00:00
sebastian.sellmair 7bf62ab159 [Commonizer] Implement tests for 'crossed' type aliases
^KT-48288
2021-09-22 06:45:10 +00:00
sebastian.sellmair 1fca19258d [Commonizer] ParameterizedTypesCommonizationTest: Remove unnecessary symbols
^KT-48288
2021-09-22 06:45:10 +00:00
sebastian.sellmair fa2577dda8 [Commonizer] Improve performance of deserialization
^KT-48288
2021-09-22 06:45:09 +00:00
sebastian.sellmair 16bf5f3df3 [Commonizer] Improve performance of ClassOrTypeAliasTypeCommonizer
Performance is improved by reducing calls to 'backwardsTypeDistance'

^KT-48288
2021-09-22 06:45:09 +00:00
sebastian.sellmair 64d2ba4029 [Commonizer] Improve performance of 'backwardsTypeDistance'
This commit also introduces common sealed interfaces to represent
classifiers and types coming form dependencies or 'sources'

^KT-48288
2021-09-22 06:45:09 +00:00
sebastian.sellmair fadb91fa35 [Commonizer] Rename CirCommonClassifierId to AssociatedClassifierIds
^KT-48288
2021-09-22 06:45:08 +00:00
sebastian.sellmair de1ae970d7 [Commonizer] ClassOrTypeAliasTypeCommonizer: Improve comments
^KT-48288
2021-09-22 06:45:08 +00:00
sebastian.sellmair 7485d2529b [Commonizer] Implement simple BackwardsTypeSubstitutionCommonizationTest
^KT-48288
2021-09-22 06:45:07 +00:00
sebastian.sellmair 38c7337b19 [Commonizer] Add tests to ParameterizedTypesCommonizationTest
^KT-48288
2021-09-22 06:45:07 +00:00
sebastian.sellmair e1bc6c54d7 [Commonizer] Simplify CirClassOrTypeAliasType.withParentArguments()
^KT-48288
2021-09-22 06:45:07 +00:00
sebastian.sellmair 459e01a729 [Commonizer] CirConversions: Ensure consistent function names
^KT-48288
2021-09-22 06:45:06 +00:00
sebastian.sellmair 892512cb67 [Commonizer] Remove unused/old typeAliasUtils
^KT-48288
2021-09-22 06:45:06 +00:00
sebastian.sellmair ba997905d9 [Commonizer] Remove CirClassType.visibility
^KT-48288
2021-09-22 06:45:05 +00:00
sebastian.sellmair da1eb5d96e [Commonizer] Implement CirTypeDistance.penalty
^KT-48288
2021-09-22 06:45:05 +00:00
sebastian.sellmair d0cd7c81ea [Commonizer] Minor: Change signature of CirConversions functions
^KT-48288
2021-09-22 06:45:05 +00:00
sebastian.sellmair 75d7c830e7 [Commonizer] Minor: Improve naming of methods and types
^KT-48288
2021-09-22 06:45:04 +00:00
sebastian.sellmair 808ea11072 [Commonizer] Improve access performance for TargetDependent
^KT-48288
2021-09-22 06:45:04 +00:00
sebastian.sellmair cf0f061db5 [Commonizer] Implement two phased re-approximation
^KT-48288
2021-09-22 06:45:03 +00:00
sebastian.sellmair b68f14960a [Commonizer] Implement first ReApproximationCirNodeTransformer
^KT-48288
2021-09-22 06:45:03 +00:00
sebastian.sellmair d2627f0a76 [Commonizer] CirCommonClassifierIdResolver: Implement caching as composition
^KT-48288
2021-09-22 06:45:03 +00:00
sebastian.sellmair 97befd0520 [Commonizer] Consider negative type distances 'worse'
^KT-48288
2021-09-22 06:45:02 +00:00
sebastian.sellmair 24680144da [Commonizer] CirTypeDistance: Ensure consistent function signatures
^KT-48288
2021-09-22 06:45:02 +00:00
sebastian.sellmair 24ac122e88 [Commonizer] CirTypeDistance: Use property for 'unreachable'
^KT-48288
2021-09-22 06:45:01 +00:00
sebastian.sellmair 31445d1471 [Commonizer] ClassOrTypeAliasTypeCommonizer: Use typeDistance and type substitution
^KT-48288
2021-09-22 06:45:01 +00:00
sebastian.sellmair 4a6366ed9b [Commonizer] TargetDependent: Implement inline map functions 2021-09-22 06:45:01 +00:00
sebastian.sellmair b424800714 [Commonizer] Implement additional 'ParameterizedTypesCommonizationTest'
^KT-48288
2021-09-22 06:45:00 +00:00
sebastian.sellmair 4349f98954 [Commonizer] Fix CirConversions and substitute arguments
CirConversions did not cover some potential convertible types.
ClassOrTypeAliasTypeCommonizer did not apply type substitution
for parameterized types coming from a dependency

^KT-48288
2021-09-22 06:45:00 +00:00
sebastian.sellmair e2343094ec [Commonizer] Adapt CirUnderscoredTypeAliasSubstitutorTest
^KT-48288
2021-09-22 06:44:59 +00:00
sebastian.sellmair 9d2553bd18 [Commonizer] Adapt TypeCommonizerTest
^KT-48288
2021-09-22 06:44:59 +00:00
sebastian.sellmair 36a5b53398 [Commonizer] AbstractCommonizerTest.doTestFailure: Support single invocation commonizers
^KT-48288
2021-09-22 06:44:58 +00:00
sebastian.sellmair 4e6ad03df6 [Commonizer] Fix AbstractListCommonizer and adapt ValueParameterListCommonizerTest
^KT-48288
2021-09-22 06:44:58 +00:00
sebastian.sellmair cdd917bd0b [Commonizer] Adapt ExtensionReceiverCommonizerTest
^KT-48288
2021-09-22 06:44:58 +00:00
sebastian.sellmair 35a29acdc7 [Commonizer] Always use parent arguments for type substitution 2021-09-22 06:44:57 +00:00
sebastian.sellmair 5c7ac614ce [Commonizer] Remove old implementations for type commonization
Removed AliasedTypeSubstitutor: Covered by ClassOrTypeAliasTypeCommonizer
Removed ClassTypeCommonizer: Covered by ClassOrTypeAliasTypeCommonizer
Removed type alias substitution transformers: Covered by CirCommonClassifierId

^KT-48288
2021-09-22 06:44:57 +00:00
sebastian.sellmair bfa433fa06 [Commonizer] Split type substitution into forward and backwards
^KT-48288
2021-09-22 06:44:56 +00:00
sebastian.sellmair 698b3fce9e [Commonizer] ClassOrTypeAliasTypeCommonizer: Support 'enableOptimisticNumberTypeCommonization'
^KT-48288
2021-09-22 06:44:56 +00:00
sebastian.sellmair 595cab2aaf [Commonizer] ClassOrTypeAliasTypeCommonizer: Implement proper type argument substitution
^KT-47574 Verification Pending
2021-09-22 06:44:56 +00:00
sebastian.sellmair c1f118e502 [Commonizer] Include dependencies in CirCommonClassifierId
^KT-48288
2021-09-22 06:44:55 +00:00
sebastian.sellmair ef6f84b151 [Commonizer] Implement ClassOrTypeAliasTypeCommonizer with type substitution
^KT-48288
2021-09-22 06:44:55 +00:00
sebastian.sellmair 97e37243c6 [Commonizer] Move type commonization to single invocation commonizer
^KT-48288
2021-09-22 06:44:54 +00:00
sebastian.sellmair 3ee87f1635 [Commonizer] Use typealias invariant Approximation Keys
^KT-48288
2021-09-22 06:44:54 +00:00
sebastian.sellmair 763ddcddf4 [Commonizer] Implement CirCommonClassifierId & CirCommonClassifierIdResolver
This common representation of a classifier id can later be used
to render typealias invariant approximation keys.

^KT-48288
2021-09-22 06:44:54 +00:00
Dmitry Gridin a0d36d7e29 [core] annotation loader: pull up isRepeatableWithImplicitContainer to AbstractBinaryClassAnnotationAndConstantLoader to reuse from plugin
^KTIJ-19676
2021-09-22 04:54:28 +00:00