Skip to content

Commit 9bab593

Browse files
committed
Fix class instance method detection in constructor receiver
1 parent 7430d0e commit 9bab593

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,6 +1330,9 @@ module ClassNode {
13301330
accessor.getName() = name and
13311331
result = accessor.getInit().flow()
13321332
)
1333+
or
1334+
kind = MemberKind::method() and
1335+
result = this.getConstructor().getReceiver().getAPropertySource(name)
13331336
}
13341337

13351338
override FunctionNode getAnInstanceMember(MemberKind kind) {
@@ -1362,6 +1365,9 @@ module ClassNode {
13621365
accessor = this.getAnAccessor(kind) and
13631366
result = accessor.getInit().flow()
13641367
)
1368+
or
1369+
kind = MemberKind::method() and
1370+
result = this.getConstructor().getReceiver().getAPropertySource()
13651371
}
13661372

13671373
override FunctionNode getStaticMember(string name, MemberKind kind) {

javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/Test.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ spuriousCallee
22
missingCallee
33
| constructor-field.ts:40:5:40:14 | f3.build() | constructor-field.ts:13:3:13:12 | build() {} | -1 | calls |
44
| constructor-field.ts:71:1:71:11 | bf3.build() | constructor-field.ts:13:3:13:12 | build() {} | -1 | calls |
5-
| prototypes.js:117:5:117:19 | this.tmpClass() | prototypes.js:113:1:113:22 | functio ... ss() {} | -1 | calls |
6-
| prototypes.js:131:5:131:23 | this.tmpPrototype() | prototypes.js:127:1:127:26 | functio ... pe() {} | -1 | calls |
75
badAnnotation
86
accessorCall
97
| accessors.js:12:1:12:5 | obj.f | accessors.js:5:8:5:12 | () {} |

0 commit comments

Comments
 (0)