Skip to content

Commit b4d4f21

Browse files
authored
Support rest-params in EtsIR (#310)
1 parent 11ffee8 commit b4d4f21

File tree

6 files changed

+20
-1
lines changed

6 files changed

+20
-1
lines changed

.github/workflows/build-and-test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
DEST_DIR="arkanalyzer"
6565
MAX_RETRIES=10
6666
RETRY_DELAY=3 # Delay between retries in seconds
67-
BRANCH="neo/2025-02-24"
67+
BRANCH="neo/2025-03-20"
6868
6969
for ((i=1; i<=MAX_RETRIES; i++)); do
7070
git clone --depth=1 --branch $BRANCH $REPO_URL $DEST_DIR && break

jacodb-ets/src/main/kotlin/org/jacodb/ets/dto/Convert.kt

+1
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,7 @@ fun MethodSignatureDto.toEtsMethodSignature(): EtsMethodSignature {
695695
name = param.name,
696696
type = param.type.toEtsType(),
697697
isOptional = param.isOptional,
698+
isRest = param.isRest,
698699
)
699700
},
700701
returnType = returnType.toEtsType(),

jacodb-ets/src/main/kotlin/org/jacodb/ets/dto/Signatures.kt

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ data class MethodParameterDto(
5959
val name: String,
6060
val type: TypeDto,
6161
val isOptional: Boolean = false,
62+
val isRest: Boolean = false,
6263
)
6364

6465
@Serializable

jacodb-ets/src/main/kotlin/org/jacodb/ets/model/EtsSignature.kt

+1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ data class EtsMethodParameter(
120120
val name: String,
121121
override val type: EtsType,
122122
val isOptional: Boolean = false,
123+
val isRest: Boolean = false,
123124
) : CommonMethodParameter {
124125
override fun toString(): String {
125126
return "$name${if (isOptional) "?" else ""}: $type"

jacodb-ets/src/test/kotlin/org/jacodb/ets/test/EtsFromJsonTest.kt

+10
Original file line numberDiff line numberDiff line change
@@ -472,4 +472,14 @@ class EtsFromJsonTest {
472472
assertEquals("DummyStmt", stmtDto.kind)
473473
assertEquals(42, stmtDto.extra.getValue("value").jsonPrimitive.content.toInt())
474474
}
475+
476+
@Test
477+
fun testVararg() {
478+
val path = "/samples/etsir/ast/lang/vararg.ts.json"
479+
val file = loadEtsFileFromResource(path)
480+
val method = file.classes.flatMap { it.methods }.first { it.name == "f" }
481+
assertEquals(method.parameters.size, 2)
482+
assertEquals(method.parameters[0].isRest, false)
483+
assertEquals(method.parameters[1].isRest, true)
484+
}
475485
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function f(x, ...args) {
2+
console.log(x);
3+
console.log(...args);
4+
}
5+
6+
f(42, "hello", "world");

0 commit comments

Comments
 (0)