#overload
builtin.__make_overload :: macro (_: ^[] $T, count: u32, allocator := context.allocator) -> [] T {
- return (package core.memory).make_slice(T, count, allocator);
+ ret := (package core.memory).make_slice(T, count, allocator);
+ memory.set(ret.data, 0, sizeof T * count);
+ return ret;
}
#overload
socket_poll_all :: (sockets: [] ^Socket, timeout := -1, stat_buff: [] Socket_Poll_Status = .[]) {
if sockets.count > stat_buff.count do return;
- handles := (cast(^Socket.Handle) alloc.from_stack(sockets.count * sizeof Socket.Handle))[0 .. sockets.count];
+ handles := alloc.array_from_stack(Socket.Handle, sockets.count);
for i: sockets.count {
handles[i] = sockets[i].handle;
}
--- /dev/null
+Working
+Also working
+Again, working
+Super working
--- /dev/null
+
+use core
+
+main :: () {
+ overloaded_proc(i32.{}) |> println();
+ overloaded_proc(f32.{}) |> println();
+ overloaded_proc(main) |> println();
+ overloaded_proc() |> println();
+}
+
+overloaded_proc :: #match -> str {}
+
+#overload
+overloaded_proc :: (_: i32) -> str {
+ return "Working";
+}
+
+#overload
+overloaded_proc :: (_: f32) => {
+ return "Also working";
+}
+
+#overload
+overloaded_proc :: (_) => {
+ return "Again, working";
+}
+
+#overload
+overloaded_proc :: macro () => "Super working";
+
+
-#load "core/std"
-
-use package core
+use core {sync, iter, println}
main :: () {
sum := 0;