JS: add PropWrite for instance fields with initializer

This commit is contained in:
Asger F
2019-01-28 15:28:44 +00:00
parent 7a4af4af6d
commit 383cadb25b

View File

@@ -531,6 +531,31 @@ module DataFlow {
override ControlFlowNode getWriteNode() { result = prop.getParameter() }
}
/**
* An instance field with an initializer expression, seen as a property write.
*/
private class InstanceFieldAsPropWrite extends PropWrite, PropNode {
override FieldDefinition prop;
InstanceFieldAsPropWrite() {
not prop.isStatic() and
exists(prop.getInit()) and
not prop instanceof ParameterField
}
override Node getBase() {
result = thisNode(prop.getDeclaringClass().getConstructor().getBody())
}
override Expr getPropertyNameExpr() { result = prop.getNameExpr() }
override string getPropertyName() { result = prop.getName() }
override Node getRhs() { result = valueNode(prop.getInit()) }
override ControlFlowNode getWriteNode() { result = prop }
}
/**
* A data flow node that reads an object property.
*/