miscellaneous bugfixes
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 29 Dec 2022 03:47:18 +0000 (21:47 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 29 Dec 2022 03:47:18 +0000 (21:47 -0600)
core/memory/memory.onyx
core/net/net.onyx
tests/overload_return_type [new file with mode: 0644]
tests/overload_return_type.onyx [new file with mode: 0644]
tests/parallel_for [new file with mode: 0644]
tests/parallel_for.onyx

index 3c04d26a3ffca2c8a2dac7fa4b6703e1d7595f9d..1b23c8b1996e27d510d685a1e080f7ee3f04838c 100644 (file)
@@ -58,7 +58,9 @@ resize_slice :: (sl: [] $T, new_size: i32, allocator := context.allocator) -> []
 
 #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
index fc14abb88a3fc5bea07402e3d2c76d09386d7a73..2c2390f3f73302c6255bc9cadf1bf31a31981716 100644 (file)
@@ -166,7 +166,7 @@ Socket_Poll_Status :: enum {
 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;
     }
diff --git a/tests/overload_return_type b/tests/overload_return_type
new file mode 100644 (file)
index 0000000..fe5c557
--- /dev/null
@@ -0,0 +1,4 @@
+Working
+Also working
+Again, working
+Super working
diff --git a/tests/overload_return_type.onyx b/tests/overload_return_type.onyx
new file mode 100644 (file)
index 0000000..0726802
--- /dev/null
@@ -0,0 +1,31 @@
+
+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";
+
+
diff --git a/tests/parallel_for b/tests/parallel_for
new file mode 100644 (file)
index 0000000..fbdf932
--- /dev/null
@@ -0,0 +1 @@
+49995000
index 2000984030acf08751cf4ac14b62d4afc8dc3437..3280816571e4199f4b45b1b43ed1cc1136f4c5dd 100644 (file)
@@ -1,6 +1,4 @@
-#load "core/std"
-
-use package core
+use core {sync, iter, println}
 
 main :: () {
     sum := 0;