Browse Source

Fix checking `_` constant declarations with a procedure

gingerBill 6 years ago
parent
commit
d453b9a5b1
2 changed files with 16 additions and 4 deletions
  1. 13 1
      src/check_stmt.cpp
  2. 3 3
      src/checker.cpp

+ 13 - 1
src/check_stmt.cpp

@@ -1845,7 +1845,19 @@ void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags) {
 				}
 			}
 		} else {
-			// constant value declarations
+			// constant value declaration
+			// NOTE(bill): Check `_` declarations
+			for_array(i, vd->names) {
+				Ast *name = vd->names[i];
+				if (is_blank_ident(name)) {
+					Entity *e = name->Ident.entity;
+					DeclInfo *d = decl_info_of_entity(e);
+					if (d != nullptr) {
+						check_entity_decl(ctx, e, d, nullptr);
+					}
+				}
+			}
+
 		}
 	case_end;
 	}

+ 3 - 3
src/checker.cpp

@@ -962,9 +962,9 @@ void add_type_and_value(CheckerInfo *i, Ast *expr, AddressingMode mode, Type *ty
 void add_entity_definition(CheckerInfo *i, Ast *identifier, Entity *entity) {
 	GB_ASSERT(identifier != nullptr);
 	GB_ASSERT(identifier->kind == Ast_Ident);
-	if (is_blank_ident(identifier)) {
-		return;
-	}
+	// if (is_blank_ident(identifier)) {
+		// return;
+	// }
 	if (identifier->Ident.entity != nullptr) {
 		// NOTE(bill): Identifier has already been handled
 		return;