Граф коммитов

778 Коммитов

Автор SHA1 Сообщение Дата
Chris Smowton 8c32758ae5
Merge pull request #9829 from smowton/smowton/fix/kotlin-underscore-parameter-names
Kotlin: Don't extract a name for a '_' parameter
2022-08-10 12:28:26 +01:00
Ian Lynagh b5d6258e54
Merge pull request #9809 from igfoo/igfoo/fakeLabel
Kotlin: Remove the last uses of fakeLabel
2022-08-08 11:54:53 +01:00
Chris Smowton 5086841b46 Kotlin: implement super-method calls
If we only look at the dispatch receiver, these show up like `this` references rather than `super` references, preventing flow through super-calls. The super-interface case requires properly noting that interface methods with a body get a `default` modifier in order to avoid QL discarding the method as a possible callee.
2022-07-26 17:03:46 +01:00
Chris Smowton 3f6925e7be
Merge pull request #9875 from smowton/smowton/fix/charat-naming
Kotlin: Special-case String.charAt naming
2022-07-25 16:10:13 +01:00
Chris Smowton 9593ceeda5 Kotlin: Special-case String.charAt naming
In the Kotlin universe this is called `get` so that Kotlin programmers can use the `[]` operator on `String`s.
2022-07-21 09:17:08 +01:00
Chris Smowton 0a351b73cb Underscore query: tolerate synthetic functions 2022-07-21 09:15:27 +01:00
Chris Smowton 1cbe26a54f Kotlin: fix for-loop iterators over primitive or wildcard types
Array<*> can't be queried for an argument type, and IntArray doesn't have an argument at all; both were previously causing the extractor to fail to extract the whole file due to throwing an exception.
2022-07-21 09:13:55 +01:00
Chris Smowton 41ca791966 Implement is-underscore-parameter for old versions of Kotlin 2022-07-15 12:36:37 +01:00
Chris Smowton d4b0163c4c Kotlin: Don't extract a name for a '_' parameter
I can't reproduce the exact circumstances, but these sometimes get "<anonymous parameter X>" names and sometimes get "$noName_X" names. Whichever way, avoiding extracting a synthetic name seems safest; anyone finding the .class file and not reading the metadata indicating it came from a `_` will extract the binary name selected, or else QL will
invent a name.
2022-07-14 16:36:26 +01:00
Ian Lynagh 83edb3b5e9 Kotlin: Remove the last uses of fakeLabel 2022-07-12 17:43:50 +01:00
Ian Lynagh d0bf424b19
Merge pull request #9806 from igfoo/igfoo/useType
Kotlin: Extract an ErrorType if we fail to correctly extract a type
2022-07-12 13:45:04 +01:00
Ian Lynagh 2edeeaac0e
Merge pull request #9801 from igfoo/igfoo/psi
Kotlin: We can't extract comments for < 1.5.20
2022-07-12 11:01:30 +01:00
Ian Lynagh 960d1dba8a Kotlin: We can't etract comments for < 1.5.20
We were making our own PsiSourceManager, but that didn't know about any
IrFile -> PsiFile mappings.
2022-07-11 19:36:43 +01:00
Ian Lynagh 4c68624b00 Kotlin: Pass a FileLogger to Psi2Ir 2022-07-11 19:17:21 +01:00
Ian Lynagh b9072a3594 Kotlin: Share a Psi2Ir instance 2022-07-11 18:57:43 +01:00
Ian Lynagh 1730ec22d9 Kotlin: Extract an ErrorType if we fail to correctly extract a type 2022-07-01 16:33:43 +01:00
Chris Smowton b499ba5aa8 Kotlin: don't extract private setters of external classes
Previously these would get extracted unlike other private methods even if the class was a standard library or other external class. This could cause inconsistencies because if we also compiled the class from source we could end up deciding different names for the property's setter: setXyz$private when seen from source, and setXyz without a
suffix when seen as an external .class file. Avoiding extracting these functions from the external perspective both restores consistency with other kinds of method and avoids these consistency problems.
2022-07-01 15:44:17 +01:00
Chris Smowton 4c6a9772af
Merge pull request #9768 from smowton/smowton/fix/internal-method-name-mangling
Kotlin: Mangle names of internal functions to match JVM symbols
2022-07-01 14:33:32 +01:00
Chris Smowton df78b7e54b
Merge pull request #9755 from smowton/smowton/feature/implement-jvmstatic-annotation
Kotlin: support JvmStatic annotation
2022-07-01 10:14:08 +01:00
Chris Smowton dd93062101 Kotlin: Mangle names of internal functions to match JVM symbols 2022-06-30 21:56:25 +01:00
Ian Lynagh 144c0d63b1
Merge pull request #9766 from igfoo/igfoo/extension
Kotlin: Fix a label
2022-06-30 21:16:26 +01:00
Ian Lynagh b373af47d1 Kotlin: Fix a label
We want the .javaResult.id of a TypeResults.
2022-06-30 16:59:18 +01:00
Ian Lynagh 83fd9c3b3e
Merge pull request #9763 from igfoo/igfoo/foreach
Kotlin: Replace a map call with forEach
2022-06-30 15:02:57 +01:00
Ian Lynagh 0e56e50d18 Kotlin: Replace a map call with forEach 2022-06-30 13:50:22 +01:00
Chris Smowton 98761041f1 Prevent labelling proxies of default getters and setters as themselves default getters and setters 2022-06-30 13:11:00 +01:00
Chris Smowton bf581b971c Rename willExtract properties to shouldExtract 2022-06-30 12:51:09 +01:00
Chris Smowton 5a47e1dd95 Annotate generated static proxy methods as compiler-generated 2022-06-30 12:48:11 +01:00
Chris Smowton bfdb21d551 Kotlin: support JvmStatic annotation
This makes non-companion object methods into static methods, and for companion objects introduces static proxy methods that call the companion instance method.

Note this doesn't quite implement what kotlinc does, since it will also eliminate getters and setters by promoting an object field into a static field, but our translation is simpler and only differs in private members' details.
2022-06-30 12:42:38 +01:00
Chris Smowton 8e5bbea9f9 Use map...firstOrNull not firstNotNullOfOrNull
The latter was introduced in Kotlin 1.5, so we can't use it in all supported versions.
2022-06-30 10:15:44 +01:00
Chris Smowton 2d98eb591e Kotlin: note that raw inner classes nest within a raw outer.
Previously the Java extractor did this but the Kotlin extractor nested them within an unbound outer type.
2022-06-30 10:15:44 +01:00
Ian Lynagh 3026456a39 Kotlin: Make more methods private 2022-06-28 14:38:13 +01:00
Ian Lynagh 780f5abc67
Merge pull request #9724 from igfoo/igfoo/private
Kotlin: Make more methods private
2022-06-28 10:21:55 +01:00
Ian Lynagh b6790ef735
Merge pull request #9725 from igfoo/igfoo/inline
Kotlin: Extract inlineability of functions
2022-06-28 10:21:30 +01:00
Ian Lynagh 06060954ec Kotlin: Extract inlineability of functions 2022-06-27 19:25:56 +01:00
Ian Lynagh 4e4b34290b Kotlin: Make more methods private 2022-06-27 18:20:33 +01:00
Ian Lynagh 7430a413ad Kotlin: Mark DELEGATED_PROPERTY_ACCESSORs as compiler-generated 2022-06-27 17:57:40 +01:00
Ian Lynagh 861a368734
Merge pull request #9703 from igfoo/igfoo/generated
Kotlin: Record more kinds of elements as compiler-generated
2022-06-24 19:46:56 +01:00
Ian Lynagh 0ddd5bb162
Merge pull request #9709 from igfoo/igfoo/isLocalFunction
Kotlin: Let useFunction worry about isLocalFunction for us
2022-06-24 19:22:43 +01:00
Ian Lynagh 4791aaae52 Kotlin: Use an enum for compiler-generated-kinds
For now this is in KotlinFileExtractor, but we can move it out later if
we have generated things elsewhere.
2022-06-24 15:19:50 +01:00
Ian Lynagh c0b6d1d093 Kotlin: Let useFunction worry about isLocalFunction for us 2022-06-24 14:24:02 +01:00
Ian Lynagh 46446f9dfa Kotlin: Move the isLocalFunction check deeper into useFunction 2022-06-24 14:22:45 +01:00
Ian Lynagh 20817a54da Kotlin: Mark enum class special members as cmopiler-generated 2022-06-24 14:00:47 +01:00
Ian Lynagh 50eeb47244 Kotlin: Mark <clinit> as compiler-generated 2022-06-24 14:00:47 +01:00
Ian Lynagh c06eb09100 Kotlin: Record that DEFAULT_PROPERTY_ACCESSOR are compiler-generated 2022-06-24 14:00:47 +01:00
Ian Lynagh 5fc294d49e Kotlin: Record that generated data class members are compiler-generated 2022-06-24 14:00:47 +01:00
Tamás Vajk 381bcf7dad
Merge pull request #9153 from tamasvajk/kotlin-simplify-loop-breaks-1
Kotlin: Unify loop `break`/`continue` statement handling between java and kotlin
2022-06-24 14:45:57 +02:00
Chris Smowton d0e521ef4a
Merge pull request #9681 from smowton/smowton/fix/reintroduce-obinit
Kotlin: reintroduce obinit when we have multiple secondary constructors and no primary
2022-06-24 10:25:24 +01:00
Chris Smowton fcc8691394
Merge pull request #9625 from smowton/smowton/test/kotlin-1-7-support
Switch to using Kotlin 1.7 by default
2022-06-24 10:24:54 +01:00
Ian Lynagh ae16a874c8
Merge pull request #9694 from igfoo/igfoo/useFunction
Kotlin: Some useFunction simplification
2022-06-24 09:31:14 +01:00
Ian Lynagh eb1b3f801d
Merge pull request #9689 from igfoo/igfoo/makeprivate
Kotlin: Make some more methods private
2022-06-23 21:28:07 +01:00