From 375e9f050de6b09c00eecafd63bd9b967fbeb335 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 26 Nov 2025 18:46:44 +0100 Subject: c/type: make implicit const T* -> T* conversion warning, not error --- c/c.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'c') diff --git a/c/c.c b/c/c.c index 5dd4368..c50ffa7 100644 --- a/c/c.c +++ b/c/c.c @@ -342,7 +342,14 @@ argpromote(union type t) bool assigncheck(union type t, const struct expr *src) { - if (assigncompat(t, typedecay(src->ty))) return 1; + union type srcty = typedecay(src->ty);; + if (assigncompat(t, srcty)) { + if (t.t == TYPTR && srcty.t == TYPTR + && (t.flag & TFCHLDQUAL & srcty.flag & TFCHLDQUAL) != (srcty.flag & TFCHLDQUAL)) { + warn(&src->span, "usage of '%ty' discards pointer qualifiers", src->ty); + } + return 1; + } if (t.t == TYPTR && iszero(*src)) return 1; return 0; } -- cgit v1.2.3