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

Skip to content

Commit 383cadb

Browse files
committed
JS: add PropWrite for instance fields with initializer
1 parent 7a4af4a commit 383cadb

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,31 @@ module DataFlow {
531531
override ControlFlowNode getWriteNode() { result = prop.getParameter() }
532532
}
533533

534+
/**
535+
* An instance field with an initializer expression, seen as a property write.
536+
*/
537+
private class InstanceFieldAsPropWrite extends PropWrite, PropNode {
538+
override FieldDefinition prop;
539+
540+
InstanceFieldAsPropWrite() {
541+
not prop.isStatic() and
542+
exists(prop.getInit()) and
543+
not prop instanceof ParameterField
544+
}
545+
546+
override Node getBase() {
547+
result = thisNode(prop.getDeclaringClass().getConstructor().getBody())
548+
}
549+
550+
override Expr getPropertyNameExpr() { result = prop.getNameExpr() }
551+
552+
override string getPropertyName() { result = prop.getName() }
553+
554+
override Node getRhs() { result = valueNode(prop.getInit()) }
555+
556+
override ControlFlowNode getWriteNode() { result = prop }
557+
}
558+
534559
/**
535560
* A data flow node that reads an object property.
536561
*/

0 commit comments

Comments
 (0)