Browse Source

Add minimum requirement of 2 variants for #no_nil

gingerBill 6 years ago
parent
commit
7c99f52187
1 changed files with 5 additions and 0 deletions
  1. 5 0
      src/check_type.cpp

+ 5 - 0
src/check_type.cpp

@@ -716,6 +716,11 @@ void check_union_type(CheckerContext *ctx, Type *union_type, Ast *node, Array<Op
 
 	union_type->Union.variants = variants;
 	union_type->Union.no_nil = ut->no_nil;
+	if (union_type->Union.no_nil) {
+		if (variants.count < 2) {
+			error(ut->align, "A union with #no_nil must have at least 2 variants");
+		}
+	}
 
 	if (ut->align != nullptr) {
 		i64 custom_align = 1;