aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2025-05-21 19:28:38 +0200
committerGitHub <noreply@github.com>2025-05-21 19:28:38 +0200
commitbd4134382b6a819972255f7e044ce48c05363194 (patch)
tree58f0b6b04cd8da8c50edadbad33d94801174c028 /src/check_expr.cpp
parenta2c0720fb046187bb00f5f3beeab4e9c284b18f0 (diff)
parent96fd07e0eec5e75ab746efc9b0fe2d46caa52950 (diff)
Merge pull request #5195 from Kelimion/fix-5177
Fix #5177
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 167052772..8721aab5d 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -5461,6 +5461,16 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod
}
}
+ if (operand->type && is_type_simd_vector(type_deref(operand->type))) {
+ String field_name = selector->Ident.token.string;
+ if (field_name.len == 1) {
+ error(op_expr, "Extracting an element from a #simd array using .%.*s syntax is disallowed, prefer `simd.extract`", LIT(field_name));
+ } else {
+ error(op_expr, "Extracting elements from a #simd array using .%.*s syntax is disallowed, prefer `swizzle`", LIT(field_name));
+ }
+ return nullptr;
+ }
+
if (entity == nullptr && selector->kind == Ast_Ident && operand->type != nullptr &&
(is_type_array(type_deref(operand->type)) || is_type_simd_vector(type_deref(operand->type)))) {
String field_name = selector->Ident.token.string;