diff --git a/src/main/scala/io/shiftleft/js2cpg/astcreation/AstNodeBuilder.scala b/src/main/scala/io/shiftleft/js2cpg/astcreation/AstNodeBuilder.scala index 8d7aef39..5f4a19d0 100644 --- a/src/main/scala/io/shiftleft/js2cpg/astcreation/AstNodeBuilder.scala +++ b/src/main/scala/io/shiftleft/js2cpg/astcreation/AstNodeBuilder.scala @@ -60,6 +60,7 @@ class AstNodeBuilder( .lineNumber(line) .columnNumber(column) .order(orderTracker.order) + .index(orderTracker.order) .typeFullName(Defines.Any) diffGraph.addNode(param) diff --git a/src/test/scala/io/shiftleft/js2cpg/passes/MixedAstCreationPassTest.scala b/src/test/scala/io/shiftleft/js2cpg/passes/MixedAstCreationPassTest.scala index 4ecb2087..a01521fb 100644 --- a/src/test/scala/io/shiftleft/js2cpg/passes/MixedAstCreationPassTest.scala +++ b/src/test/scala/io/shiftleft/js2cpg/passes/MixedAstCreationPassTest.scala @@ -751,9 +751,11 @@ class MixedAstCreationPassTest extends AbstractPassTest { val List(a) = fooMethod.parameter.nameExact("param1_0").l a.code shouldBe "{a}" a.order shouldBe 1 + a.index shouldBe 1 val List(b) = fooMethod.parameter.nameExact("b").l b.code shouldBe "b" b.order shouldBe 2 + b.index shouldBe 2 } "have correct structure for object destruction assignment in call argument" in AstFixture("foo({a, b} = x);") { @@ -1071,6 +1073,7 @@ class MixedAstCreationPassTest extends AbstractPassTest { val List(paramA) = foo.parameter.nameExact("a").l paramA.order shouldBe 1 + paramA.index shouldBe 1 val List(block) = foo.astChildren.isBlock.l val List(assignment) = block.astChildren.isCall.l @@ -1090,9 +1093,11 @@ class MixedAstCreationPassTest extends AbstractPassTest { val List(foo) = cpg.method.nameExact("foo").l val List(paramA) = foo.parameter.nameExact("a").l paramA.order shouldBe 1 + paramA.index shouldBe 1 val List(paramB) = foo.parameter.nameExact("b").l paramB.order shouldBe 2 + paramB.index shouldBe 2 val List(block) = foo.astChildren.isBlock.l @@ -1123,8 +1128,10 @@ class MixedAstCreationPassTest extends AbstractPassTest { val List(foo) = cpg.method.nameExact("foo").l val List(paramA) = foo.parameter.nameExact("a").l paramA.order shouldBe 1 + paramA.index shouldBe 1 val List(paramB) = foo.parameter.nameExact("b").l paramB.order shouldBe 2 + paramB.index shouldBe 2 val List(block) = foo.astChildren.isBlock.l val List(assignmentB) = block.astChildren.isCall.codeExact("b = b === void 0 ? 1 : b").l @@ -1144,10 +1151,13 @@ class MixedAstCreationPassTest extends AbstractPassTest { val List(foo) = cpg.method.nameExact("foo").l val List(paramA) = foo.parameter.nameExact("a").l paramA.order shouldBe 1 + paramA.index shouldBe 1 val List(paramB) = foo.parameter.nameExact("b").l paramB.order shouldBe 2 + paramB.index shouldBe 2 val List(paramC) = foo.parameter.nameExact("c").l paramC.order shouldBe 3 + paramC.index shouldBe 3 val List(block) = foo.astChildren.isBlock.l val List(assignmentB) = block.astChildren.isCall.codeExact("b = b === void 0 ? 1 : b").l diff --git a/src/test/scala/io/shiftleft/js2cpg/passes/SimpleAstCreationPassTest.scala b/src/test/scala/io/shiftleft/js2cpg/passes/SimpleAstCreationPassTest.scala index 155e841a..98447da4 100644 --- a/src/test/scala/io/shiftleft/js2cpg/passes/SimpleAstCreationPassTest.scala +++ b/src/test/scala/io/shiftleft/js2cpg/passes/SimpleAstCreationPassTest.scala @@ -283,10 +283,12 @@ class SimpleAstCreationPassTest extends AbstractPassTest { val List(param1, param2) = lambda.parameter.l param1.order shouldBe 0 + param1.index shouldBe 0 param1.name shouldBe "this" param1.code shouldBe "this" param2.order shouldBe 1 + param2.index shouldBe 1 param2.name shouldBe "param1_0" param2.code shouldBe "{param}" @@ -452,8 +454,16 @@ class SimpleAstCreationPassTest extends AbstractPassTest { "have correct structure for empty method" in AstFixture("function method(x) {}") { cpg => val List(method) = cpg.method.nameExact("method").l method.astChildren.isBlock.size shouldBe 1 - method.parameter.order(0).nameExact("this").typeFullName(Defines.Any).size shouldBe 1 - method.parameter.order(1).nameExact("x").typeFullName(Defines.Any).size shouldBe 1 + + val List(thisParam, xParam) = method.parameter.l + thisParam.order shouldBe 0 + thisParam.index shouldBe 0 + thisParam.name shouldBe "this" + thisParam.typeFullName shouldBe Defines.Any + xParam.order shouldBe 1 + xParam.index shouldBe 1 + xParam.name shouldBe "x" + xParam.typeFullName shouldBe Defines.Any } "have correct structure for decl assignment" in AstFixture("function foo(x) { var local = 1; }") { cpg => @@ -462,9 +472,11 @@ class SimpleAstCreationPassTest extends AbstractPassTest { val List(t, x) = method.parameter.l t.order shouldBe 0 + t.index shouldBe 0 t.name shouldBe "this" t.typeFullName shouldBe Defines.Any x.order shouldBe 1 + x.index shouldBe 1 x.name shouldBe "x" x.typeFullName shouldBe Defines.Any @@ -484,9 +496,11 @@ class SimpleAstCreationPassTest extends AbstractPassTest { val List(t, x) = method.parameter.l t.order shouldBe 0 + t.index shouldBe 0 t.name shouldBe "this" t.typeFullName shouldBe Defines.Any x.order shouldBe 1 + x.index shouldBe 1 x.name shouldBe "x" x.typeFullName shouldBe Defines.Any @@ -507,12 +521,15 @@ class SimpleAstCreationPassTest extends AbstractPassTest { val List(t, x, y) = method.parameter.l t.order shouldBe 0 + t.index shouldBe 0 t.name shouldBe "this" t.typeFullName shouldBe Defines.Any x.order shouldBe 1 + x.index shouldBe 1 x.name shouldBe "x" x.typeFullName shouldBe Defines.Any y.order shouldBe 2 + y.index shouldBe 2 y.name shouldBe "y" y.typeFullName shouldBe Defines.Any @@ -681,9 +698,11 @@ class SimpleAstCreationPassTest extends AbstractPassTest { val List(method) = cpg.method.nameExact("method").l val List(parameterInX) = method.parameter.order(1).l + parameterInX.index shouldBe 1 parameterInX.name shouldBe "x" val List(parameterInY) = method.parameter.order(2).l + parameterInY.index shouldBe 2 parameterInY.name shouldBe "y" val List(methodBlock) = method.astChildren.isBlock.l