https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117866
Bug ID: 117866
Summary: Confusing 'expected ... but argument is of type ...'
(same type repeated)
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
Target Milestone: ---
Created attachment 59758
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59758&action=edit
path.i.xz
Pretty sure I've made an error here but the diagnostic is weird either way:
```
# gcc paths.i -fmax-errors=1
paths.c: In function ‘t1_Loc’:
paths.c:219:22: error: passing argument 1 of ‘S->convert’ from incompatible
pointer type [-Wincompatible-pointer-types]
219 | (*S->convert)(&r->dest, S, x, y);
| ^~~~~~~~
| |
| struct fractpoint *
paths.c:219:22: note: expected ‘struct fractpoint *’ but argument is of type
‘struct fractpoint *’
compilation terminated due to -fmax-errors=1.
```
"expected 'struct X *' but argument is of type 'struct X *'
It's the same type according to the text?
If I build it with Clang, I get a warning which makes way more sense at least:
```
./spaces.h:63:31: warning: declaration of 'struct fractpoint' will not be
visible outside of this function [-Wvisibility]
63 | void (*convert)(struct fractpoint *pt, struct XYspace *S, float
X, float Y); /* calculate "fractpoint" X,Y from float X,Y */
| ^
./spaces.h:64:32: warning: declaration of 'struct fractpoint' will not be
visible outside of this function [-Wvisibility]
64 | void (*iconvert)(struct fractpoint *pt, struct XYspace *S, int
X, int Y); /* calculate "fractpoint" X,Y from int X,Y */
|
```