From 45eed87309309a54a2c633c30ff343fc5d442f31 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 1 Jul 2026 01:21:49 +0100 Subject: [PATCH] Allow `#no_alias` on any pointer-like type --- src/check_type.cpp | 5 +++-- src/types.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/check_type.cpp b/src/check_type.cpp index 212f7dbe4..89c663ec6 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -2221,8 +2221,9 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para } if (p->flags&FieldFlag_no_alias) { - if (!is_type_pointer(type) && !is_type_multi_pointer(type)) { - error(name, "'#no_alias' can only be applied pointer or multi-pointer typed parameters"); + bool ok = is_type_internally_pointer_like(type); + if (!ok) { + error(name, "'#no_alias' can only be applied pointer-like type parameters"); p->flags &= ~FieldFlag_no_alias; // Remove the flag } } diff --git a/src/types.cpp b/src/types.cpp index b5bb208de..67d757508 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1529,7 +1529,7 @@ gb_internal bool is_type_multi_pointer(Type *t) { return t->kind == Type_MultiPointer; } gb_internal bool is_type_internally_pointer_like(Type *t) { - return is_type_pointer(t) || is_type_multi_pointer(t) || is_type_cstring(t) || is_type_proc(t); + return is_type_pointer(t) || is_type_multi_pointer(t) || is_type_cstring(t) || is_type_cstring16(t) || is_type_proc(t); } gb_internal bool is_type_tuple(Type *t) {