== bugfix and library cleanup
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 5 Jul 2021 16:03:59 +0000 (11:03 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 5 Jul 2021 16:03:59 +0000 (11:03 -0500)
bin/onyx
core/io/reader.onyx
include/onyxtypes.h
src/onyxwasm.c
tests/aoc-2020/day1.onyx
tests/aoc-2020/day2.onyx

index f41b835425d4090e34dcb0f6ecf5d16456176e2e..efef128ab1ec0ceca6109f640c765b04e2ded42f 100755 (executable)
Binary files a/bin/onyx and b/bin/onyx differ
index 4367566e0fde5eb09dc3dfa419fe83ab5ea6465e..bfacd02f647adeefb3db0229caddfe84ee51640e 100644 (file)
@@ -12,11 +12,14 @@ reader_make :: (s: ^Stream) -> Reader {
     return Reader.{ s };
 }
 
-reader_from_string :: (s: str) -> Reader {
-    stream_ptr := new(StringStream);     @Leak
+// You need to free the StringStream from the context.allocator when you use this. For example,
+//      reader, stream := reader_from_string(s);
+//      defer cfree(stream);
+reader_from_string :: (s: str) -> (Reader, ^StringStream) {
+    stream_ptr := new(StringStream);
     *stream_ptr = string_stream_make(s);
 
-    return Reader.{ stream_ptr };
+    return Reader.{ stream_ptr }, stream_ptr;
 }
 
 read_byte :: (use reader: ^Reader) -> u8 {
index 6113fead6291b43032ef50e5522b1e2aac328007..03574c746377a1769af5a7aeb6a3fe78691f60e1 100644 (file)
@@ -50,7 +50,7 @@ enum BasicFlag {
 
     Basic_Flag_Numeric          = Basic_Flag_Integer | Basic_Flag_Float,
     Basic_Flag_Ordered          = Basic_Flag_Integer | Basic_Flag_Float | Basic_Flag_Pointer,
-    Basic_Flag_Equality         = Basic_Flag_Ordered | Basic_Flag_Type_Index,
+    Basic_Flag_Equality         = Basic_Flag_Ordered | Basic_Flag_Type_Index | Basic_Flag_Boolean,
     Basic_Flag_Constant_Type    = Basic_Flag_Boolean | Basic_Flag_Numeric | Basic_Flag_Pointer,
     Basic_Flag_Numeric_Ordered  = Basic_Flag_Numeric | Basic_Flag_Ordered,
 };
index 60d5a3c884033658f9a340cb15169e5b38567a39..c0777af93e6a9058d21557448814cc7eb1bd9611 100644 (file)
@@ -2650,6 +2650,7 @@ EMIT_FUNC(cast, AstUnaryOp* cast) {
 
     if (to->kind == Type_Kind_Slice && from->kind == Type_Kind_VarArgs) {
         // Nothing needs to be done because they are identical
+        *pcode = code;
         return;
     }
 
index eecdcddcfb5987d9984b4c0f020df3c60ac4a5ee..b40a5bff4351a7b17d1c4910b3ace4d4fa36d832 100644 (file)
@@ -4,7 +4,8 @@ use package core
 
 main :: (args: [] cstr) {
     contents := #file_contents "./tests/aoc-2020/input/day1.txt";
-    reader := io.reader_from_string(contents);
+    reader, stream := io.reader_from_string(contents);
+    defer cfree(stream);
 
     nums := array.make(u32, 128);
     defer array.free(^nums);
index fca7b94f481280e2437affaa062e1112c10f67fc..86fd7a19fde1961f4f3ef363be2986eb29c56469 100644 (file)
@@ -6,7 +6,8 @@ use package core
 
 main :: (args: [] cstr) {
     contents := #file_contents "./tests/aoc-2020/input/day2.txt";
-    reader := io.reader_from_string(contents);
+    reader, stream := io.reader_from_string(contents);
+    defer cfree(stream);
 
     valid := 0;