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

Skip to content

Commit 3d4287b

Browse files
committed
JS: Remove ContentSet#asArrayIndex()
For ContentSet it is ambiguous whether asArrayIndex() should get a singleton content set, or the KnownArrayElement content set. The user will now have to choose between asSingleton().asArrayIndex() or ContentSet::arrayElementKnown.
1 parent 013d226 commit 3d4287b

3 files changed

Lines changed: 6 additions & 9 deletions

File tree

javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,6 @@ module Public {
257257
/** Gets the property name to be accessed, provided that this is a singleton content set. */
258258
PropertyName asPropertyName() { result = this.asSingleton().asPropertyName() }
259259

260-
/** Gets the array index to be accessed. */
261-
int asArrayIndex() { result = this.asSingleton().asArrayIndex() }
262-
263260
/**
264261
* Gets a string representation of this content set.
265262
*/

javascript/ql/lib/semmle/javascript/dataflow/internal/DataFlowPrivate.qll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,7 @@ predicate readStep(Node node1, ContentSet c, Node node2) {
11621162
node2 = TRestParameterStoreNode(function, content)
11631163
|
11641164
// shift known array indices
1165-
c.asArrayIndex() = content.asArrayIndex() + restIndex
1165+
c.asSingleton().asArrayIndex() = content.asArrayIndex() + restIndex
11661166
or
11671167
content.isUnknownArrayElement() and // TODO: don't read unknown array elements from static array
11681168
c = ContentSet::arrayElementUnknown()
@@ -1179,7 +1179,7 @@ predicate readStep(Node node1, ContentSet c, Node node2) {
11791179
c = ContentSet::arrayElement() and // unknown start index when not the first spread operator
11801180
storeContent.isUnknownArrayElement()
11811181
else (
1182-
storeContent.asArrayIndex() = n + c.asArrayIndex()
1182+
storeContent.asArrayIndex() = n + c.asSingleton().asArrayIndex()
11831183
or
11841184
storeContent.isUnknownArrayElement() and c.asSingleton() = storeContent
11851185
)
@@ -1190,7 +1190,7 @@ predicate readStep(Node node1, ContentSet c, Node node2) {
11901190
node1 = TFlowSummaryDynamicParameterArrayNode(parameter.getSummarizedCallable()) and
11911191
node2 = parameter and
11921192
(
1193-
c.asArrayIndex() = pos.asPositional()
1193+
c.asSingleton().asArrayIndex() = pos.asPositional()
11941194
or
11951195
c = ContentSet::arrayElementLowerBound(pos.asPositionalLowerBound())
11961196
)
@@ -1261,7 +1261,7 @@ predicate storeStep(Node node1, ContentSet c, Node node2) {
12611261
exists(InvokeExpr invoke, int n |
12621262
node1 = TValueNode(invoke.getArgument(n)) and
12631263
node2 = TStaticArgumentArrayNode(invoke) and
1264-
c.asArrayIndex() = n and
1264+
c.asSingleton().asArrayIndex() = n and
12651265
not n >= firstSpreadArgumentIndex(invoke)
12661266
)
12671267
or

javascript/ql/lib/semmle/javascript/internal/flow_summaries/ForOfLoops.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ class ForOfLoopStep extends AdditionalFlowInternal {
4848
) {
4949
exists(ForOfStmt stmt |
5050
pred = getSynthesizedNode(stmt, "for-of-map-key") and
51-
contents.asArrayIndex() = 0
51+
contents.asSingleton().asArrayIndex() = 0
5252
or
5353
pred = getSynthesizedNode(stmt, "for-of-map-value") and
54-
contents.asArrayIndex() = 1
54+
contents.asSingleton().asArrayIndex() = 1
5555
|
5656
succ = DataFlow::lvalueNode(stmt.getLValue())
5757
)

0 commit comments

Comments
 (0)