Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bf4fb13

Browse files
tamasvajkigfoo
authored andcommitted
Revert extracting this and this@TYPE parameters
1 parent d6ec230 commit bf4fb13

5 files changed

Lines changed: 11 additions & 56 deletions

File tree

java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,9 @@ class KotlinFileExtractor(val logger: FileLogger, val tw: FileTrapWriter, val fi
413413
@Suppress("UNCHECKED_CAST")
414414
val parentId: Label<out DbMethod> = useDeclarationParent(vp.parent) as Label<out DbMethod>
415415
var idx = vp.index
416-
if (isQualifiedThisFunction(vp)) {
417-
idx = -2
416+
if (idx < 0) {
417+
// We're not extracting this and this@TYPE parameters of functions:
418+
logger.warnElement(Severity.ErrorSevere, "Unexpected negative index for parameter", vp)
418419
}
419420
val label = "@\"params;{$parentId};$idx\""
420421
return label
@@ -470,17 +471,10 @@ class KotlinFileExtractor(val logger: FileLogger, val tw: FileTrapWriter, val fi
470471
extractValueParameter(vp, id, i)
471472
}
472473

473-
var index = -1
474474
val extReceiver = f.extensionReceiverParameter
475475
if (extReceiver != null) {
476-
extractValueParameter(extReceiver, id, index--)
477-
478-
tw.writeKtExtensionFunctions(id)
479-
}
480-
481-
val dispReceiver = f.dispatchReceiverParameter
482-
if (dispReceiver != null) {
483-
extractValueParameter(dispReceiver, id, index)
476+
val extendedType = useType(extReceiver.type)
477+
tw.writeKtExtensionFunctions(id, extendedType)
484478
}
485479
}
486480

java/ql/lib/config/semmlecode.dbscheme

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,5 +1061,6 @@ ktBreakContinueTarget(
10611061
)
10621062

10631063
ktExtensionFunctions(
1064-
unique int id: @method ref
1064+
unique int id: @method ref,
1065+
int typeid: @type ref
10651066
)

java/ql/lib/semmle/code/java/Member.qll

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,10 +673,12 @@ class InstanceField extends Field {
673673

674674
/** A Kotlin extension function. */
675675
class ExtensionMethod extends Method {
676-
ExtensionMethod() { ktExtensionFunctions(this) }
676+
Type extendedType;
677+
678+
ExtensionMethod() { ktExtensionFunctions(this, extendedType) }
677679

678680
/** Gets the type being extended by this method. */
679-
Type getExtendedType() { result = getParameter(-1).getType() }
681+
Type getExtendedType() { result = extendedType }
680682

681683
override string getAPrimaryQlClass() { result = "ExtensionMethod" }
682684
}
Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,15 @@
11
| methods2.kt:4:1:5:1 | fooBarTopLevelMethod | methods2.kt:4:26:4:31 | x | 0 |
22
| methods2.kt:4:1:5:1 | fooBarTopLevelMethod | methods2.kt:4:34:4:39 | y | 1 |
3-
| methods2.kt:7:1:10:1 | equals | methods2.kt:7:1:10:1 | <this> | -1 |
43
| methods2.kt:7:1:10:1 | equals | methods2.kt:7:1:10:1 | other | 0 |
5-
| methods2.kt:7:1:10:1 | hashCode | methods2.kt:7:1:10:1 | <this> | -1 |
6-
| methods2.kt:7:1:10:1 | toString | methods2.kt:7:1:10:1 | <this> | -1 |
7-
| methods2.kt:8:5:9:5 | fooBarClassMethod | methods2.kt:8:5:9:5 | <this> | -1 |
84
| methods2.kt:8:5:9:5 | fooBarClassMethod | methods2.kt:8:27:8:32 | x | 0 |
95
| methods2.kt:8:5:9:5 | fooBarClassMethod | methods2.kt:8:35:8:40 | y | 1 |
10-
| methods3.kt:3:1:3:39 | fooBarTopLevelMethod | methods3.kt:3:5:3:7 | <this> | -1 |
116
| methods3.kt:3:1:3:39 | fooBarTopLevelMethod | methods3.kt:3:30:3:35 | x | 0 |
12-
| methods3.kt:5:1:7:1 | equals | methods3.kt:5:1:7:1 | <this> | -1 |
137
| methods3.kt:5:1:7:1 | equals | methods3.kt:5:1:7:1 | other | 0 |
14-
| methods3.kt:5:1:7:1 | hashCode | methods3.kt:5:1:7:1 | <this> | -1 |
15-
| methods3.kt:5:1:7:1 | toString | methods3.kt:5:1:7:1 | <this> | -1 |
16-
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod | methods3.kt:6:5:6:43 | <this> | -2 |
17-
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod | methods3.kt:6:9:6:11 | <this> | -1 |
188
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod | methods3.kt:6:34:6:39 | x | 0 |
199
| methods.kt:2:1:3:1 | topLevelMethod | methods.kt:2:20:2:25 | x | 0 |
2010
| methods.kt:2:1:3:1 | topLevelMethod | methods.kt:2:28:2:33 | y | 1 |
21-
| methods.kt:5:1:13:1 | equals | methods.kt:5:1:13:1 | <this> | -1 |
2211
| methods.kt:5:1:13:1 | equals | methods.kt:5:1:13:1 | other | 0 |
23-
| methods.kt:5:1:13:1 | hashCode | methods.kt:5:1:13:1 | <this> | -1 |
24-
| methods.kt:5:1:13:1 | toString | methods.kt:5:1:13:1 | <this> | -1 |
25-
| methods.kt:6:5:7:5 | classMethod | methods.kt:6:5:7:5 | <this> | -1 |
2612
| methods.kt:6:5:7:5 | classMethod | methods.kt:6:21:6:26 | x | 0 |
2713
| methods.kt:6:5:7:5 | classMethod | methods.kt:6:29:6:34 | y | 1 |
28-
| methods.kt:9:5:12:5 | anotherClassMethod | methods.kt:9:5:12:5 | <this> | -1 |
2914
| methods.kt:9:5:12:5 | anotherClassMethod | methods.kt:9:28:9:33 | a | 0 |
3015
| methods.kt:9:5:12:5 | anotherClassMethod | methods.kt:9:36:9:41 | b | 1 |
Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,11 @@
1-
| variables.kt:2:1:8:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
2-
| variables.kt:2:1:8:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
3-
| variables.kt:2:1:8:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
41
| variables.kt:2:1:8:1 | other | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
52
| variables.kt:3:5:3:21 | prop | file://:0:0:0:0 | int | file://:0:0:0:0 | <none> |
6-
| variables.kt:5:5:7:5 | <this> | variables.kt:2:1:8:1 | Foo | file://:0:0:0:0 | <none> |
73
| variables.kt:5:20:5:29 | param | file://:0:0:0:0 | int | file://:0:0:0:0 | <none> |
84
| variables.kt:6:9:6:25 | int local | file://:0:0:0:0 | int | variables.kt:6:21:6:25 | ... + ... |
95
| variables.kt:10:1:10:21 | topLevel | file://:0:0:0:0 | int | file://:0:0:0:0 | <none> |
10-
| variables.kt:12:1:15:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
11-
| variables.kt:12:1:15:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
12-
| variables.kt:12:1:15:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
136
| variables.kt:12:1:15:1 | other | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
14-
| variables.kt:13:5:13:15 | <this> | variables.kt:12:1:15:1 | C1 | file://:0:0:0:0 | <none> |
15-
| variables.kt:14:5:14:15 | <this> | variables.kt:12:1:15:1 | C1 | file://:0:0:0:0 | <none> |
16-
| variables.kt:16:1:34:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
17-
| variables.kt:16:1:34:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
18-
| variables.kt:16:1:34:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
197
| variables.kt:16:1:34:1 | other | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
208
| variables.kt:16:11:16:18 | o | variables.kt:12:1:15:1 | C1 | file://:0:0:0:0 | <none> |
219
| variables.kt:16:11:16:18 | o | variables.kt:12:1:15:1 | C1 | file://:0:0:0:0 | <none> |
22-
| variables.kt:17:5:17:15 | <this> | variables.kt:16:1:34:1 | C2 | file://:0:0:0:0 | <none> |
23-
| variables.kt:18:5:18:15 | <this> | variables.kt:16:1:34:1 | C2 | file://:0:0:0:0 | <none> |
24-
| variables.kt:20:5:22:5 | <this> | variables.kt:16:1:34:1 | C2 | file://:0:0:0:0 | <none> |
25-
| variables.kt:23:5:33:5 | <this> | variables.kt:16:1:34:1 | C2 | file://:0:0:0:0 | <none> |
26-
| variables.kt:23:9:23:10 | <this> | variables.kt:12:1:15:1 | C1 | file://:0:0:0:0 | <none> |
27-
| variables.kt:36:1:45:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
28-
| variables.kt:36:1:45:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
29-
| variables.kt:36:1:45:1 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
3010
| variables.kt:36:1:45:1 | other | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
31-
| variables.kt:37:5:37:15 | <this> | variables.kt:36:1:45:1 | C3 | file://:0:0:0:0 | <none> |
32-
| variables.kt:38:5:44:5 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
33-
| variables.kt:38:5:44:5 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
34-
| variables.kt:38:5:44:5 | <this> | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
35-
| variables.kt:38:5:44:5 | <this> | variables.kt:36:1:45:1 | C3 | file://:0:0:0:0 | <none> |
3611
| variables.kt:38:11:44:5 | other | file://:0:0:0:0 | Any | file://:0:0:0:0 | <none> |
37-
| variables.kt:39:9:39:19 | <this> | variables.kt:38:5:44:5 | C4 | file://:0:0:0:0 | <none> |
38-
| variables.kt:40:9:43:9 | <this> | variables.kt:38:5:44:5 | C4 | file://:0:0:0:0 | <none> |

0 commit comments

Comments
 (0)