From 4ecab1821ed7609d35f2c9509cb045dc79606e8c Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 8 Nov 2016 10:31:48 -0800 Subject: 3653 Don't crash on bad types. I need to be more careful in distinguishing between the two causes of constraint violations: bad input and internal bugs. Maybe I should create a second assert() to indicate "this shouldn't really be an assert, but I'm too lazy to think about it right now." --- 021check_instruction.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to '021check_instruction.cc') diff --git a/021check_instruction.cc b/021check_instruction.cc index c049d619..93ce5427 100644 --- a/021check_instruction.cc +++ b/021check_instruction.cc @@ -176,7 +176,10 @@ bool is_mu_array(const type_tree* type) { if (!type) return false; if (is_literal(type)) return false; if (type->atom) return false; - assert(type->left->atom); + if (!type->left->atom) { + raise << "invalid type " << to_string(type) << '\n' << end(); + return false; + } return type->left->value == get(Type_ordinal, "array"); } @@ -188,7 +191,10 @@ bool is_mu_address(const type_tree* type) { if (!type) return false; if (is_literal(type)) return false; if (type->atom) return false; - assert(type->left->atom); + if (!type->left->atom) { + raise << "invalid type " << to_string(type) << '\n' << end(); + return false; + } return type->left->value == get(Type_ordinal, "address"); } -- cgit 1.4.1-2-gfad0