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

Skip to content

Commit 2dfe50c

Browse files
tamasvajkigfoo
authored andcommitted
Change constructor and type name of anonymous classes to empty string
1 parent b7faa33 commit 2dfe50c

4 files changed

Lines changed: 18 additions & 14 deletions

File tree

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,7 +1104,7 @@ open class KotlinFileExtractor(
11041104
useClassSource(c)
11051105
}
11061106
val pkg = c.packageFqName?.asString() ?: ""
1107-
val cls = c.name.asString()
1107+
val cls = if (c.isAnonymousObject) "" else c.name.asString()
11081108
val pkgId = extractPackage(pkg)
11091109
if(c.kind == ClassKind.INTERFACE) {
11101110
@Suppress("UNCHECKED_CAST")
@@ -1300,7 +1300,7 @@ open class KotlinFileExtractor(
13001300

13011301
if (f.symbol is IrConstructorSymbol) {
13021302
val returnType = useType(erase(f.returnType))
1303-
val shortName = f.returnType.classFqName?.shortName()?.asString() ?: f.name.asString()
1303+
val shortName = if (f.returnType.isAnonymous) "" else f.returnType.classFqName?.shortName()?.asString() ?: f.name.asString()
13041304
@Suppress("UNCHECKED_CAST")
13051305
tw.writeConstrs(id as Label<DbConstructor>, shortName, "$shortName$paramsSignature", returnType.javaResult.id, returnType.kotlinResult.id, parentId, id)
13061306
} else {
@@ -1775,7 +1775,7 @@ open class KotlinFileExtractor(
17751775
) {
17761776
val id = tw.getFreshIdLabel<DbNewexpr>()
17771777
val type: TypeResults
1778-
val isAnonymous = ((e.type as? IrSimpleType)?.classifier?.owner as? IrClass)?.isAnonymousObject ?: false
1778+
val isAnonymous = e.type.isAnonymous
17791779
if (isAnonymous) {
17801780
if (e.typeArgumentsCount > 0) {
17811781
logger.warn("Unexpected type arguments for anonymous class constructor call")
@@ -2405,4 +2405,7 @@ open class KotlinFileExtractor(
24052405

24062406
tw.writeKtBreakContinueTargets(id, loopId)
24072407
}
2408+
2409+
private val IrType.isAnonymous: Boolean
2410+
get() = ((this as? IrSimpleType)?.classifier?.owner as? IrClass)?.isAnonymousObject ?: false
24082411
}
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
| classes.kt:66:20:66:54 | new Object(...) { ... } | classes.kt:66:20:66:54 | new <no name provided>(...) | file://:0:0:0:0 | Object |
2-
| classes.kt:68:20:68:74 | new Object(...) { ... } | classes.kt:68:20:68:74 | new <no name provided>(...) | file://:0:0:0:0 | Object |
3-
| classes.kt:72:16:77:10 | new Object(...) { ... } | classes.kt:72:16:77:10 | new <no name provided>(...) | file://:0:0:0:0 | Object |
4-
| classes.kt:75:24:75:33 | new Object(...) { ... } | classes.kt:75:24:75:33 | new <no name provided>(...) | file://:0:0:0:0 | Object |
5-
| classes.kt:81:16:81:38 | new Interface1(...) { ... } | classes.kt:81:16:81:38 | new <no name provided>(...) | file://:0:0:0:0 | Interface1 |
6-
| classes.kt:85:16:85:25 | new Object(...) { ... } | classes.kt:85:16:85:25 | new <no name provided>(...) | file://:0:0:0:0 | Object |
7-
| classes.kt:89:16:89:44 | new Interface3<Integer>(...) { ... } | classes.kt:89:16:89:44 | new <no name provided>(...) | file://:0:0:0:0 | Interface3<Integer> |
1+
| classes.kt:66:20:66:54 | new Object(...) { ... } | classes.kt:66:20:66:54 | new (...) | | file://:0:0:0:0 | Object |
2+
| classes.kt:68:20:68:74 | new Object(...) { ... } | classes.kt:68:20:68:74 | new (...) | | file://:0:0:0:0 | Object |
3+
| classes.kt:72:16:77:10 | new Object(...) { ... } | classes.kt:72:16:77:10 | new (...) | | file://:0:0:0:0 | Object |
4+
| classes.kt:75:24:75:33 | new Object(...) { ... } | classes.kt:75:24:75:33 | new (...) | | file://:0:0:0:0 | Object |
5+
| classes.kt:81:16:81:38 | new Interface1(...) { ... } | classes.kt:81:16:81:38 | new (...) | | file://:0:0:0:0 | Interface1 |
6+
| classes.kt:85:16:85:25 | new Object(...) { ... } | classes.kt:85:16:85:25 | new (...) | | file://:0:0:0:0 | Object |
7+
| classes.kt:89:16:89:44 | new Interface3<Integer>(...) { ... } | classes.kt:89:16:89:44 | new (...) | | file://:0:0:0:0 | Interface3<Integer> |

java/ql/test/kotlin/library-tests/classes/anonymousClasses.ql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ import java
22

33
from AnonymousClass c
44
where c.fromSource()
5-
select c, c.getClassInstanceExpr(), c.getClassInstanceExpr().getTypeName()
6-
5+
select c, c.getClassInstanceExpr(),
6+
c.getClassInstanceExpr().getConstructor().getDeclaringType().getName(),
7+
c.getClassInstanceExpr().getTypeName()

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,8 @@
231231
| exprs.kt:111:9:111:18 | a2 | exprs.kt:110:13:115:5 | getObject | LocalVariableDeclExpr |
232232
| exprs.kt:111:18:111:18 | 2 | exprs.kt:110:13:115:5 | getObject | IntegerLiteral |
233233
| exprs.kt:112:16:114:9 | <Stmt> | exprs.kt:110:13:115:5 | getObject | StmtExpr |
234-
| exprs.kt:112:16:114:9 | <obinit>(...) | exprs.kt:112:16:114:9 | <no name provided> | MethodAccess |
235-
| exprs.kt:112:16:114:9 | new <no name provided>(...) | exprs.kt:110:13:115:5 | getObject | ClassInstanceExpr |
234+
| exprs.kt:112:16:114:9 | <obinit>(...) | exprs.kt:112:16:114:9 | | MethodAccess |
235+
| exprs.kt:112:16:114:9 | new (...) | exprs.kt:110:13:115:5 | getObject | ClassInstanceExpr |
236236
| exprs.kt:113:13:113:49 | ...=... | exprs.kt:112:16:114:9 | <obinit> | AssignExpr |
237237
| exprs.kt:113:13:113:49 | a3 | exprs.kt:112:16:114:9 | <obinit> | VarAccess |
238238
| exprs.kt:113:13:113:49 | a3 | exprs.kt:113:13:113:49 | <get-a3> | VarAccess |

0 commit comments

Comments
 (0)