0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-25 02:49:32 +01:00
posthog/hogvm/__tests__/functions.hog

86 lines
1.6 KiB
Plaintext
Raw Normal View History

print('-- test functions --')
fn add(a, b) {
return a + b
}
print(add)
fn add2(a, b) {
let c := a + b
return c
}
print(add2)
fn mult(a, b) {
return a * b
}
print(mult)
fn noArgs() {
let url := 'basdfasdf'
let second := 2 + 3
return second
}
print(noArgs)
fn empty() {}
fn empty2() {}
fn empty3() {}
fn noReturn() {
let a := 1
let b := 2
let c := a + b
}
fn emptyReturn() {
return
}
fn emptyReturnBeforeOtherStuff() {
return
; 2 + 2
}
fn emptyReturnBeforeOtherStuffNoSemicolon() {
// This will return 4 because whitespace is omitted
return
2 + 2
}
2024-06-21 18:22:39 +02:00
fn ifThenReturn() {
// make sure this is not a placeholder {return}
if (false) {
return
}
return 4
}
print(add(3, 4))
print(add(3, 4) + 100 + add(1, 1))
print(noArgs() ?? -1)
print(empty() ?? -1)
print(empty2() ?? -1)
print(empty3() ?? -1)
print(noReturn() ?? -1)
print(emptyReturn() ?? -1)
print(emptyReturnBeforeOtherStuff() ?? -1)
print(emptyReturnBeforeOtherStuffNoSemicolon() ?? -1)
2024-06-21 18:22:39 +02:00
print(ifThenReturn() ?? -1)
print(mult(add(3, 4) + 100 + add(2, 1), 2))
print(mult(add2(3, 4) + 100 + add2(2, 1), 10))
// Call functions with different argument counts
fn printArgs(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
print(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
}
let printArgs2 := (arg1, arg2, arg3, arg4, arg5, arg6, arg7) -> {
print(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
}
printArgs(1, 2, 3, 4, 5, 6, 7)
printArgs2(1, 2, 3, 4, 5, 6, 7)
printArgs(1, 2, 3, 4, 5, 6)
printArgs2(1, 2, 3, 4, 5, 6)
printArgs(1, 2, 3, 4, 5)
printArgs2(1, 2, 3, 4, 5)
printArgs()
printArgs2()