Commit Graph

632 Commits

Author SHA1 Message Date
Ian Lynagh
c125c1a698 Kotlin: getFunctionLabel: Make parentId be nullable
This allows us to simplify the set of functions.
2022-05-10 19:51:14 +01:00
Ian Lynagh
dd51141029 Kotlin: Use variable names more consistently 2022-05-10 19:51:14 +01:00
Ian Lynagh
2f8ede2ae5 Kotlin: Fix a variable shadowing warning 2022-05-10 19:51:14 +01:00
Ian Lynagh
72a6bfe7db Kotlin: getFunctionLabel: Small refactoring
We now pass the IrDeclarationParent of the function to the final
getFunctionLabel function, and that takes care of finding the
enclosing class.
2022-05-10 19:51:14 +01:00
Chris Smowton
7a756e3be9 Extract compilation-unit package and location for class files 2022-05-10 19:51:14 +01:00
Chris Smowton
863037ec41 Always extract methods of user-class supertypes
This matches the Java extractor's behaviour. Also if we re-visit a class to extract its members, revisit its supertypes to extract their members too.
2022-05-10 19:51:14 +01:00
Ian Lynagh
920599fcf5 Kotlin: Make an unnecessarily-optional argument a required argument 2022-05-10 19:51:13 +01:00
Tamas Vajk
52597e5d63 Fix missing declarations in declaration stack 2022-05-10 19:51:13 +01:00
Tamas Vajk
482a37cfe3 Fix unbound symbol.owner references and add todos 2022-05-10 19:51:13 +01:00
Ian Lynagh
41c36760f7 Kotlin: Small refactorings and comments 2022-05-10 19:51:13 +01:00
Ian Lynagh
6566f7b69f Kotlin: Add types for the different kinds of casts that Kotlin has
We might want to unify some of these in future, but doing that
correctly is easier than splitting them up correctly, so I've given each
one its own QL class for now.

I am not familiar with many of the libraries/queries that use CastExpr.
I've briefly looked at them and updated them in a way that looks
superficially reasonable, but some of the uses will probably want to be
refined later.
2022-05-10 19:51:13 +01:00
Ian Lynagh
7cf1289385 Kotlin: Fix build with old JDKs 2022-05-10 19:51:13 +01:00
Chris Smowton
221fa37081 Fix naming of local class instances that fall within generic functions 2022-05-10 19:51:13 +01:00
Ian Lynagh
e9fcd4749a Kotlin: Use ASM9 rather than ASM7
This fixes
        exception: java.lang.UnsupportedOperationException: PermittedSubclasses requires ASM9
when we encounter ConstantDesc.class in the JDK's modules.
2022-05-10 19:51:13 +01:00
Tamas Vajk
44b731c68e Exclude extraction of fake overridden properties 2022-05-10 19:51:13 +01:00
Tamas Vajk
55b8e4400d Code quality improvements 2022-05-10 19:51:13 +01:00
Tamas Vajk
b6e5e1977d Extract more visibility modifiers 2022-05-10 19:51:13 +01:00
Ian Lynagh
a6d0dc7751 Kotlin: Small refactorings 2022-05-10 19:51:13 +01:00
Ian Lynagh
e1cff50c39 Kotlin: Remove KotlinSourceFileExtractor 2022-05-10 19:51:13 +01:00
Ian Lynagh
c1c4e4f86c Kotlin: Move extractFileContents into KotlinFileExtractor 2022-05-10 19:51:13 +01:00
Ian Lynagh
d43efd4cc7 Kotlin: KotlinSourceFileExtractor: Take filePath rather than file 2022-05-10 19:51:13 +01:00
Chris Smowton
f4314c1f3d Substitute all generic types into function trap IDs and signatures, and ensure the subbed types are never primitive
The solution for ensuring they are primitive (making the range of the substitution always nullable) will need replacing once we export Kotlin types.
2022-05-10 19:51:12 +01:00
Chris Smowton
3365f3972e Instantiated generic type substitution: substitute outer class parameters too 2022-05-10 19:51:12 +01:00
Chris Smowton
fd495aa783 Name non-generic functions for their non-erased parameter types 2022-05-10 19:51:12 +01:00
Chris Smowton
f177c2c5ae Function trap ids: remove spaces between value parameters
Otherwise these won't match the IDs used by the Java extractor.
2022-05-10 19:51:12 +01:00
Chris Smowton
f38f03e6c9 Value parameters: provide correct source declaration 2022-05-10 19:51:12 +01:00
Chris Smowton
cd07cc448e Class trap labels: include outer type parameters 2022-05-10 19:51:12 +01:00
Chris Smowton
94efb427fe Type parameters: record index Java-style
Previously they received indices offset by the number of surrounding class type parameters.
2022-05-10 19:51:12 +01:00
Chris Smowton
178f128bdc Function labels: include <n> suffix (where n is the number of function type parameters)
This matches the Java extractor's behaviour.
2022-05-10 19:51:12 +01:00
Ian Lynagh
448b3d38d3 Kotlin: Duplicate less TRAP 2022-05-10 19:51:12 +01:00
Ian Lynagh
194e9fd2da Kotlin: Handle file classes better 2022-05-10 19:51:12 +01:00
Ian Lynagh
4340fe7044 Kotlin: Comments: Small refactoring 2022-05-10 19:51:12 +01:00
Tamas Vajk
b599ff2792 Change variable location extraction 2022-05-10 19:51:12 +01:00
Chris Smowton
33a9b4fb16 Add explanatory comment 2022-05-10 19:51:12 +01:00
Chris Smowton
ab449e0517 Fix: use void as constructor return types in their labels
Without this we're incompatible with the Java extractor's constructor labelling
2022-05-10 19:51:12 +01:00
Chris Smowton
5188998bc6 Extract outer <-> inner class relationships for generic instances 2022-05-10 19:51:12 +01:00
Chris Smowton
67e3374a23 Fix inner generic type extraction
- Don't attribute type parameters that belong to the outer class to the inner
- Don't extract constructor generic parameters as if they were parameters of the type being instantiated
2022-05-10 19:51:12 +01:00
Tamas Vajk
afd71a00d0 Fix extraction of function references without dispatch receiver 2022-05-10 19:51:12 +01:00
Tamas Vajk
ef2795c88b Add ktLocalFunction relation and tests for local and anonymous classes 2022-05-10 19:51:11 +01:00
Tamas Vajk
e0bf7d8246 Extract local class declarations 2022-05-10 19:51:11 +01:00
Tamas Vajk
1e64887903 Extract field receiver in field read/write 2022-05-10 19:51:11 +01:00
Tamas Vajk
10ae157682 Extract function references 2022-05-10 19:51:11 +01:00
Tamas Vajk
6950f868fb Fix type access extraction in field declarations 2022-05-10 19:51:11 +01:00
Tamas Vajk
73cd497427 Add todo comment to move property from parameter initialization to constructor 2022-05-10 19:51:11 +01:00
Chris Smowton
2730d07b4c Extract static method qualifier type accesses 2022-05-10 19:51:11 +01:00
Chris Smowton
ef9a213ae1 Cleanup: use extractTypeAccess wherever possible 2022-05-10 19:51:11 +01:00
Tamas Vajk
30ff5e2517 Change unknown location to whole file location in source extraction 2022-05-10 19:51:11 +01:00
Tamas Vajk
9d7794185e Fix temporary variable locations 2022-05-10 19:51:11 +01:00
Tamas Vajk
67d2c52e86 Extract field declarations 2022-05-10 19:51:11 +01:00
Tamas Vajk
5bc28ab45a Extract externally defined inner classes only once 2022-05-10 19:51:11 +01:00