@@ -1000,17 +1000,22 @@ class X {
10001000 }
10011001
10021002 fun extractVariable (v : IrVariable , callable : Label <out DbCallable >, parent : Label <out DbStmtparent >, idx : Int ) {
1003+ val stmtId = tw.getFreshIdLabel<DbLocalvariabledeclstmt >()
1004+ val locId = tw.getLocation(v)
1005+ tw.writeStmts_localvariabledeclstmt(stmtId, parent, idx, callable)
1006+ tw.writeHasLocation(stmtId, locId)
1007+ extractVariableExpr(v, callable, stmtId, 1 )
1008+ }
1009+
1010+ fun extractVariableExpr (v : IrVariable , callable : Label <out DbCallable >, parent : Label <out DbExprparent >, idx : Int ) {
10031011 val varId = useVariable(v)
10041012 val exprId = tw.getFreshIdLabel<DbLocalvariabledeclexpr >()
1005- val stmtId = tw.getFreshIdLabel<DbLocalvariabledeclstmt >()
10061013 val locId = tw.getLocation(v)
10071014 val type = useType(v.type)
10081015 tw.writeLocalvars(varId, v.name.asString(), type.javaResult.id, exprId) // TODO: KT type
10091016 tw.writeHasLocation(varId, locId)
1010- tw.writeExprs_localvariabledeclexpr(exprId, type.javaResult.id, type.kotlinResult.id, stmtId, 1 )
1017+ tw.writeExprs_localvariabledeclexpr(exprId, type.javaResult.id, type.kotlinResult.id, parent, idx )
10111018 tw.writeHasLocation(exprId, locId)
1012- tw.writeStmts_localvariabledeclstmt(stmtId, parent, idx, callable)
1013- tw.writeHasLocation(stmtId, locId)
10141019 val i = v.initializer
10151020 if (i != null ) {
10161021 extractExpressionExpr(i, callable, exprId, 0 )
@@ -1303,6 +1308,25 @@ class X {
13031308 tw.writeHasLocation(id, locId)
13041309 extractExpressionExpr(e.value, callable, id, 0 )
13051310 }
1311+ is IrTry -> {
1312+ val stmtParent = parent.stmt(e, callable)
1313+ val id = tw.getFreshIdLabel<DbTrystmt >()
1314+ val locId = tw.getLocation(e)
1315+ tw.writeStmts_trystmt(id, stmtParent.parent, stmtParent.idx, callable)
1316+ tw.writeHasLocation(id, locId)
1317+ extractExpressionExpr(e.tryResult, callable, id, - 1 )
1318+ val finallyStmt = e.finallyExpression
1319+ if (finallyStmt != null ) {
1320+ extractExpressionExpr(finallyStmt, callable, id, - 2 )
1321+ }
1322+ for ((catchIdx, catchClause) in e.catches.withIndex()) {
1323+ val catchId = tw.getFreshIdLabel<DbCatchclause >()
1324+ tw.writeStmts_catchclause(catchId, id, catchIdx, callable)
1325+ // TODO: Index -1: unannotatedtypeaccess
1326+ extractVariableExpr(catchClause.catchParameter, callable, catchId, 0 )
1327+ extractExpressionExpr(catchClause.result, callable, catchId, 1 )
1328+ }
1329+ }
13061330 is IrContainerExpression -> {
13071331 val stmtParent = parent.stmt(e, callable)
13081332 val id = tw.getFreshIdLabel<DbBlock >()
0 commit comments