0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-22 08:40:03 +01:00
posthog/hogvm/__tests__/functions.hog
2024-06-21 11:22:39 -05:00

60 lines
1.1 KiB
Plaintext

print('-- test functions --')
fn add(a, b) {
return a + b
}
fn add2(a, b) {
let c := a + b
return c
}
fn mult(a, b) {
return a * b
}
fn noArgs() {
let url := 'basdfasdf'
let second := 2 + 3
return second
}
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
}
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)
print(ifThenReturn() ?? -1)
print(mult(add(3, 4) + 100 + add(2, 1), 2))
print(mult(add2(3, 4) + 100 + add2(2, 1), 10))