diff options
| author | czjstmax <maxwasmailed@proton.me> | 2026-01-31 20:09:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-31 20:09:51 +0100 |
| commit | 5f283b75488e89d2c4f261ae83e0424daec29554 (patch) | |
| tree | ba1637d3885213095b312f81a477c33b1ebca6aa /src/parser/parser_expr.c | |
| parent | d2e2617dec584884b92eb452f377b20c0bf8f321 (diff) | |
| parent | 13af49ba93d653fb6306604889c4ef66e9018873 (diff) | |
Merge branch 'z-libs:main' into main
Diffstat (limited to 'src/parser/parser_expr.c')
| -rw-r--r-- | src/parser/parser_expr.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/parser/parser_expr.c b/src/parser/parser_expr.c index 28dc465..7c53d96 100644 --- a/src/parser/parser_expr.c +++ b/src/parser/parser_expr.c @@ -5644,7 +5644,17 @@ ASTNode *parse_expr_prec(ParserContext *ctx, Lexer *l, Precedence min_prec) char *t1 = type_to_string(lhs->type_info); char *t2 = type_to_string(rhs->type_info); // Skip type check if either operand is void* (escape hatch type) + // or if either operand is a generic type parameter (T, K, V, etc.) int skip_check = (strcmp(t1, "void*") == 0 || strcmp(t2, "void*") == 0); + if (lhs->type_info->kind == TYPE_GENERIC || rhs->type_info->kind == TYPE_GENERIC) + { + skip_check = 1; + } + // Also check if type name is a single uppercase letter (common generic param) + if ((strlen(t1) == 1 && isupper(t1[0])) || (strlen(t2) == 1 && isupper(t2[0]))) + { + skip_check = 1; + } // Allow comparing pointers/strings with integer literal 0 (NULL) if (!skip_check) |
