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.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index ab8fe78fc..80008d73a 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -4900,10 +4900,18 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod
Selection sel = {}; // NOTE(bill): Not used if it's an import name
if (!c->allow_arrow_right_selector_expr && se->token.kind == Token_ArrowRight) {
+ ERROR_BLOCK();
error(node, "Illegal use of -> selector shorthand outside of a call");
- operand->mode = Addressing_Invalid;
- operand->expr = node;
- return nullptr;
+ gbString x = expr_to_string(se->expr);
+ gbString y = expr_to_string(se->selector);
+ error_line("\tSuggestion: Did you mean '%s.%s'?\n", x, y);
+ gb_string_free(y);
+ gb_string_free(x);
+
+ // TODO(bill): Should this terminate here or propagate onwards?
+ // operand->mode = Addressing_Invalid;
+ // operand->expr = node;
+ // return nullptr;
}
operand->expr = node;