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

Skip to content

Commit 67d2c52

Browse files
tamasvajkigfoo
authored andcommitted
Extract field declarations
1 parent 5bc28ab commit 67d2c52

4 files changed

Lines changed: 43 additions & 6 deletions

File tree

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,16 @@ open class KotlinFileExtractor(
496496

497497
extractVisibility(f, id, f.visibility)
498498

499+
if (!isExternalDeclaration(f)) {
500+
val fieldDeclarationId = tw.getFreshIdLabel<DbFielddecl>()
501+
tw.writeFielddecls(fieldDeclarationId, parentId)
502+
tw.writeFieldDeclaredIn(id, fieldDeclarationId, 0)
503+
tw.writeHasLocation(fieldDeclarationId, locId)
504+
505+
val typeAccessId = tw.getFreshIdLabel<DbUnannotatedtypeaccess>()
506+
tw.writeExprs_unannotatedtypeaccess(typeAccessId, type.javaResult.id, type.kotlinResult.id, fieldDeclarationId, 0)
507+
}
508+
499509
return id
500510
}
501511

java/ql/test/kotlin/library-tests/exprs/exprs.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,9 +626,13 @@
626626
| file://:0:0:0:0 | MyLambda | funcExprs.kt:13:1:29:1 | call | TypeAccess |
627627
| file://:0:0:0:0 | Object | localFunctionCalls.kt:3:1:11:1 | x | TypeAccess |
628628
| file://:0:0:0:0 | Object | localFunctionCalls.kt:3:1:11:1 | x | TypeAccess |
629+
| file://:0:0:0:0 | String | file://:0:0:0:0 | <none> | TypeAccess |
629630
| file://:0:0:0:0 | String | localFunctionCalls.kt:3:1:11:1 | x | TypeAccess |
630631
| file://:0:0:0:0 | Unit | exprs.kt:168:6:170:1 | Direction | TypeAccess |
631632
| file://:0:0:0:0 | Unit | exprs.kt:172:6:176:1 | Color | TypeAccess |
633+
| file://:0:0:0:0 | int | file://:0:0:0:0 | <none> | TypeAccess |
634+
| file://:0:0:0:0 | int | file://:0:0:0:0 | <none> | TypeAccess |
635+
| file://:0:0:0:0 | int | file://:0:0:0:0 | <none> | TypeAccess |
632636
| file://:0:0:0:0 | tmp0 | exprs.kt:4:1:136:1 | topLevelMethod | LocalVariableDeclExpr |
633637
| funcExprs.kt:14:5:14:33 | functionExpression0a(...) | funcExprs.kt:13:1:29:1 | call | MethodAccess |
634638
| funcExprs.kt:14:26:14:33 | ...->... | funcExprs.kt:13:1:29:1 | call | LambdaExpr |

java/ql/test/kotlin/library-tests/properties/properties.expected

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
fieldDeclarations
2+
| properties.kt:2:27:2:50 | int constructorProp; | properties.kt:2:27:2:50 | constructorProp | 0 |
3+
| properties.kt:2:53:2:83 | int mutableConstructorProp; | properties.kt:2:53:2:83 | mutableConstructorProp | 0 |
4+
| properties.kt:3:5:3:25 | int modifiableInt; | properties.kt:3:5:3:25 | modifiableInt | 0 |
5+
| properties.kt:4:5:4:24 | int immutableInt; | properties.kt:4:5:4:24 | immutableInt | 0 |
6+
| properties.kt:5:5:5:26 | int typedProp; | properties.kt:5:5:5:26 | typedProp | 0 |
7+
| properties.kt:7:5:7:30 | int initialisedInInit; | properties.kt:7:5:7:30 | initialisedInInit | 0 |
8+
| properties.kt:11:5:11:40 | int useConstructorArg; | properties.kt:11:5:11:40 | useConstructorArg | 0 |
9+
| properties.kt:19:5:20:15 | int defaultGetter; | properties.kt:19:5:20:15 | defaultGetter | 0 |
10+
| properties.kt:21:5:22:15 | int varDefaultGetter; | properties.kt:21:5:22:15 | varDefaultGetter | 0 |
11+
| properties.kt:23:5:24:15 | int varDefaultSetter; | properties.kt:23:5:24:15 | varDefaultSetter | 0 |
12+
| properties.kt:25:5:27:15 | int varDefaultGetterSetter; | properties.kt:25:5:27:15 | varDefaultGetterSetter | 0 |
13+
| properties.kt:28:5:29:22 | int overrideGetter; | properties.kt:28:5:29:22 | overrideGetter | 0 |
14+
| properties.kt:30:5:31:29 | int overrideGetterUseField; | properties.kt:30:5:31:29 | overrideGetterUseField | 0 |
15+
| properties.kt:32:5:33:29 | int useField; | properties.kt:32:5:33:29 | useField | 0 |
16+
| properties.kt:34:5:34:36 | String lateInitVar; | properties.kt:34:5:34:36 | lateInitVar | 0 |
17+
| properties.kt:35:5:35:32 | int privateProp; | properties.kt:35:5:35:32 | privateProp | 0 |
18+
| properties.kt:36:5:36:36 | int protectedProp; | properties.kt:36:5:36:36 | protectedProp | 0 |
19+
| properties.kt:37:5:37:30 | int publicProp; | properties.kt:37:5:37:30 | publicProp | 0 |
20+
| properties.kt:38:5:38:34 | int internalProp; | properties.kt:38:5:38:34 | internalProp | 0 |
21+
| properties.kt:67:1:67:23 | int constVal; | properties.kt:67:1:67:23 | constVal | 0 |
22+
#select
123
| properties.kt:2:27:2:50 | constructorProp | properties.kt:2:27:2:50 | getConstructorProp | file://:0:0:0:0 | <none> | properties.kt:2:27:2:50 | constructorProp | public |
224
| properties.kt:2:53:2:83 | mutableConstructorProp | properties.kt:2:53:2:83 | getMutableConstructorProp | properties.kt:2:53:2:83 | setMutableConstructorProp | properties.kt:2:53:2:83 | mutableConstructorProp | public |
325
| properties.kt:3:5:3:25 | modifiableInt | properties.kt:3:5:3:25 | getModifiableInt | properties.kt:3:5:3:25 | setModifiableInt | properties.kt:3:5:3:25 | modifiableInt | public |

java/ql/test/kotlin/library-tests/properties/properties.ql

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,34 @@ newtype TMaybeElement =
66

77
class MaybeElement extends TMaybeElement {
88
abstract string toString();
9+
910
abstract Location getLocation();
1011
}
1112

1213
class YesMaybeElement extends MaybeElement {
1314
Element e;
1415

1516
YesMaybeElement() { this = TElement(e) }
17+
1618
override string toString() { result = e.toString() }
19+
1720
override Location getLocation() { result = e.getLocation() }
1821
}
1922

2023
class NoMaybeElement extends MaybeElement {
2124
NoMaybeElement() { this = TNoElement() }
2225

2326
override string toString() { result = "<none>" }
27+
2428
override Location getLocation() { none() }
2529
}
2630

2731
MaybeElement getter(Property p) {
28-
if exists(p.getGetter())
29-
then result = TElement(p.getGetter())
30-
else result = TNoElement()
32+
if exists(p.getGetter()) then result = TElement(p.getGetter()) else result = TNoElement()
3133
}
3234

3335
MaybeElement setter(Property p) {
34-
if exists(p.getSetter())
35-
then result = TElement(p.getSetter())
36-
else result = TNoElement()
36+
if exists(p.getSetter()) then result = TElement(p.getSetter()) else result = TNoElement()
3737
}
3838

3939
MaybeElement backingField(Property p) {
@@ -46,3 +46,4 @@ from Property p
4646
where p.fromSource()
4747
select p, getter(p), setter(p), backingField(p), concat(string s | p.hasModifier(s) | s, ", ")
4848

49+
query predicate fieldDeclarations(FieldDeclaration fd, Field f, int i) { fd.getField(i) = f }

0 commit comments

Comments
 (0)