Skip to content

Commit 1044049

Browse files
committed
Simplify getInput
1 parent 98b85a4 commit 1044049

File tree

1 file changed

+10
-27
lines changed

1 file changed

+10
-27
lines changed

java/ql/src/utils/GenerateFlowTestCase.qll

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -347,36 +347,20 @@ class TestCase extends TTestCase {
347347
*/
348348
string getInputTypeString() { result = getShortNameIfPossible(this.getInputType()) }
349349

350-
/**
351-
* Returns the next-highest stack item in `input`, treating the list as circular, so
352-
* the top item's successor is `baseInput`, the bottom of the stack.
353-
*/
354-
SummaryComponentStack nextInput(SummaryComponentStack prev) {
355-
exists(SummaryComponentStack next | next.tail() = prev and next = input.drop(_) | result = next)
356-
or
357-
not exists(SummaryComponentStack next | next.tail() = prev and next = input.drop(_)) and
358-
result = baseInput
359-
}
360-
361350
/**
362351
* Returns a call to `source()` wrapped in `newWith` methods as needed according to `input`.
363352
* For example, if the input specification is `ArrayElement of MapValue of Argument[0]`, this
364353
* will return `newWithMapValue(newWithArrayElement(source()))`.
365-
*
366-
* This requires a slightly awkward walk, out from the element above the root (`Argument[0]` above)
367-
* climbing up towards the outer `ArrayElement of...`. This is implemented by treating the stack as
368-
* a circular list, walking it backwards and treating the root as a sentinel indicating we should
369-
* emit `source()`.
370354
*/
371-
string getInput(SummaryComponentStack componentStack) {
372-
componentStack = input.drop(_) and
355+
string getInput(SummaryComponentStack stack) {
356+
stack = input.drop(_) and
373357
(
374-
if componentStack = baseInput
375-
then result = "source()"
376-
else
377-
result =
378-
"newWith" + contentToken(getContent(componentStack.head())) + "(" +
379-
this.getInput(nextInput(componentStack)) + ")"
358+
stack = input and result = "source()"
359+
or
360+
exists(SummaryComponentStack s |
361+
result = "newWith" + contentToken(getContent(s.head())) + "(" + this.getInput(s) + ")" and
362+
stack = s.tail()
363+
)
380364
)
381365
}
382366

@@ -476,9 +460,8 @@ class TestCase extends TTestCase {
476460
result =
477461
"\t\t{\n\t\t\t// \"" + row + "\"\n\t\t\t" + getShortNameIfPossible(this.getOutputType()) +
478462
" out = null;\n\t\t\t" + this.getInputTypeString() + " in = (" + this.getInputTypeString() +
479-
")" + this.getInput(this.nextInput(baseInput)) + ";\n\t\t\t" + this.getInstancePrefix() +
480-
this.makeCall() + ";\n\t\t\t" + "sink(" + this.getOutput(output) + "); " +
481-
this.getExpectation() + "\n\t\t}\n"
463+
")" + this.getInput(baseInput) + ";\n\t\t\t" + this.getInstancePrefix() + this.makeCall() +
464+
";\n\t\t\t" + "sink(" + this.getOutput(output) + "); " + this.getExpectation() + "\n\t\t}\n"
482465
}
483466
}
484467

0 commit comments

Comments
 (0)