Skip to content

Commit fede7dd

Browse files
authored
Merge pull request github#7676 from aschackmull/java/instanceaccessnode
Java: Add data flow node encapsulating instance accesses.
2 parents a77b2b0 + 43da5aa commit fede7dd

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowNodes.qll

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,21 @@ module Public {
280280
explicitInstanceArgument(call, result.asExpr()) or
281281
implicitInstanceArgument(call, result.(ImplicitInstanceAccess).getInstanceAccess())
282282
}
283+
284+
/** A node representing an `InstanceAccessExt`. */
285+
class InstanceAccessNode extends Node {
286+
InstanceAccessNode() {
287+
this instanceof ImplicitInstanceAccess or this.asExpr() instanceof InstanceAccess
288+
}
289+
290+
/** Gets the instance access corresponding to this node. */
291+
InstanceAccessExt getInstanceAccess() {
292+
result = this.(ImplicitInstanceAccess).getInstanceAccess() or result.isExplicit(this.asExpr())
293+
}
294+
295+
/** Holds if this is an access to an object's own instance. */
296+
predicate isOwnInstanceAccess() { this.getInstanceAccess().isOwnInstanceAccess() }
297+
}
283298
}
284299

285300
private import Public

0 commit comments

Comments
 (0)