Chris Smowton
d9744c81b7
Merge pull request #11017 from smowton/smowton/fix/kotlin-wildcard-suppression-annotation
...
Kotlin: fix wildcard suppression where the annotation applies to a parent type/argument.
2022-10-28 18:33:07 +01:00
Chris Smowton
d6e2f5f4a8
Use ?.not() to negate a nullable boolean
2022-10-28 16:13:55 +01:00
Chris Smowton
1e1c9f639c
Avoid Kotlin 1.5+ function firstNotNullOfOrNull
2022-10-28 16:13:55 +01:00
Chris Smowton
24f87ac963
Kotlin: fix wildcard suppression where the annotation applies to a parent type/argument.
...
In the process I also fix the missed case where suppression can be switched off using a parameterized annotation.
2022-10-28 16:13:55 +01:00
Tamas Vajk
803a97df7f
Kotlin: Resugar for loops with tuples as loop variables
2022-10-28 14:55:50 +02:00
Tamas Vajk
841340b266
Kotlin: Resugar for loops
2022-10-28 14:55:50 +02:00
Chris Smowton
366410ee9e
Fix incorrect parameter ordering
2022-10-28 12:58:23 +01:00
Chris Smowton
45a4cd89a6
Kotlin: specialise extension receivers the same as other function parameters
...
This arises when a generic class extends one of its parameters; for example, `class G<T> { val T.v; get() = 1 }`, where specialisation `G<List>` should generate a method specialisation `getV(List)`.
2022-10-27 18:31:19 +01:00
Chris Smowton
5ef99ca5bd
Merge pull request #11003 from smowton/smowton/fix/reintroduce-pointless-wildcards
...
Kotlin: reintroduce pointless wildcards when a Java declaration explicitly uses them
2022-10-27 16:06:21 +01:00
Ian Lynagh
6533e2ea5c
Merge pull request #10976 from igfoo/igfoo/version
...
Kotlin: Ignore tags when comparing versions
2022-10-27 15:50:39 +01:00
Ian Lynagh
f237360d81
Merge pull request #11011 from igfoo/igfoo/modules
...
Kotlin: Handle /modules/... paths specially too
2022-10-27 13:48:32 +01:00
Ian Lynagh
bafa80667c
Kotlin: Handle /modules/... paths specially too
...
On Windows, we don't want a C: prefix on these either.
2022-10-27 12:24:28 +01:00
Ian Lynagh
6d77b34323
Merge pull request #11000 from igfoo/igfoo/unknown-binary-location
...
Kotlin: Handle /!unknown-binary-location/... paths specially on Windows
2022-10-27 12:09:32 +01:00
Chris Smowton
28b6e263ec
Kotlin: reintroduce pointless wildcards when a Java declaration explicitly uses them
...
For example, Java code might use `HasOutVariance<? extends String>`, or `HasInVariance<? super Object>`, both of which are needless wildcards and which the Kotlin extractor would previously have refused to reintroduce due to their not specifying a larger type than their bound. However this led to inconsistency with Java extraction, which
extracts the type as it appears in source.
This seems to particularly happen with generated code, e.g. the output of the Kotlin protobuf compiler.
2022-10-26 20:05:27 +01:00
Ian Lynagh
0a470b0864
Kotlin: Handle /!unknown-binary-location/... paths specially on Windows
...
The standard code wants to normalise it to C:/!unknown-binary-location/...
which is particularly annoying for cross-platform test output.
2022-10-26 19:20:32 +01:00
Chris Smowton
fac383a3ac
Merge pull request #10974 from smowton/smowton/fix/dont-translate-tochar
...
Kotlin: don't try to call nonexistent `j.l.Number.toChar`
2022-10-26 14:18:03 +01:00
Ian Lynagh
37c40c58d2
Merge pull request #10959 from igfoo/igfoo/diags
...
Java/Kotlin: Add a diagnostics consistency query
2022-10-26 13:07:01 +01:00
Ian Lynagh
dd7ec499df
Kotlin: Ignore tags when comparing versions
...
We thought that 1.7.20-Beta > 1.7.20, and so tried to use 1.7.0's
extractor with 1.7.20.
2022-10-26 12:21:55 +01:00
Chris Smowton
004f4be5fb
Kotlin: don't try to call nonexistent j.l.Number.toChar
...
Previously we thought this could be callable because Kotlin's view of `j.l.Integer` inherits `k.Number` which defines `toChar`.
2022-10-25 17:09:05 +01:00
Ian Lynagh
185d43a7b0
Kotlin: Turn warnings into trace messages
...
This is normal behaviour, nothing to be concerned about.
2022-10-25 16:26:11 +01:00
Chris Smowton
c4ba644dfd
Merge pull request #10952 from smowton/smowton/fix/java-interface-redeclares-tostring
...
Kotlin: extract interface redeclarations of `Object` methods
2022-10-25 11:29:10 +01:00
Chris Smowton
843f847960
Merge pull request #10921 from smowton/smowton/fix/ignore-enhanced-nullability
...
Kotlin: ignore enhanced nullability when extracting primitive types
2022-10-24 19:43:04 +01:00
Chris Smowton
c6f4742f29
Kotlin: extract interface redeclarations of Object methods
...
Due to a probable compiler bug (?) the redeclaration looks like a fake symbol, leading to Java dispatching against a declaration that Kotlin doesn't believe exists.
2022-10-24 12:45:07 +01:00
Chris Smowton
86e99c497d
Merge pull request #10930 from smowton/smowton/fix/external-property-overloads
...
Kotlin: give external extension properties with matching name and file distinct trap filenames
2022-10-24 11:32:37 +01:00
Chris Smowton
00800017fd
Kotlin: make internal constructors' trap labels consistent with the Java extractor
...
Previously we accidentally named these something like <init>$main, which is a name-mangling the Kotlin compiler applies to internal methods but not to constructors, which look to Java just like regular public constructors.
2022-10-21 16:48:37 +01:00
Chris Smowton
42d6968c20
Kotlin: give external extension properties with matching name and file distinct trap filenames
2022-10-21 14:28:53 +01:00
Chris Smowton
5e28e5a170
Merge pull request #10909 from smowton/smowton/fix/kotlin-varargs-dataflow
...
Kotlin: Fix varargs dataflow, and varargs default handling
2022-10-21 13:32:34 +01:00
Chris Smowton
b80bf4a73e
Account for route to IrSimpleType.kotlinType changing as of v1.7.0
2022-10-21 11:55:15 +01:00
Ian Lynagh
2e6d6e1538
Merge pull request #10894 from igfoo/igfoo/psi
...
Kotlin: Refactor PSI handling
2022-10-21 11:43:49 +01:00
Chris Smowton
1fe9e8457f
Kotlin: Fix varargs dataflow, and varargs default handling
...
Dataflow requires accounting for the fact that the varargs parameter isn't necessarily last in the parameter list in a couple more places. Default handling just requires that if the only null parameter is the varargs argument, and it has no default value, then no $default method is required-- the caller is expected to simply pass nothing (at QL
/ source level) or an empty array (at JVM level).
2022-10-21 11:14:41 +01:00
Chris Smowton
7889d9cffa
Kotlin: ignore enhanced nullability when extracting primitive types
...
Otherwise we'll mistake `@NotNull Integer` for `int` and similar, causing a mismatch vs. Java signatures.
2022-10-21 10:55:26 +01:00
Chris Smowton
ac013f9d19
Merge pull request #10889 from smowton/smowton/fix/enum-entry-class-warning
...
Kotlin: Don't warn on extracting an enum-entry class
2022-10-20 22:08:29 +01:00
Chris Smowton
f2749a8878
Don't warn on extracting an enum-entry class
2022-10-20 16:09:45 +01:00
Ian Lynagh
291330c7e1
Kotlin: Small code simplification
2022-10-20 12:29:48 +01:00
Chris Smowton
e868cdf91b
Merge pull request #9876 from smowton/smowton/feature/interface-forwarding
...
Kotlin: implement default interface forwarding
2022-10-20 10:17:47 +01:00
Ian Lynagh
74a4061508
Kotlin: Refactor PSI handling
...
We were giving warnings about comments, when we were actually trying to
populate numlines.
2022-10-19 18:02:24 +01:00
Chris Smowton
c6b62c934b
Merge pull request #10853 from smowton/smowton/fix/specialised-anon-classes
...
Kotlin: extract called private methods of specialised types, and specialised instances of anonymous types
2022-10-19 16:48:28 +01:00
Chris Smowton
14b8892ced
Don't create interface forwarders for other interfaces, and target super accesses correctly
...
Intermediate interfaces don't need interface forwarders, since the Kotlin compiler won't try to make them non-abstract by synthesising methods.
Super references should always target an immediate superclass, not the ancestor containing the intended implementation.
2022-10-19 15:37:06 +01:00
Ian Lynagh
71b649558b
Merge pull request #10648 from igfoo/igfoo/lockless
...
Kotlin: Implement lockless TRAP writing
2022-10-19 15:04:19 +01:00
Ian Lynagh
c9cf33dd20
Kotlin: Nest TRAP files inside their basename
2022-10-19 12:14:39 +01:00
Ian Lynagh
dff1cf4c48
Kotlin: Don't write TRAP files that are already out-of-date
2022-10-19 12:14:38 +01:00
Ian Lynagh
b251078976
Kotlin: Implement lockless TRAP writing
...
Rather than using lock files and rewriting TRAP file, and storing the
metadata in a .metadata file, we now encode the metadata in the filename
and rename all but the newest TRAP file so that the importer doesn't
see them.
So we might end up with e.g.
Text.members#0.0-1664381081060-java.trap.gz
Text.members#55.0-1658481279000-java.trap-old.gz
Text.members#55.0-1664381081060-java.trap-old.gz
For now, you can go back to the old system by setting
CODEQL_EXTRACTOR_JAVA_TRAP_LOCKING=true
in the environment.
2022-10-19 12:14:38 +01:00
Chris Smowton
7ba9a31766
Use US spelling
2022-10-19 10:41:29 +01:00
Josh Soref
99aa5ffea6
spelling: substitutions
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2022-10-19 05:10:23 -04:00
Josh Soref
24a032041f
spelling: sanitize
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2022-10-19 05:10:23 -04:00
Josh Soref
0bc19506e7
spelling: reinitialised
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2022-10-19 04:59:16 -04:00
Josh Soref
0079ee3d54
spelling: annotation
...
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com >
2022-10-19 04:59:16 -04:00
Chris Smowton
2713b3ee06
Comment extraction: don't treat anonymous classes differently
2022-10-18 11:10:29 +01:00
Tamás Vajk
0069fd9681
Merge pull request #10860 from tamasvajk/kotlin-clinit-static
...
Kotlin: Add `static` modifier to `clinit`
2022-10-18 11:39:34 +02:00
Chris Smowton
50f99d8e82
Don't produce interface forwarders directed at an abstract target
2022-10-18 10:31:01 +01:00