aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp84
1 files changed, 0 insertions, 84 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 359e1e069..b65f760a7 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -2541,27 +2541,6 @@ isize entity_overload_count(Scope *s, String name) {
return 1;
}
-bool check_is_field_exported(Checker *c, Entity *field) {
- if (field == nullptr) {
- // NOTE(bill): Just incase
- return true;
- }
- if (field->kind != Entity_Variable) {
- return true;
- }
- Scope *file_scope = field->scope;
- if (file_scope == nullptr) {
- return true;
- }
- while (file_scope->file == nullptr) {
- file_scope = file_scope->parent;
- }
- if (!is_entity_exported(field) && file_scope != c->context.file_scope) {
- return false;
- }
- return true;
-}
-
Entity *check_selector(Checker *c, Operand *operand, AstNode *node, Type *type_hint) {
ast_node(se, SelectorExpr, node);
@@ -2730,13 +2709,6 @@ Entity *check_selector(Checker *c, Operand *operand, AstNode *node, Type *type_h
if (entity == nullptr && selector->kind == AstNode_Ident) {
String field_name = selector->Ident.token.string;
sel = lookup_field(c->allocator, operand->type, field_name, operand->mode == Addressing_Type);
-
- if (operand->mode != Addressing_Type && !check_is_field_exported(c, sel.entity)) {
- error(op_expr, "'%.*s' is an unexported field", LIT(field_name));
- operand->mode = Addressing_Invalid;
- operand->expr = node;
- return nullptr;
- }
entity = sel.entity;
// NOTE(bill): Add type info needed for fields like 'names'
@@ -4718,29 +4690,6 @@ CallArgumentData check_call_arguments(Checker *c, Operand *operand, Type *proc_t
}
-Entity *find_using_index_expr(Type *t) {
- t = base_type(t);
- if (t->kind != Type_Struct) {
- return nullptr;
- }
-
- for_array(i, t->Struct.fields) {
- Entity *f = t->Struct.fields[i];
- if (f->kind == Entity_Variable &&
- (f->flags & EntityFlag_Field) != 0 &&
- (f->flags & EntityFlag_Using) != 0) {
- if (is_type_indexable(f->type)) {
- return f;
- }
- Entity *res = find_using_index_expr(f->type);
- if (res != nullptr) {
- return res;
- }
- }
- }
- return nullptr;
-}
-
isize lookup_polymorphic_struct_parameter(TypeStruct *st, String parameter_name) {
if (!st->is_polymorphic) return -1;
@@ -5531,11 +5480,6 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t
error(elem, "Unknown field '%.*s' in structure literal", LIT(name));
continue;
}
- if (!is_unknown && !check_is_field_exported(c, sel.entity)) {
- error(elem, "Cannot assign to an unexported field '%.*s' in structure literal", LIT(name));
- continue;
- }
-
if (sel.index.count > 1) {
error(elem, "Cannot assign to an anonymous field '%.*s' in a structure literal (at the moment)", LIT(name));
@@ -5564,15 +5508,6 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t
check_assignment(c, o, field->type, str_lit("structure literal"));
}
} else {
- bool all_fields_are_blank = true;
- for_array(i, t->Struct.fields_in_src_order) {
- Entity *field = t->Struct.fields_in_src_order[i];
- if (!is_blank_ident(field->token)) {
- all_fields_are_blank = false;
- break;
- }
- }
-
bool seen_field_value = false;
for_array(index, cl->elems) {
@@ -5594,21 +5529,9 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t
if (field == nullptr) {
field = t->Struct.fields_in_src_order[index];
}
- if (!all_fields_are_blank && is_blank_ident(field->token)) {
- // NOTE(bill): Ignore blank identifiers
- continue;
- }
check_expr_with_type_hint(c, o, elem, field->type);
- if (!check_is_field_exported(c, field)) {
- gbString t = type_to_string(type);
- error(o->expr, "Implicit assignment to an unexported field '%.*s' in '%s' literal",
- LIT(field->token.string), t);
- gb_string_free(t);
- continue;
- }
-
if (is_type_any(field->type) || is_type_union(field->type) || is_type_raw_union(field->type)) {
is_constant = false;
}
@@ -6032,13 +5955,6 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t
valid = false;
}
- if (!valid && t->kind == Type_Struct) {
- Entity *found = find_using_index_expr(t);
- if (found != nullptr) {
- valid = check_set_index_data(o, found->type, is_type_pointer(found->type), &max_count);
- }
- }
-
if (!valid) {
gbString str = expr_to_string(o->expr);
gbString type_str = type_to_string(o->type);