Improved any support, removed C Var args
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
|
||||
VariadicArguments :: (string: *char, args: ..)
|
||||
pass
|
||||
VariadicArguments :: (string: *char, args: ..): Any
|
||||
return args[0]
|
||||
|
||||
AnyArguments :: (values: []Any)
|
||||
for values
|
||||
@@ -20,7 +20,11 @@ main :: (): int
|
||||
for values
|
||||
Assert(it.type == S64)
|
||||
AnyArguments({a,b})
|
||||
VariadicArguments("Test", args = {a+b,b})
|
||||
c := VariadicArguments("Test", args = {a+b,b})
|
||||
Assert(*(c.data->*S64) == 30)
|
||||
d := VariadicArguments("Test", {b,a})
|
||||
Assert(*(d.data->*S64) == b)
|
||||
e := VariadicArguments("Test", {b,a})
|
||||
|
||||
Assert(*(values[0].data->*S64) == 10)
|
||||
Assert(*(values[1].data->*S64) == 20)
|
||||
|
||||
@@ -35,15 +35,14 @@ main :: (): int
|
||||
any_value: Any = value_to_be_wrapped
|
||||
|
||||
if any_value.type == S64
|
||||
// Void pointers get implicitly cast
|
||||
value: *S64 = any_value.data
|
||||
*value = 20
|
||||
*(any_value.data->*S64) = 20
|
||||
elif any_value.type == int
|
||||
// Void pointers get implicitly cast
|
||||
value: *int = any_value.data
|
||||
*value = 30
|
||||
elif any_value.type == char;; Assert(false, "No bueno")
|
||||
|
||||
Assert(value_to_be_wrapped == 20)
|
||||
Assert(*(any_value.data->*S64) == 20)
|
||||
|
||||
letter := GetFirstLetterOfType(value_to_be_wrapped)
|
||||
Assert(letter == 'I')
|
||||
|
||||
Reference in New Issue
Block a user