diff options
| author | Jimmi HC <jhc@liab.dk> | 2018-06-08 09:21:31 +0200 |
|---|---|---|
| committer | Jimmi HC <jhc@liab.dk> | 2018-06-08 09:21:31 +0200 |
| commit | bf3d1c1aab336c4a650bb67dcaca132d4a0f6164 (patch) | |
| tree | c97dceae3e7ea164cfd3154f91e5b314df762c92 /src/ir.cpp | |
| parent | ffb089a9f5fa95fd559a7c88081310d0be73f206 (diff) | |
| download | zig-bf3d1c1aab336c4a650bb67dcaca132d4a0f6164.tar.gz zig-bf3d1c1aab336c4a650bb67dcaca132d4a0f6164.zip | |
Allow access of array.len through a pointer
Diffstat (limited to 'src/ir.cpp')
| -rw-r--r-- | src/ir.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ir.cpp b/src/ir.cpp index cc4ffb44a9..4766bff5e7 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -13846,10 +13846,14 @@ static TypeTableEntry *ir_analyze_instruction_field_ptr(IrAnalyze *ira, IrInstru ir_link_new_instruction(result, &field_ptr_instruction->base); return result->value.type; } - } else if (container_type->id == TypeTableEntryIdArray) { + } else if (is_array_ref(container_type)) { if (buf_eql_str(field_name, "len")) { ConstExprValue *len_val = create_const_vals(1); - init_const_usize(ira->codegen, len_val, container_type->data.array.len); + if (container_type->id == TypeTableEntryIdPointer) { + init_const_usize(ira->codegen, len_val, container_type->data.pointer.child_type->data.array.len); + } else { + init_const_usize(ira->codegen, len_val, container_type->data.array.len); + } TypeTableEntry *usize = ira->codegen->builtin_types.entry_usize; bool ptr_is_const = true; |
