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

Skip to content

Commit 0c429e4

Browse files
committed
Kotlin: Add blocks
1 parent a8a6b4c commit 0c429e4

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin.*
3434
import org.jetbrains.kotlin.ir.expressions.IrWhen
3535
import org.jetbrains.kotlin.ir.expressions.IrElseBranch
3636
import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
37+
import org.jetbrains.kotlin.ir.expressions.IrBlock
3738
import org.jetbrains.kotlin.ir.IrStatement
3839
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
3940

@@ -338,6 +339,14 @@ class KotlinFileExtractor(val tw: TrapWriter) {
338339
tw.writeStmts_returnstmt(id, parent, idx, callable)
339340
tw.writeHasLocation(id, locId)
340341
extractExpression(e.value, callable, id, 0)
342+
} is IrBlock -> {
343+
val id = tw.getFreshIdLabel<DbBlock>()
344+
val locId = tw.getLocation(e.startOffset, e.endOffset)
345+
tw.writeStmts_block(id, parent, idx, callable)
346+
tw.writeHasLocation(id, locId)
347+
e.statements.forEachIndexed { i, s ->
348+
extractStatement(s, callable, id, i)
349+
}
341350
} is IrWhileLoop -> {
342351
val id = tw.getFreshIdLabel<DbWhilestmt>()
343352
val locId = tw.getLocation(e.startOffset, e.endOffset)
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
| stmts.kt:2:41:10:1 | { ... } |
1+
| stmts.kt:2:41:13:1 | { ... } |
22
| stmts.kt:3:8:3:12 | if (...) |
3+
| stmts.kt:3:15:4:5 | { ... } |
34
| stmts.kt:4:15:4:19 | if (...) |
5+
| stmts.kt:4:22:5:5 | { ... } |
46
| stmts.kt:7:5:8:16 | while (...) |
57
| stmts.kt:8:9:8:16 | return ... |
6-
| stmts.kt:9:5:9:16 | return ... |
8+
| stmts.kt:9:5:11:5 | while (...) |
9+
| stmts.kt:9:18:11:5 | { ... } |
10+
| stmts.kt:10:9:10:16 | return ... |
11+
| stmts.kt:12:5:12:16 | return ... |

java/ql/test/kotlin/library-tests/stmts/stmts.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ fun topLevelMethod(x: Int, y: Int): Int {
66
}
77
while(x > y)
88
return x
9+
while(x < y) {
10+
return y
11+
}
912
return x + y
1013
}
1114

0 commit comments

Comments
 (0)