Browse Source

Fix missing complex32/quaternion64 checks

gingerBill 4 years ago
parent
commit
b3e788b9d9
2 changed files with 5 additions and 1 deletions
  1. 2 0
      src/check_expr.cpp
  2. 3 1
      src/checker.cpp

+ 2 - 0
src/check_expr.cpp

@@ -1574,6 +1574,7 @@ bool check_representable_as_constant(CheckerContext *c, ExactValue in_value, Typ
 		}
 
 		switch (type->Basic.kind) {
+		case Basic_complex32:
 		case Basic_complex64:
 		case Basic_complex128: {
 			ExactValue real = exact_value_real(v);
@@ -1599,6 +1600,7 @@ bool check_representable_as_constant(CheckerContext *c, ExactValue in_value, Typ
 		}
 
 		switch (type->Basic.kind) {
+		case Basic_quaternion64:
 		case Basic_quaternion128:
 		case Basic_quaternion256: {
 			ExactValue real = exact_value_real(v);

+ 3 - 1
src/checker.cpp

@@ -4456,7 +4456,9 @@ void check_unchecked_bodies(Checker *c) {
 			GB_ASSERT(pl != nullptr);
 			pi.body  = pl->ProcLit.body;
 			pi.tags  = pl->ProcLit.tags;
-			GB_ASSERT(pi.body != nullptr);
+			if (pi.body == nullptr) {
+				continue;
+			}
 
 			check_proc_info(c, pi);
 		}