fix compiler crash for misspelled type with pointer only reference

closes #196
This commit is contained in:
Andrew Kelley 2016-09-23 11:53:05 -04:00
parent 46eb77dbb2
commit 9ec6a78f12
2 changed files with 37 additions and 0 deletions

View File

@ -2468,6 +2468,10 @@ static TypeTableEntry *analyze_enum_value_expr(CodeGen *g, ImportTableEntry *imp
assert(field_access_node->type == NodeTypeFieldAccessExpr);
TypeEnumField *type_enum_field = get_enum_field(enum_type, field_name);
if (type_enum_field->type_entry->id == TypeTableEntryIdInvalid) {
return g->builtin_types.entry_invalid;
}
field_access_node->data.field_access_expr.type_enum_field = type_enum_field;
if (type_enum_field) {

View File

@ -1501,6 +1501,39 @@ fn foo(blah: []u8) {
for (blah) { }
}
)SOURCE", 1, ".tmp_source.zig:3:16: error: for loop expression missing element parameter");
add_compile_fail_case("misspelled type with pointer only reference", R"SOURCE(
const JasonHM = u8;
const JasonList = &JsonNode;
enum JsonOA {
JSONArray: JsonList,
JSONObject: JasonHM,
}
enum JsonType {
JSONNull: void,
JSONInteger: isize,
JSONDouble: f64,
JSONBool: bool,
JSONString: []u8,
JSONArray,
JSONObject,
}
pub struct JsonNode {
kind: JsonType,
jobject: ?JsonOA,
}
fn foo() {
var jll: JasonList = undefined;
jll.init(&debug.global_allocator);
var jd = JsonNode {.kind = JsonType.JSONArray , .jobject = JsonOA.JSONArray {jll} };
}
)SOURCE", 2,
".tmp_source.zig:6:16: error: use of undeclared identifier 'JsonList'",
".tmp_source.zig:27:8: error: no function named 'init' in 'JsonNode'");
}
//////////////////////////////////////////////////////////////////////////////