mirror of
https://github.com/github/codeql.git
synced 2026-04-30 19:26:02 +02:00
Kotlin: Add writeCallableEnclosingExpr calls
This commit is contained in:
@@ -1227,11 +1227,13 @@ open class KotlinFileExtractor(
|
||||
val type = useType(initializer.expression.type)
|
||||
tw.writeExprs_assignexpr(assignmentId, type.javaResult.id, type.kotlinResult.id, stmtId, 0)
|
||||
tw.writeHasLocation(assignmentId, declLocId)
|
||||
tw.writeCallableEnclosingExpr(assignmentId, obinitId)
|
||||
|
||||
val lhsId = tw.getFreshIdLabel<DbVaraccess>()
|
||||
val lhsType = useType(backingField.type)
|
||||
tw.writeExprs_varaccess(lhsId, lhsType.javaResult.id, lhsType.kotlinResult.id, assignmentId, 0)
|
||||
tw.writeHasLocation(lhsId, declLocId)
|
||||
tw.writeCallableEnclosingExpr(lhsId, obinitId)
|
||||
val vId = useField(backingField)
|
||||
tw.writeVariableBinding(lhsId, vId)
|
||||
|
||||
@@ -1397,6 +1399,7 @@ open class KotlinFileExtractor(
|
||||
tw.writeHasLocation(varId, locId)
|
||||
tw.writeExprs_localvariabledeclexpr(exprId, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(exprId, locId)
|
||||
tw.writeCallableEnclosingExpr(exprId, callable)
|
||||
val i = v.initializer
|
||||
if(i != null) {
|
||||
extractExpressionExpr(i, callable, exprId, 0)
|
||||
@@ -1425,6 +1428,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_addexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == MINUS -> {
|
||||
val id = tw.getFreshIdLabel<DbSubexpr>()
|
||||
@@ -1432,6 +1436,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_subexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == DIV -> {
|
||||
val id = tw.getFreshIdLabel<DbDivexpr>()
|
||||
@@ -1439,6 +1444,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_divexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == PERC -> {
|
||||
val id = tw.getFreshIdLabel<DbRemexpr>()
|
||||
@@ -1446,6 +1452,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_remexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == EQEQ -> {
|
||||
val id = tw.getFreshIdLabel<DbEqexpr>()
|
||||
@@ -1453,6 +1460,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_eqexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == EXCLEQ -> {
|
||||
val id = tw.getFreshIdLabel<DbNeexpr>()
|
||||
@@ -1460,6 +1468,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_neexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == LT -> {
|
||||
val id = tw.getFreshIdLabel<DbLtexpr>()
|
||||
@@ -1467,6 +1476,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_ltexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == LTEQ -> {
|
||||
val id = tw.getFreshIdLabel<DbLeexpr>()
|
||||
@@ -1474,6 +1484,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_leexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == GT -> {
|
||||
val id = tw.getFreshIdLabel<DbGtexpr>()
|
||||
@@ -1481,6 +1492,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_gtexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} c.origin == GTEQ -> {
|
||||
val id = tw.getFreshIdLabel<DbGeexpr>()
|
||||
@@ -1488,6 +1500,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(c)
|
||||
tw.writeExprs_geexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
id
|
||||
} else -> {
|
||||
val id = tw.getFreshIdLabel<DbMethodaccess>()
|
||||
@@ -1496,10 +1509,11 @@ open class KotlinFileExtractor(
|
||||
val methodId = useFunction<DbMethod>(c.symbol.owner)
|
||||
tw.writeExprs_methodaccess(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeCallableBinding(id, methodId)
|
||||
|
||||
// type arguments at index -2, -3, ...
|
||||
extractTypeArguments(c, id, -2, true)
|
||||
extractTypeArguments(c, id, callable, -2, true)
|
||||
id
|
||||
}
|
||||
}
|
||||
@@ -1518,6 +1532,7 @@ open class KotlinFileExtractor(
|
||||
private fun extractTypeArguments(
|
||||
c: IrFunctionAccessExpression,
|
||||
id: Label<out DbExprparent>,
|
||||
callable: Label<out DbCallable>,
|
||||
startIndex: Int = 0,
|
||||
reverse: Boolean = false
|
||||
) {
|
||||
@@ -1527,6 +1542,7 @@ open class KotlinFileExtractor(
|
||||
val argId = tw.getFreshIdLabel<DbUnannotatedtypeaccess>()
|
||||
val mul = if (reverse) -1 else 1
|
||||
tw.writeExprs_unannotatedtypeaccess(argId, argType.javaResult.id, argType.kotlinResult.id, id, argIdx * mul + startIndex)
|
||||
tw.writeCallableEnclosingExpr(argId, callable)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1542,6 +1558,7 @@ open class KotlinFileExtractor(
|
||||
val methodId = useFunction<DbConstructor>(e.symbol.owner)
|
||||
tw.writeExprs_newexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeCallableBinding(id, methodId)
|
||||
for (i in 0 until e.valueArgumentsCount) {
|
||||
val arg = e.getValueArgument(i)
|
||||
@@ -1557,7 +1574,8 @@ open class KotlinFileExtractor(
|
||||
if (e.typeArgumentsCount > 0) {
|
||||
val typeAccessId = tw.getFreshIdLabel<DbUnannotatedtypeaccess>()
|
||||
tw.writeExprs_unannotatedtypeaccess(typeAccessId, type.javaResult.id, type.kotlinResult.id, id, -3)
|
||||
extractTypeArguments(e, typeAccessId)
|
||||
tw.writeCallableEnclosingExpr(typeAccessId, callable)
|
||||
extractTypeArguments(e, typeAccessId, callable)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1589,6 +1607,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_stmtexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
return StmtParent(id, 0)
|
||||
}
|
||||
override fun expr(e: IrExpression, callable: Label<out DbCallable>): ExprParent {
|
||||
@@ -1751,6 +1770,7 @@ open class KotlinFileExtractor(
|
||||
val methodId = tw.getLabelFor<DbMethod>(methodLabel)
|
||||
tw.writeExprs_methodaccess(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeCallableBinding(id, methodId)
|
||||
}
|
||||
is IrConstructorCall -> {
|
||||
@@ -1772,6 +1792,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_stringtemplateexpr(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
e.arguments.forEachIndexed { i, a ->
|
||||
extractExpressionExpr(a, callable, id, i)
|
||||
}
|
||||
@@ -1786,6 +1807,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_integerliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
} is Long -> {
|
||||
val id = tw.getFreshIdLabel<DbLongliteral>()
|
||||
@@ -1793,6 +1815,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_longliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
} is Float -> {
|
||||
val id = tw.getFreshIdLabel<DbFloatingpointliteral>()
|
||||
@@ -1800,6 +1823,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_floatingpointliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
} is Double -> {
|
||||
val id = tw.getFreshIdLabel<DbDoubleliteral>()
|
||||
@@ -1807,6 +1831,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_doubleliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
} is Boolean -> {
|
||||
val id = tw.getFreshIdLabel<DbBooleanliteral>()
|
||||
@@ -1814,6 +1839,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_booleanliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
} is Char -> {
|
||||
val id = tw.getFreshIdLabel<DbCharacterliteral>()
|
||||
@@ -1821,6 +1847,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_characterliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
} is String -> {
|
||||
val id = tw.getFreshIdLabel<DbStringliteral>()
|
||||
@@ -1828,6 +1855,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_stringliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
tw.writeNamestrings(v.toString(), v.toString(), id)
|
||||
}
|
||||
null -> {
|
||||
@@ -1836,6 +1864,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_nullliteral(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
}
|
||||
else -> {
|
||||
logger.warnElement(Severity.ErrorSevere, "Unrecognised IrConst: " + v.javaClass, e)
|
||||
@@ -1855,12 +1884,14 @@ open class KotlinFileExtractor(
|
||||
logger.warnElement(Severity.ErrorSevere, "TODO: Qualified this access found.", e)
|
||||
}
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
} else {
|
||||
val id = tw.getFreshIdLabel<DbVaraccess>()
|
||||
val type = useType(e.type)
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_varaccess(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
|
||||
val vId = useValueDeclaration(owner)
|
||||
tw.writeVariableBinding(id, vId)
|
||||
@@ -1873,6 +1904,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_varaccess(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
val owner = e.symbol.owner
|
||||
val vId = useEnumEntry(owner)
|
||||
tw.writeVariableBinding(id, vId)
|
||||
@@ -1884,11 +1916,13 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_assignexpr(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
|
||||
val lhsId = tw.getFreshIdLabel<DbVaraccess>()
|
||||
val lhsType = useType(e.symbol.owner.type)
|
||||
tw.writeExprs_varaccess(lhsId, lhsType.javaResult.id, lhsType.kotlinResult.id, id, 0)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(lhsId, callable)
|
||||
val vId = useValueDeclaration(e.symbol.owner)
|
||||
tw.writeVariableBinding(lhsId, vId)
|
||||
|
||||
@@ -1901,6 +1935,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_whenexpr(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
if(e.origin == IF) {
|
||||
tw.writeWhen_if(id)
|
||||
}
|
||||
@@ -1923,6 +1958,7 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_getclassexpr(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractExpressionExpr(e.argument, callable, id, 0)
|
||||
}
|
||||
is IrTypeOperatorCall -> {
|
||||
@@ -1936,6 +1972,7 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_varargexpr(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
e.elements.forEachIndexed { i, arg -> extractVarargElement(arg, callable, id, i) }
|
||||
}
|
||||
is IrGetObjectValue -> {
|
||||
@@ -1952,6 +1989,7 @@ open class KotlinFileExtractor(
|
||||
val locId = tw.getLocation(e)
|
||||
tw.writeExprs_varaccess(id, type.javaResult.id, type.kotlinResult.id, exprParent.parent, exprParent.idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
|
||||
tw.writeVariableBinding(id, instance.id)
|
||||
}
|
||||
@@ -1981,7 +2019,7 @@ open class KotlinFileExtractor(
|
||||
return id
|
||||
}
|
||||
|
||||
fun extractTypeAccess(t: IrType, parent: Label<out DbExprparent>, idx: Int, elementForLocation: IrElement) {
|
||||
fun extractTypeAccess(t: IrType, callable: Label<out DbCallable>, parent: Label<out DbExprparent>, idx: Int, elementForLocation: IrElement) {
|
||||
// TODO: elementForLocation allows us to give some sort of
|
||||
// location, but a proper location for the type access will
|
||||
// require upstream changes
|
||||
@@ -1990,6 +2028,7 @@ open class KotlinFileExtractor(
|
||||
tw.writeExprs_unannotatedtypeaccess(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
val locId = tw.getLocation(elementForLocation)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
}
|
||||
|
||||
fun extractTypeOperatorCall(e: IrTypeOperatorCall, callable: Label<out DbCallable>, parent: Label<out DbExprparent>, idx: Int) {
|
||||
@@ -2000,7 +2039,8 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_castexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
extractTypeAccess(e.typeOperand, id, 0, e)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractTypeAccess(e.typeOperand, callable, id, 0, e)
|
||||
extractExpressionExpr(e.argument, callable, id, 1)
|
||||
}
|
||||
IrTypeOperator.IMPLICIT_CAST -> {
|
||||
@@ -2010,7 +2050,8 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_castexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
extractTypeAccess(e.typeOperand, id, 0, e)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractTypeAccess(e.typeOperand, callable, id, 0, e)
|
||||
extractExpressionExpr(e.argument, callable, id, 1)
|
||||
}
|
||||
IrTypeOperator.IMPLICIT_NOTNULL -> {
|
||||
@@ -2020,7 +2061,8 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_castexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
extractTypeAccess(e.typeOperand, id, 0, e)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractTypeAccess(e.typeOperand, callable, id, 0, e)
|
||||
extractExpressionExpr(e.argument, callable, id, 1)
|
||||
}
|
||||
IrTypeOperator.IMPLICIT_COERCION_TO_UNIT -> {
|
||||
@@ -2030,7 +2072,8 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_castexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
extractTypeAccess(e.typeOperand, id, 0, e)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractTypeAccess(e.typeOperand, callable, id, 0, e)
|
||||
extractExpressionExpr(e.argument, callable, id, 1)
|
||||
}
|
||||
IrTypeOperator.INSTANCEOF -> {
|
||||
@@ -2039,8 +2082,9 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_instanceofexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractExpressionExpr(e.argument, callable, id, 0)
|
||||
extractTypeAccess(e.typeOperand, id, 1, e)
|
||||
extractTypeAccess(e.typeOperand, callable, id, 1, e)
|
||||
}
|
||||
IrTypeOperator.NOT_INSTANCEOF -> {
|
||||
val id = tw.getFreshIdLabel<DbNotinstanceofexpr>()
|
||||
@@ -2048,8 +2092,9 @@ open class KotlinFileExtractor(
|
||||
val type = useType(e.type)
|
||||
tw.writeExprs_notinstanceofexpr(id, type.javaResult.id, type.kotlinResult.id, parent, idx)
|
||||
tw.writeHasLocation(id, locId)
|
||||
tw.writeCallableEnclosingExpr(id, callable)
|
||||
extractExpressionExpr(e.argument, callable, id, 0)
|
||||
extractTypeAccess(e.typeOperand, id, 1, e)
|
||||
extractTypeAccess(e.typeOperand, callable, id, 1, e)
|
||||
}
|
||||
else -> {
|
||||
logger.warnElement(Severity.ErrorSevere, "Unrecognised IrTypeOperatorCall: " + e.render(), e)
|
||||
|
||||
@@ -1,181 +1,181 @@
|
||||
| exprs.kt:5:5:5:14 | i1 | LocalVariableDeclExpr |
|
||||
| exprs.kt:5:14:5:14 | 1 | IntegerLiteral |
|
||||
| exprs.kt:6:5:6:18 | i2 | LocalVariableDeclExpr |
|
||||
| exprs.kt:6:14:6:14 | x | VarAccess |
|
||||
| exprs.kt:6:14:6:18 | ... + ... | AddExpr |
|
||||
| exprs.kt:6:18:6:18 | y | VarAccess |
|
||||
| exprs.kt:7:5:7:18 | i3 | LocalVariableDeclExpr |
|
||||
| exprs.kt:7:14:7:14 | x | VarAccess |
|
||||
| exprs.kt:7:14:7:18 | ... - ... | SubExpr |
|
||||
| exprs.kt:7:18:7:18 | y | VarAccess |
|
||||
| exprs.kt:8:5:8:18 | i4 | LocalVariableDeclExpr |
|
||||
| exprs.kt:8:14:8:14 | x | VarAccess |
|
||||
| exprs.kt:8:14:8:18 | ... / ... | DivExpr |
|
||||
| exprs.kt:8:18:8:18 | y | VarAccess |
|
||||
| exprs.kt:9:5:9:18 | i5 | LocalVariableDeclExpr |
|
||||
| exprs.kt:9:14:9:14 | x | VarAccess |
|
||||
| exprs.kt:9:14:9:18 | ... % ... | RemExpr |
|
||||
| exprs.kt:9:18:9:18 | y | VarAccess |
|
||||
| exprs.kt:20:5:20:20 | i13 | LocalVariableDeclExpr |
|
||||
| exprs.kt:20:15:20:15 | x | VarAccess |
|
||||
| exprs.kt:20:15:20:20 | ... == ... | EQExpr |
|
||||
| exprs.kt:20:20:20:20 | y | VarAccess |
|
||||
| exprs.kt:21:5:21:20 | i14 | LocalVariableDeclExpr |
|
||||
| exprs.kt:21:15:21:15 | x | VarAccess |
|
||||
| exprs.kt:21:15:21:20 | ... != ... | NEExpr |
|
||||
| exprs.kt:21:15:21:20 | ... != ... | NEExpr |
|
||||
| exprs.kt:21:20:21:20 | y | VarAccess |
|
||||
| exprs.kt:22:5:22:19 | i15 | LocalVariableDeclExpr |
|
||||
| exprs.kt:22:15:22:15 | x | VarAccess |
|
||||
| exprs.kt:22:15:22:19 | ... < ... | LTExpr |
|
||||
| exprs.kt:22:19:22:19 | y | VarAccess |
|
||||
| exprs.kt:23:5:23:20 | i16 | LocalVariableDeclExpr |
|
||||
| exprs.kt:23:15:23:15 | x | VarAccess |
|
||||
| exprs.kt:23:15:23:20 | ... <= ... | LEExpr |
|
||||
| exprs.kt:23:20:23:20 | y | VarAccess |
|
||||
| exprs.kt:24:5:24:19 | i17 | LocalVariableDeclExpr |
|
||||
| exprs.kt:24:15:24:15 | x | VarAccess |
|
||||
| exprs.kt:24:15:24:19 | ... > ... | GTExpr |
|
||||
| exprs.kt:24:19:24:19 | y | VarAccess |
|
||||
| exprs.kt:25:5:25:20 | i18 | LocalVariableDeclExpr |
|
||||
| exprs.kt:25:15:25:15 | x | VarAccess |
|
||||
| exprs.kt:25:15:25:20 | ... >= ... | GEExpr |
|
||||
| exprs.kt:25:20:25:20 | y | VarAccess |
|
||||
| exprs.kt:31:5:31:17 | b1 | LocalVariableDeclExpr |
|
||||
| exprs.kt:31:14:31:17 | true | BooleanLiteral |
|
||||
| exprs.kt:32:5:32:18 | b2 | LocalVariableDeclExpr |
|
||||
| exprs.kt:32:14:32:18 | false | BooleanLiteral |
|
||||
| exprs.kt:39:5:39:15 | c | LocalVariableDeclExpr |
|
||||
| exprs.kt:39:13:39:15 | x | CharacterLiteral |
|
||||
| exprs.kt:40:5:40:26 | str | LocalVariableDeclExpr |
|
||||
| exprs.kt:40:16:40:25 | string lit | StringLiteral |
|
||||
| exprs.kt:41:5:41:38 | strWithQuote | LocalVariableDeclExpr |
|
||||
| exprs.kt:41:25:41:37 | string " lit | StringLiteral |
|
||||
| exprs.kt:42:5:42:22 | b6 | LocalVariableDeclExpr |
|
||||
| exprs.kt:42:14:42:15 | i1 | VarAccess |
|
||||
| exprs.kt:42:14:42:22 | ...instanceof... | InstanceOfExpr |
|
||||
| exprs.kt:42:14:42:22 | int | TypeAccess |
|
||||
| exprs.kt:43:5:43:23 | b7 | LocalVariableDeclExpr |
|
||||
| exprs.kt:43:14:43:15 | i1 | VarAccess |
|
||||
| exprs.kt:43:14:43:23 | ... !is ... | NotInstanceOfExpr |
|
||||
| exprs.kt:43:14:43:23 | int | TypeAccess |
|
||||
| exprs.kt:44:5:44:26 | b8 | LocalVariableDeclExpr |
|
||||
| exprs.kt:44:14:44:15 | b7 | VarAccess |
|
||||
| exprs.kt:44:14:44:26 | (...)... | CastExpr |
|
||||
| exprs.kt:44:14:44:26 | boolean | TypeAccess |
|
||||
| exprs.kt:45:5:45:35 | str1 | LocalVariableDeclExpr |
|
||||
| exprs.kt:45:25:45:34 | string lit | StringLiteral |
|
||||
| exprs.kt:46:5:46:36 | str2 | LocalVariableDeclExpr |
|
||||
| exprs.kt:46:26:46:35 | string lit | StringLiteral |
|
||||
| exprs.kt:47:5:47:28 | str3 | LocalVariableDeclExpr |
|
||||
| exprs.kt:47:25:47:28 | null | NullLiteral |
|
||||
| exprs.kt:48:5:48:48 | str4 | LocalVariableDeclExpr |
|
||||
| exprs.kt:48:24:48:48 | "..." | StringTemplateExpr |
|
||||
| exprs.kt:48:25:48:28 | foo | StringLiteral |
|
||||
| exprs.kt:48:30:48:33 | str1 | VarAccess |
|
||||
| exprs.kt:48:34:48:38 | bar | StringLiteral |
|
||||
| exprs.kt:48:40:48:43 | str2 | VarAccess |
|
||||
| exprs.kt:48:44:48:47 | baz | StringLiteral |
|
||||
| exprs.kt:49:5:49:66 | str5 | LocalVariableDeclExpr |
|
||||
| exprs.kt:49:24:49:66 | "..." | StringTemplateExpr |
|
||||
| exprs.kt:49:25:49:28 | foo | StringLiteral |
|
||||
| exprs.kt:49:31:49:34 | str1 | VarAccess |
|
||||
| exprs.kt:49:31:49:41 | ... + ... | AddExpr |
|
||||
| exprs.kt:49:38:49:41 | str2 | VarAccess |
|
||||
| exprs.kt:49:43:49:47 | bar | StringLiteral |
|
||||
| exprs.kt:49:50:49:60 | ... + ... | AddExpr |
|
||||
| exprs.kt:49:57:49:60 | str1 | VarAccess |
|
||||
| exprs.kt:49:62:49:65 | baz | StringLiteral |
|
||||
| exprs.kt:50:5:50:26 | str6 | LocalVariableDeclExpr |
|
||||
| exprs.kt:50:16:50:19 | str1 | VarAccess |
|
||||
| exprs.kt:50:16:50:26 | ... + ... | AddExpr |
|
||||
| exprs.kt:50:23:50:26 | str2 | VarAccess |
|
||||
| exprs.kt:52:5:52:21 | variable | LocalVariableDeclExpr |
|
||||
| exprs.kt:52:20:52:21 | 10 | IntegerLiteral |
|
||||
| exprs.kt:53:12:53:19 | variable | VarAccess |
|
||||
| exprs.kt:53:12:53:23 | ... > ... | GTExpr |
|
||||
| exprs.kt:53:23:53:23 | 0 | IntegerLiteral |
|
||||
| exprs.kt:54:9:54:16 | ...=... | AssignExpr |
|
||||
| exprs.kt:54:9:54:16 | variable | VarAccess |
|
||||
| exprs.kt:54:9:54:18 | (...)... | CastExpr |
|
||||
| exprs.kt:54:9:54:18 | <Stmt> | StmtExpr |
|
||||
| exprs.kt:54:9:54:18 | dec(...) | MethodAccess |
|
||||
| exprs.kt:54:9:54:18 | tmp0 | VarAccess |
|
||||
| exprs.kt:54:9:54:18 | tmp0 | VarAccess |
|
||||
| exprs.kt:54:9:54:18 | void | TypeAccess |
|
||||
| exprs.kt:57:12:57:14 | 123 | IntegerLiteral |
|
||||
| exprs.kt:57:12:57:20 | ... + ... | AddExpr |
|
||||
| exprs.kt:57:18:57:20 | 456 | IntegerLiteral |
|
||||
| exprs.kt:61:5:61:23 | d | LocalVariableDeclExpr |
|
||||
| exprs.kt:61:13:61:16 | true | BooleanLiteral |
|
||||
| exprs.kt:61:13:61:23 | ::class | ClassExpr |
|
||||
| exprs.kt:64:1:66:1 | <obinit>(...) | MethodAccess |
|
||||
| exprs.kt:64:9:64:18 | ...=... | AssignExpr |
|
||||
| exprs.kt:64:9:64:18 | n | VarAccess |
|
||||
| exprs.kt:64:9:64:18 | n | VarAccess |
|
||||
| exprs.kt:65:27:65:31 | new C(...) | ClassInstanceExpr |
|
||||
| exprs.kt:65:29:65:30 | 42 | IntegerLiteral |
|
||||
| exprs.kt:68:1:68:18 | <obinit>(...) | MethodAccess |
|
||||
| exprs.kt:69:1:69:26 | <obinit>(...) | MethodAccess |
|
||||
| exprs.kt:70:1:70:26 | <obinit>(...) | MethodAccess |
|
||||
| exprs.kt:73:5:75:5 | when ... | WhenExpr |
|
||||
| exprs.kt:73:8:73:8 | x | VarAccess |
|
||||
| exprs.kt:73:8:73:21 | ...instanceof... | InstanceOfExpr |
|
||||
| exprs.kt:73:8:73:21 | Subclass1 | TypeAccess |
|
||||
| exprs.kt:74:9:74:29 | x1 | LocalVariableDeclExpr |
|
||||
| exprs.kt:74:29:74:29 | (...)... | CastExpr |
|
||||
| exprs.kt:74:29:74:29 | Subclass1 | TypeAccess |
|
||||
| exprs.kt:74:29:74:29 | x | VarAccess |
|
||||
| exprs.kt:76:5:76:60 | y1 | LocalVariableDeclExpr |
|
||||
| exprs.kt:76:25:76:60 | true | BooleanLiteral |
|
||||
| exprs.kt:76:25:76:60 | when ... | WhenExpr |
|
||||
| exprs.kt:76:29:76:29 | x | VarAccess |
|
||||
| exprs.kt:76:29:76:42 | ...instanceof... | InstanceOfExpr |
|
||||
| exprs.kt:76:29:76:42 | Subclass1 | TypeAccess |
|
||||
| exprs.kt:76:45:76:49 | (...)... | CastExpr |
|
||||
| exprs.kt:76:45:76:49 | <Stmt> | StmtExpr |
|
||||
| exprs.kt:76:45:76:49 | Subclass1 | TypeAccess |
|
||||
| exprs.kt:76:47:76:47 | x | VarAccess |
|
||||
| exprs.kt:76:58:76:58 | y | VarAccess |
|
||||
| exprs.kt:77:5:77:13 | q | LocalVariableDeclExpr |
|
||||
| exprs.kt:77:13:77:13 | 1 | IntegerLiteral |
|
||||
| exprs.kt:78:5:78:48 | true | BooleanLiteral |
|
||||
| exprs.kt:78:5:78:48 | when ... | WhenExpr |
|
||||
| exprs.kt:78:9:78:9 | x | VarAccess |
|
||||
| exprs.kt:78:9:78:22 | ...instanceof... | InstanceOfExpr |
|
||||
| exprs.kt:78:9:78:22 | Subclass1 | TypeAccess |
|
||||
| exprs.kt:78:27:78:27 | ...=... | AssignExpr |
|
||||
| exprs.kt:78:31:78:31 | 2 | IntegerLiteral |
|
||||
| exprs.kt:78:42:78:42 | ...=... | AssignExpr |
|
||||
| exprs.kt:78:46:78:46 | 3 | IntegerLiteral |
|
||||
| exprs.kt:82:5:82:25 | r | LocalVariableDeclExpr |
|
||||
| exprs.kt:82:13:82:13 | p | VarAccess |
|
||||
| exprs.kt:82:15:82:25 | getBounds(...) | MethodAccess |
|
||||
| exprs.kt:83:5:85:5 | when ... | WhenExpr |
|
||||
| exprs.kt:83:8:83:8 | r | VarAccess |
|
||||
| exprs.kt:83:8:83:16 | ... != ... | NEExpr |
|
||||
| exprs.kt:83:8:83:16 | ... != ... | NEExpr |
|
||||
| exprs.kt:83:13:83:16 | null | NullLiteral |
|
||||
| exprs.kt:84:9:84:29 | r2 | LocalVariableDeclExpr |
|
||||
| exprs.kt:84:29:84:29 | (...)... | CastExpr |
|
||||
| exprs.kt:84:29:84:29 | Rectangle | TypeAccess |
|
||||
| exprs.kt:84:29:84:29 | r | VarAccess |
|
||||
| exprs.kt:88:1:90:1 | <obinit>(...) | MethodAccess |
|
||||
| exprs.kt:88:1:90:1 | new Enum(...) | ClassInstanceExpr |
|
||||
| exprs.kt:92:1:96:1 | <obinit>(...) | MethodAccess |
|
||||
| exprs.kt:92:1:96:1 | new Enum(...) | ClassInstanceExpr |
|
||||
| exprs.kt:92:18:92:29 | ...=... | AssignExpr |
|
||||
| exprs.kt:92:18:92:29 | rgb | VarAccess |
|
||||
| exprs.kt:92:18:92:29 | rgb | VarAccess |
|
||||
| exprs.kt:99:5:99:31 | south | LocalVariableDeclExpr |
|
||||
| exprs.kt:99:27:99:31 | SOUTH | VarAccess |
|
||||
| exprs.kt:100:5:100:27 | green | LocalVariableDeclExpr |
|
||||
| exprs.kt:100:23:100:27 | GREEN | VarAccess |
|
||||
| file://:0:0:0:0 | Color | TypeAccess |
|
||||
| file://:0:0:0:0 | Direction | TypeAccess |
|
||||
| file://:0:0:0:0 | q | VarAccess |
|
||||
| file://:0:0:0:0 | q | VarAccess |
|
||||
| file://:0:0:0:0 | tmp0 | LocalVariableDeclExpr |
|
||||
| file://:0:0:0:0 | variable | VarAccess |
|
||||
| file://:0:0:0:0 | void | TypeAccess |
|
||||
| file://:0:0:0:0 | void | TypeAccess |
|
||||
| exprs.kt:5:5:5:14 | i1 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:5:14:5:14 | 1 | exprs.kt:4:1:58:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:6:5:6:18 | i2 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:6:14:6:14 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:6:14:6:18 | ... + ... | exprs.kt:4:1:58:1 | topLevelMethod | AddExpr |
|
||||
| exprs.kt:6:18:6:18 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:7:5:7:18 | i3 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:7:14:7:14 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:7:14:7:18 | ... - ... | exprs.kt:4:1:58:1 | topLevelMethod | SubExpr |
|
||||
| exprs.kt:7:18:7:18 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:8:5:8:18 | i4 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:8:14:8:14 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:8:14:8:18 | ... / ... | exprs.kt:4:1:58:1 | topLevelMethod | DivExpr |
|
||||
| exprs.kt:8:18:8:18 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:9:5:9:18 | i5 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:9:14:9:14 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:9:14:9:18 | ... % ... | exprs.kt:4:1:58:1 | topLevelMethod | RemExpr |
|
||||
| exprs.kt:9:18:9:18 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:20:5:20:20 | i13 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:20:15:20:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:20:15:20:20 | ... == ... | exprs.kt:4:1:58:1 | topLevelMethod | EQExpr |
|
||||
| exprs.kt:20:20:20:20 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:21:5:21:20 | i14 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:21:15:21:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:21:15:21:20 | ... != ... | exprs.kt:4:1:58:1 | topLevelMethod | NEExpr |
|
||||
| exprs.kt:21:15:21:20 | ... != ... | exprs.kt:4:1:58:1 | topLevelMethod | NEExpr |
|
||||
| exprs.kt:21:20:21:20 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:22:5:22:19 | i15 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:22:15:22:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:22:15:22:19 | ... < ... | exprs.kt:4:1:58:1 | topLevelMethod | LTExpr |
|
||||
| exprs.kt:22:19:22:19 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:23:5:23:20 | i16 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:23:15:23:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:23:15:23:20 | ... <= ... | exprs.kt:4:1:58:1 | topLevelMethod | LEExpr |
|
||||
| exprs.kt:23:20:23:20 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:24:5:24:19 | i17 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:24:15:24:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:24:15:24:19 | ... > ... | exprs.kt:4:1:58:1 | topLevelMethod | GTExpr |
|
||||
| exprs.kt:24:19:24:19 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:25:5:25:20 | i18 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:25:15:25:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:25:15:25:20 | ... >= ... | exprs.kt:4:1:58:1 | topLevelMethod | GEExpr |
|
||||
| exprs.kt:25:20:25:20 | y | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:31:5:31:17 | b1 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:31:14:31:17 | true | exprs.kt:4:1:58:1 | topLevelMethod | BooleanLiteral |
|
||||
| exprs.kt:32:5:32:18 | b2 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:32:14:32:18 | false | exprs.kt:4:1:58:1 | topLevelMethod | BooleanLiteral |
|
||||
| exprs.kt:39:5:39:15 | c | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:39:13:39:15 | x | exprs.kt:4:1:58:1 | topLevelMethod | CharacterLiteral |
|
||||
| exprs.kt:40:5:40:26 | str | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:40:16:40:25 | string lit | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:41:5:41:38 | strWithQuote | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:41:25:41:37 | string " lit | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:42:5:42:22 | b6 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:42:14:42:15 | i1 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:42:14:42:22 | ...instanceof... | exprs.kt:4:1:58:1 | topLevelMethod | InstanceOfExpr |
|
||||
| exprs.kt:42:14:42:22 | int | exprs.kt:4:1:58:1 | topLevelMethod | TypeAccess |
|
||||
| exprs.kt:43:5:43:23 | b7 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:43:14:43:15 | i1 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:43:14:43:23 | ... !is ... | exprs.kt:4:1:58:1 | topLevelMethod | NotInstanceOfExpr |
|
||||
| exprs.kt:43:14:43:23 | int | exprs.kt:4:1:58:1 | topLevelMethod | TypeAccess |
|
||||
| exprs.kt:44:5:44:26 | b8 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:44:14:44:15 | b7 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:44:14:44:26 | (...)... | exprs.kt:4:1:58:1 | topLevelMethod | CastExpr |
|
||||
| exprs.kt:44:14:44:26 | boolean | exprs.kt:4:1:58:1 | topLevelMethod | TypeAccess |
|
||||
| exprs.kt:45:5:45:35 | str1 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:45:25:45:34 | string lit | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:46:5:46:36 | str2 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:46:26:46:35 | string lit | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:47:5:47:28 | str3 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:47:25:47:28 | null | exprs.kt:4:1:58:1 | topLevelMethod | NullLiteral |
|
||||
| exprs.kt:48:5:48:48 | str4 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:48:24:48:48 | "..." | exprs.kt:4:1:58:1 | topLevelMethod | StringTemplateExpr |
|
||||
| exprs.kt:48:25:48:28 | foo | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:48:30:48:33 | str1 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:48:34:48:38 | bar | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:48:40:48:43 | str2 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:48:44:48:47 | baz | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:49:5:49:66 | str5 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:49:24:49:66 | "..." | exprs.kt:4:1:58:1 | topLevelMethod | StringTemplateExpr |
|
||||
| exprs.kt:49:25:49:28 | foo | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:49:31:49:34 | str1 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:49:31:49:41 | ... + ... | exprs.kt:4:1:58:1 | topLevelMethod | AddExpr |
|
||||
| exprs.kt:49:38:49:41 | str2 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:49:43:49:47 | bar | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:49:50:49:60 | ... + ... | exprs.kt:4:1:58:1 | topLevelMethod | AddExpr |
|
||||
| exprs.kt:49:57:49:60 | str1 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:49:62:49:65 | baz | exprs.kt:4:1:58:1 | topLevelMethod | StringLiteral |
|
||||
| exprs.kt:50:5:50:26 | str6 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:50:16:50:19 | str1 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:50:16:50:26 | ... + ... | exprs.kt:4:1:58:1 | topLevelMethod | AddExpr |
|
||||
| exprs.kt:50:23:50:26 | str2 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:52:5:52:21 | variable | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| exprs.kt:52:20:52:21 | 10 | exprs.kt:4:1:58:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:53:12:53:19 | variable | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:53:12:53:23 | ... > ... | exprs.kt:4:1:58:1 | topLevelMethod | GTExpr |
|
||||
| exprs.kt:53:23:53:23 | 0 | exprs.kt:4:1:58:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:54:9:54:16 | ...=... | exprs.kt:4:1:58:1 | topLevelMethod | AssignExpr |
|
||||
| exprs.kt:54:9:54:16 | variable | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:54:9:54:18 | (...)... | exprs.kt:4:1:58:1 | topLevelMethod | CastExpr |
|
||||
| exprs.kt:54:9:54:18 | <Stmt> | exprs.kt:4:1:58:1 | topLevelMethod | StmtExpr |
|
||||
| exprs.kt:54:9:54:18 | dec(...) | exprs.kt:4:1:58:1 | topLevelMethod | MethodAccess |
|
||||
| exprs.kt:54:9:54:18 | tmp0 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:54:9:54:18 | tmp0 | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| exprs.kt:54:9:54:18 | void | exprs.kt:4:1:58:1 | topLevelMethod | TypeAccess |
|
||||
| exprs.kt:57:12:57:14 | 123 | exprs.kt:4:1:58:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:57:12:57:20 | ... + ... | exprs.kt:4:1:58:1 | topLevelMethod | AddExpr |
|
||||
| exprs.kt:57:18:57:20 | 456 | exprs.kt:4:1:58:1 | topLevelMethod | IntegerLiteral |
|
||||
| exprs.kt:61:5:61:23 | d | exprs.kt:60:1:62:1 | getClass | LocalVariableDeclExpr |
|
||||
| exprs.kt:61:13:61:16 | true | exprs.kt:60:1:62:1 | getClass | BooleanLiteral |
|
||||
| exprs.kt:61:13:61:23 | ::class | exprs.kt:60:1:62:1 | getClass | ClassExpr |
|
||||
| exprs.kt:64:1:66:1 | <obinit>(...) | exprs.kt:64:1:66:1 | C | MethodAccess |
|
||||
| exprs.kt:64:9:64:18 | ...=... | exprs.kt:64:1:66:1 | <obinit> | AssignExpr |
|
||||
| exprs.kt:64:9:64:18 | n | exprs.kt:64:1:66:1 | <obinit> | VarAccess |
|
||||
| exprs.kt:64:9:64:18 | n | exprs.kt:64:1:66:1 | <obinit> | VarAccess |
|
||||
| exprs.kt:65:27:65:31 | new C(...) | exprs.kt:65:5:65:33 | foo | ClassInstanceExpr |
|
||||
| exprs.kt:65:29:65:30 | 42 | exprs.kt:65:5:65:33 | foo | IntegerLiteral |
|
||||
| exprs.kt:68:1:68:18 | <obinit>(...) | exprs.kt:68:6:68:18 | Root | MethodAccess |
|
||||
| exprs.kt:69:1:69:26 | <obinit>(...) | exprs.kt:69:1:69:26 | Subclass1 | MethodAccess |
|
||||
| exprs.kt:70:1:70:26 | <obinit>(...) | exprs.kt:70:1:70:26 | Subclass2 | MethodAccess |
|
||||
| exprs.kt:73:5:75:5 | when ... | exprs.kt:72:1:79:1 | typeTests | WhenExpr |
|
||||
| exprs.kt:73:8:73:8 | x | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| exprs.kt:73:8:73:21 | ...instanceof... | exprs.kt:72:1:79:1 | typeTests | InstanceOfExpr |
|
||||
| exprs.kt:73:8:73:21 | Subclass1 | exprs.kt:72:1:79:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:74:9:74:29 | x1 | exprs.kt:72:1:79:1 | typeTests | LocalVariableDeclExpr |
|
||||
| exprs.kt:74:29:74:29 | (...)... | exprs.kt:72:1:79:1 | typeTests | CastExpr |
|
||||
| exprs.kt:74:29:74:29 | Subclass1 | exprs.kt:72:1:79:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:74:29:74:29 | x | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| exprs.kt:76:5:76:60 | y1 | exprs.kt:72:1:79:1 | typeTests | LocalVariableDeclExpr |
|
||||
| exprs.kt:76:25:76:60 | true | exprs.kt:72:1:79:1 | typeTests | BooleanLiteral |
|
||||
| exprs.kt:76:25:76:60 | when ... | exprs.kt:72:1:79:1 | typeTests | WhenExpr |
|
||||
| exprs.kt:76:29:76:29 | x | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| exprs.kt:76:29:76:42 | ...instanceof... | exprs.kt:72:1:79:1 | typeTests | InstanceOfExpr |
|
||||
| exprs.kt:76:29:76:42 | Subclass1 | exprs.kt:72:1:79:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:76:45:76:49 | (...)... | exprs.kt:72:1:79:1 | typeTests | CastExpr |
|
||||
| exprs.kt:76:45:76:49 | <Stmt> | exprs.kt:72:1:79:1 | typeTests | StmtExpr |
|
||||
| exprs.kt:76:45:76:49 | Subclass1 | exprs.kt:72:1:79:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:76:47:76:47 | x | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| exprs.kt:76:58:76:58 | y | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| exprs.kt:77:5:77:13 | q | exprs.kt:72:1:79:1 | typeTests | LocalVariableDeclExpr |
|
||||
| exprs.kt:77:13:77:13 | 1 | exprs.kt:72:1:79:1 | typeTests | IntegerLiteral |
|
||||
| exprs.kt:78:5:78:48 | true | exprs.kt:72:1:79:1 | typeTests | BooleanLiteral |
|
||||
| exprs.kt:78:5:78:48 | when ... | exprs.kt:72:1:79:1 | typeTests | WhenExpr |
|
||||
| exprs.kt:78:9:78:9 | x | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| exprs.kt:78:9:78:22 | ...instanceof... | exprs.kt:72:1:79:1 | typeTests | InstanceOfExpr |
|
||||
| exprs.kt:78:9:78:22 | Subclass1 | exprs.kt:72:1:79:1 | typeTests | TypeAccess |
|
||||
| exprs.kt:78:27:78:27 | ...=... | exprs.kt:72:1:79:1 | typeTests | AssignExpr |
|
||||
| exprs.kt:78:31:78:31 | 2 | exprs.kt:72:1:79:1 | typeTests | IntegerLiteral |
|
||||
| exprs.kt:78:42:78:42 | ...=... | exprs.kt:72:1:79:1 | typeTests | AssignExpr |
|
||||
| exprs.kt:78:46:78:46 | 3 | exprs.kt:72:1:79:1 | typeTests | IntegerLiteral |
|
||||
| exprs.kt:82:5:82:25 | r | exprs.kt:81:1:86:1 | foo | LocalVariableDeclExpr |
|
||||
| exprs.kt:82:13:82:13 | p | exprs.kt:81:1:86:1 | foo | VarAccess |
|
||||
| exprs.kt:82:15:82:25 | getBounds(...) | exprs.kt:81:1:86:1 | foo | MethodAccess |
|
||||
| exprs.kt:83:5:85:5 | when ... | exprs.kt:81:1:86:1 | foo | WhenExpr |
|
||||
| exprs.kt:83:8:83:8 | r | exprs.kt:81:1:86:1 | foo | VarAccess |
|
||||
| exprs.kt:83:8:83:16 | ... != ... | exprs.kt:81:1:86:1 | foo | NEExpr |
|
||||
| exprs.kt:83:8:83:16 | ... != ... | exprs.kt:81:1:86:1 | foo | NEExpr |
|
||||
| exprs.kt:83:13:83:16 | null | exprs.kt:81:1:86:1 | foo | NullLiteral |
|
||||
| exprs.kt:84:9:84:29 | r2 | exprs.kt:81:1:86:1 | foo | LocalVariableDeclExpr |
|
||||
| exprs.kt:84:29:84:29 | (...)... | exprs.kt:81:1:86:1 | foo | CastExpr |
|
||||
| exprs.kt:84:29:84:29 | Rectangle | exprs.kt:81:1:86:1 | foo | TypeAccess |
|
||||
| exprs.kt:84:29:84:29 | r | exprs.kt:81:1:86:1 | foo | VarAccess |
|
||||
| exprs.kt:88:1:90:1 | <obinit>(...) | exprs.kt:88:6:90:1 | Direction | MethodAccess |
|
||||
| exprs.kt:88:1:90:1 | new Enum(...) | exprs.kt:88:6:90:1 | Direction | ClassInstanceExpr |
|
||||
| exprs.kt:92:1:96:1 | <obinit>(...) | exprs.kt:92:6:96:1 | Color | MethodAccess |
|
||||
| exprs.kt:92:1:96:1 | new Enum(...) | exprs.kt:92:6:96:1 | Color | ClassInstanceExpr |
|
||||
| exprs.kt:92:18:92:29 | ...=... | exprs.kt:92:1:96:1 | <obinit> | AssignExpr |
|
||||
| exprs.kt:92:18:92:29 | rgb | exprs.kt:92:1:96:1 | <obinit> | VarAccess |
|
||||
| exprs.kt:92:18:92:29 | rgb | exprs.kt:92:1:96:1 | <obinit> | VarAccess |
|
||||
| exprs.kt:99:5:99:31 | south | exprs.kt:98:1:101:1 | enums | LocalVariableDeclExpr |
|
||||
| exprs.kt:99:27:99:31 | SOUTH | exprs.kt:98:1:101:1 | enums | VarAccess |
|
||||
| exprs.kt:100:5:100:27 | green | exprs.kt:98:1:101:1 | enums | LocalVariableDeclExpr |
|
||||
| exprs.kt:100:23:100:27 | GREEN | exprs.kt:98:1:101:1 | enums | VarAccess |
|
||||
| file://:0:0:0:0 | Color | exprs.kt:92:6:96:1 | Color | TypeAccess |
|
||||
| file://:0:0:0:0 | Direction | exprs.kt:88:6:90:1 | Direction | TypeAccess |
|
||||
| file://:0:0:0:0 | q | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| file://:0:0:0:0 | q | exprs.kt:72:1:79:1 | typeTests | VarAccess |
|
||||
| file://:0:0:0:0 | tmp0 | exprs.kt:4:1:58:1 | topLevelMethod | LocalVariableDeclExpr |
|
||||
| file://:0:0:0:0 | variable | exprs.kt:4:1:58:1 | topLevelMethod | VarAccess |
|
||||
| file://:0:0:0:0 | void | exprs.kt:88:6:90:1 | Direction | TypeAccess |
|
||||
| file://:0:0:0:0 | void | exprs.kt:92:6:96:1 | Color | TypeAccess |
|
||||
|
||||
@@ -1,4 +1,34 @@
|
||||
import java
|
||||
|
||||
newtype TMaybeElement =
|
||||
TElement(Element e) or
|
||||
TNoElement()
|
||||
|
||||
class MaybeElement extends TMaybeElement {
|
||||
abstract string toString();
|
||||
abstract Location getLocation();
|
||||
}
|
||||
|
||||
class YesMaybeElement extends MaybeElement {
|
||||
Element e;
|
||||
|
||||
YesMaybeElement() { this = TElement(e) }
|
||||
override string toString() { result = e.toString() }
|
||||
override Location getLocation() { result = e.getLocation() }
|
||||
}
|
||||
|
||||
class NoMaybeElement extends MaybeElement {
|
||||
NoMaybeElement() { this = TNoElement() }
|
||||
|
||||
override string toString() { result = "<none>" }
|
||||
override Location getLocation() { none() }
|
||||
}
|
||||
|
||||
MaybeElement enclosingCallable(Expr e) {
|
||||
if exists(e.getEnclosingCallable())
|
||||
then result = TElement(e.getEnclosingCallable())
|
||||
else result = TNoElement()
|
||||
}
|
||||
|
||||
from Expr e
|
||||
select e, e.getPrimaryQlClasses()
|
||||
select e, enclosingCallable(e), e.getPrimaryQlClasses()
|
||||
|
||||
Reference in New Issue
Block a user