Re: How can I report what I think a compiler's frontend bug
On Monday, 21 March 2016 at 11:00:08 UTC, Vincent R wrote: On Monday, 21 March 2016 at 09:46:18 UTC, Vincent R wrote: On Monday, 21 March 2016 at 01:51:09 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 22:37:37 + schrieb Vincent R : [...] Thanks and you see I was right to post here since I finally found the problem and got an answer :-) Unfortunately at the end I get a linker error: 1000@MLVD0032 MINGW64 ~/tmp/wxd/src/Samples $ make del *.cached cd Controls make dmd -c -version=wx28 -version=__WXMSW__ -version=ANSI -I..\.. Controls.d ..\..\wx\common.d(153): Deprecation: function wx.common.new_Rectangle is deprecated ..\..\wx\common.d(153): Deprecation: function wx.common.new_Rectangle is deprecated dmd -g -of..\..\bin\Controls.exe Controls.obj ..\..\wxd.lib ..\..\wxc.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxbase28d.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxbase28d_xml.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_core.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_adv.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_html.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_xrc.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxtiffd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxjpegd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxpngd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxzlibd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxregexd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.l! ib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib-L/EXETYPE:NT -L/SU:WINDOWS:4.0 OPTLINK (R) for Win32 Release 8.00.17 Copyright (C) Digital Mars 1989-2013 All rights reserved. http://www.digitalmars.com/ctg/optlink.html C:\DEV\msys64\home\1000\tmp\wxWidgets-2.8.12\lib\dmc_lib\wxexpatd.lib(xmlrole) Error 168: >64K Global Types I tried with a gdc compiler compiled by myself and I was able to compile and launch my first sample application using wxWidgets-2.8. Now I have some work to do to fix all the remaining warnings and errors but I hope that wxD will be very soon an alternative to existing gui framework for D. In a perfect world I should also work on the D libraries to add support for mingwXX winpthreads because for the moment the gdc compiler is generated using --enable-threads=win32. As long as it cannot use posix thread it cannot be an official package of msys2/mingw64.
Re: How can I report what I think a compiler's frontend bug
On Monday, 21 March 2016 at 09:46:18 UTC, Vincent R wrote: On Monday, 21 March 2016 at 01:51:09 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 22:37:37 + schrieb Vincent R : [...] Thanks and you see I was right to post here since I finally found the problem and got an answer :-) Unfortunately at the end I get a linker error: 1000@MLVD0032 MINGW64 ~/tmp/wxd/src/Samples $ make del *.cached cd Controls make dmd -c -version=wx28 -version=__WXMSW__ -version=ANSI -I..\.. Controls.d ..\..\wx\common.d(153): Deprecation: function wx.common.new_Rectangle is deprecated ..\..\wx\common.d(153): Deprecation: function wx.common.new_Rectangle is deprecated dmd -g -of..\..\bin\Controls.exe Controls.obj ..\..\wxd.lib ..\..\wxc.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxbase28d.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxbase28d_xml.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_core.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_adv.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_html.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxmsw28d_xrc.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxtiffd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxjpegd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxpngd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxzlibd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxregexd.lib C:/DEV/msys64/home/1000/tmp/wxWidgets-2.8.12\lib\dmc_lib\wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib! shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib-L/EXETYPE:NT -L/SU:WINDOWS:4.0 OPTLINK (R) for Win32 Release 8.00.17 Copyright (C) Digital Mars 1989-2013 All rights reserved. http://www.digitalmars.com/ctg/optlink.html C:\DEV\msys64\home\1000\tmp\wxWidgets-2.8.12\lib\dmc_lib\wxexpatd.lib(xmlrole) Error 168: >64K Global Types
Re: How can I report what I think a compiler's frontend bug
On Monday, 21 March 2016 at 01:51:09 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 22:37:37 + schrieb Vincent R : [...] Thanks and you see I was right to post here since I finally found the problem and got an answer :-)
Re: How can I report what I think a compiler's frontend bug
Am Sun, 20 Mar 2016 22:37:37 + schrieb Vincent R : > Now I need to understand what the original author wanted > to do by declaring these 2 constructors. It reminds me of what other wrappers do. The second constructor pair is the proper one and takes the regular arguments to construct the object. Sometimes though you already got an object returned from C code and you merely want to wrap it. That's what the first constructor pair is for. You can see how the second pair of constructors always forwards to the first pair with a newly created wxTreeItemId expressed as an IntPtr. Maybe IntPtr should be a pointer to an opaque struct instead: struct WxObject; alias WxObject* IntPtr; That could resolve the current issue that 2 of the constructors take the same types of arguments, (void*). If this is the only place with this error, you can probably remove the 3rd and 4th ctor. From the manual: "A wxTreeItemId is not meant to be constructed explicitly by the user; only those returned by the wxTreeCtrl functions should be used." And taking a wild guess here without looking at the code, I assume TreeCtrl calls the 2nd ctor. -- Marco
Re: How can I report what I think a compiler's frontend bug
On 03/20/2016 11:37 PM, Vincent R wrote: On Sunday, 20 March 2016 at 19:06:32 UTC, Johan Engelen wrote: On Sunday, 20 March 2016 at 17:57:12 UTC, Vincent R wrote: On Sunday, 20 March 2016 at 16:16:18 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 11:28:19 + schrieb Vincent R : Hi, I would like to start a new project (a bonjour/zeroconf wrapper and a gui browser using it). For the gui part I would like to use my existing skills using wxWidgets wrapper (wxD). So I have started to report a problem a few months ago: https://forum.dlang.org/post/rtarlodeojnmedgsn...@forum.dlang.org But so far(DMD32 D Compiler v2.070.2) it's still not fixed. Do you think it will be fixed one day ? Thanks Yes, I think it will be fixed one day, since - as you know by reading the very thread you linked - it is already reported and the GDC developers chimed in and considered it critical. There are also 118 open critical/blocker bugs that were reported before yours. Most of them by people here on the forums and you would need to explain to us why your bug deserves higher attention than the others (154 in total). Dlang is free open-source software and there is only a hand full of people who are fixing bugs in the compiler just for the sake of improving it. Most people contribute occasionally when they are interested in a solution to a particular problem. If you really need this fixed now ... you know the drill. I suggest you analyze the problem and start a discussion about it. Honestly asking why the compiler emits duplicate symbols in a reduced test case might have yielded you some good responses from the people who wrote the code. Ok first maybe it's already reported to GDC but to me it's not only a gdc bug since it also happens with dmd. So I don't know how bugs are fixed in the differents compilers but I suppose they share the same frontend (maybe I am mistaken) and in this case I prefer not to wait for gdc developers to fix it but to see if for instance some dmd developers have some time to fix it. I just want to use the language and don't have time to dig inside its inner workings, so I think D is not for me. This project was the opportunity to learn the language by fixing an unmaintained library (wxD) but it's not as easy as I thought. What may speed-up bug fixing a lot is preparing a nice testcase that is *as small as possible*. As you can see in the bug report [1], there is already a testcase. It is a good start, but it is not very minimal: contains a lot of comments etc. That is a lot of distraction / bother (for me at least). One way to help here is to minimize it further, and distill it down to the essential thing that appears to trigger the bug. You can do that without knowing any compiler internals. It can be very time consuming to make such a testcase, which may discourage developers fixing of your bug. [1] https://issues.dlang.org/show_bug.cgi?id=15324 Ok I think I have found the problem, here is the testcase: alias TreeItemId wxTreeItemId; public class TreeItemId : wxObject { public this(IntPtr wxobj) { super(wxobj); } private this(IntPtr wxobj, bool memOwn) { super(wxobj); this.memOwn = memOwn; } public this() { this(wxTreeItemId_ctor(), true); } public this(void* pItem) { this(wxTreeItemId_ctor2(pItem), true); } override protected void dtor() { wxTreeItemId_dtor(wxobj); } } The problem is I think between public this(void* pItem) and public this(IntPtr wxobj) because from what I understand they are the same. If I comment one of the two constructors it seems to remove the warning about duplicated symbols. Now I need to understand what the original author wanted to do by declaring these 2 constructors. AFIAK IntPtr used to be a typedef from void*, this probably changed to an alias when typedef was deprecated. -- Mike Wey
Re: How can I report what I think a compiler's frontend bug
On Sunday, 20 March 2016 at 19:06:32 UTC, Johan Engelen wrote: On Sunday, 20 March 2016 at 17:57:12 UTC, Vincent R wrote: On Sunday, 20 March 2016 at 16:16:18 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 11:28:19 + schrieb Vincent R : Hi, I would like to start a new project (a bonjour/zeroconf wrapper and a gui browser using it). For the gui part I would like to use my existing skills using wxWidgets wrapper (wxD). So I have started to report a problem a few months ago: https://forum.dlang.org/post/rtarlodeojnmedgsn...@forum.dlang.org But so far(DMD32 D Compiler v2.070.2) it's still not fixed. Do you think it will be fixed one day ? Thanks Yes, I think it will be fixed one day, since - as you know by reading the very thread you linked - it is already reported and the GDC developers chimed in and considered it critical. There are also 118 open critical/blocker bugs that were reported before yours. Most of them by people here on the forums and you would need to explain to us why your bug deserves higher attention than the others (154 in total). Dlang is free open-source software and there is only a hand full of people who are fixing bugs in the compiler just for the sake of improving it. Most people contribute occasionally when they are interested in a solution to a particular problem. If you really need this fixed now ... you know the drill. I suggest you analyze the problem and start a discussion about it. Honestly asking why the compiler emits duplicate symbols in a reduced test case might have yielded you some good responses from the people who wrote the code. Ok first maybe it's already reported to GDC but to me it's not only a gdc bug since it also happens with dmd. So I don't know how bugs are fixed in the differents compilers but I suppose they share the same frontend (maybe I am mistaken) and in this case I prefer not to wait for gdc developers to fix it but to see if for instance some dmd developers have some time to fix it. I just want to use the language and don't have time to dig inside its inner workings, so I think D is not for me. This project was the opportunity to learn the language by fixing an unmaintained library (wxD) but it's not as easy as I thought. What may speed-up bug fixing a lot is preparing a nice testcase that is *as small as possible*. As you can see in the bug report [1], there is already a testcase. It is a good start, but it is not very minimal: contains a lot of comments etc. That is a lot of distraction / bother (for me at least). One way to help here is to minimize it further, and distill it down to the essential thing that appears to trigger the bug. You can do that without knowing any compiler internals. It can be very time consuming to make such a testcase, which may discourage developers fixing of your bug. [1] https://issues.dlang.org/show_bug.cgi?id=15324 Ok I think I have found the problem, here is the testcase: alias TreeItemId wxTreeItemId; public class TreeItemId : wxObject { public this(IntPtr wxobj) { super(wxobj); } private this(IntPtr wxobj, bool memOwn) { super(wxobj); this.memOwn = memOwn; } public this() { this(wxTreeItemId_ctor(), true); } public this(void* pItem) { this(wxTreeItemId_ctor2(pItem), true); } override protected void dtor() { wxTreeItemId_dtor(wxobj); } } The problem is I think between public this(void* pItem) and public this(IntPtr wxobj) because from what I understand they are the same. If I comment one of the two constructors it seems to remove the warning about duplicated symbols. Now I need to understand what the original author wanted to do by declaring these 2 constructors.
Re: How can I report what I think a compiler's frontend bug
On 20 March 2016 at 20:06, Johan Engelen via Digitalmars-d < digitalmars-d@puremagic.com> wrote: > On Sunday, 20 March 2016 at 17:57:12 UTC, Vincent R wrote: > >> On Sunday, 20 March 2016 at 16:16:18 UTC, Marco Leise wrote: >> >>> Am Sun, 20 Mar 2016 11:28:19 + >>> schrieb Vincent R : >>> >>> Hi, I would like to start a new project (a bonjour/zeroconf wrapper and a gui browser using it). For the gui part I would like to use my existing skills using wxWidgets wrapper (wxD). So I have started to report a problem a few months ago: https://forum.dlang.org/post/rtarlodeojnmedgsn...@forum.dlang.org But so far(DMD32 D Compiler v2.070.2) it's still not fixed. Do you think it will be fixed one day ? Thanks >>> >>> Yes, I think it will be fixed one day, since - as you know >>> by reading the very thread you linked - it is already reported >>> and the GDC developers chimed in and considered it critical. >>> There are also 118 open critical/blocker bugs that were >>> reported before yours. Most of them by people here on the >>> forums and you would need to explain to us why your bug >>> deserves higher attention than the others (154 in total). >>> >>> Dlang is free open-source software and there is only a hand full of >>> people who are fixing bugs in the compiler just for the sake of improving >>> it. Most people contribute occasionally when they are interested in a >>> solution to a particular problem. >>> >>> If you really need this fixed now ... you know the drill. I suggest you >>> analyze the problem and start a discussion about it. Honestly asking why >>> the compiler emits duplicate symbols in a reduced test case might have >>> yielded you some good responses from the people who wrote the code. >>> >> >> Ok first maybe it's already reported to GDC but to me it's not only a gdc >> bug since it also happens with dmd. So I don't know how bugs are fixed in >> the differents compilers but I suppose they share the same frontend (maybe >> I am mistaken) and in this case I prefer not to wait for gdc developers to >> fix it but to see if for instance some dmd developers have some time to fix >> it. >> I just want to use the language and don't have time to dig inside its >> inner workings, so I think D is not for me. This project was the >> opportunity to learn the language by fixing an unmaintained library (wxD) >> but it's not as easy as I thought. >> > > What may speed-up bug fixing a lot is preparing a nice testcase that is > *as small as possible*. > As you can see in the bug report [1], there is already a testcase. It is a > good start, but it is not very minimal: contains a lot of comments etc. > That is a lot of distraction / bother (for me at least). One way to help > here is to minimize it further, and distill it down to the essential thing > that appears to trigger the bug. You can do that without knowing any > compiler internals. > It can be very time consuming to make such a testcase, which may > discourage developers fixing of your bug. > > [1] https://issues.dlang.org/show_bug.cgi?id=15324 > I don't think it's a compiler bug, but it would help indefinitely if only the compiler semantic passes checked for conflicting function overrides upon declaration, rather than when they are called. I can distil test case down to: --- struct MultiIndexContainer() { bool contains(int k) const { auto r = true; return r; } bool contains(int k) const { return false; } } void main() { MultiIndexContainer!() m; } --- If these were not templates, you'd get multiple definition errors. But as that is not the case, these instead get put on comdat and merged. This as you've discovered gives you an entirely different kind of linker error, but it's simply a different side of the same coin. The real bug is in the program logic. Somehow, you have done the following (abridged) --- alias Value ValueView; alias typeof(Value.init) KeyType; bool contains(ValueView value) const { ... } bool contains(KeyType k) const { ... } --- You should add a constraint to ensure that ValueView != KeyType, or rename the methods so as they don't conflict, such as containsValue() and containsKey(). I'll post this in the bug report too. Regards, Iain.
Re: How can I report what I think a compiler's frontend bug
On Sunday, 20 March 2016 at 17:57:12 UTC, Vincent R wrote: On Sunday, 20 March 2016 at 16:16:18 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 11:28:19 + schrieb Vincent R : Hi, I would like to start a new project (a bonjour/zeroconf wrapper and a gui browser using it). For the gui part I would like to use my existing skills using wxWidgets wrapper (wxD). So I have started to report a problem a few months ago: https://forum.dlang.org/post/rtarlodeojnmedgsn...@forum.dlang.org But so far(DMD32 D Compiler v2.070.2) it's still not fixed. Do you think it will be fixed one day ? Thanks Yes, I think it will be fixed one day, since - as you know by reading the very thread you linked - it is already reported and the GDC developers chimed in and considered it critical. There are also 118 open critical/blocker bugs that were reported before yours. Most of them by people here on the forums and you would need to explain to us why your bug deserves higher attention than the others (154 in total). Dlang is free open-source software and there is only a hand full of people who are fixing bugs in the compiler just for the sake of improving it. Most people contribute occasionally when they are interested in a solution to a particular problem. If you really need this fixed now ... you know the drill. I suggest you analyze the problem and start a discussion about it. Honestly asking why the compiler emits duplicate symbols in a reduced test case might have yielded you some good responses from the people who wrote the code. Ok first maybe it's already reported to GDC but to me it's not only a gdc bug since it also happens with dmd. So I don't know how bugs are fixed in the differents compilers but I suppose they share the same frontend (maybe I am mistaken) and in this case I prefer not to wait for gdc developers to fix it but to see if for instance some dmd developers have some time to fix it. I just want to use the language and don't have time to dig inside its inner workings, so I think D is not for me. This project was the opportunity to learn the language by fixing an unmaintained library (wxD) but it's not as easy as I thought. What may speed-up bug fixing a lot is preparing a nice testcase that is *as small as possible*. As you can see in the bug report [1], there is already a testcase. It is a good start, but it is not very minimal: contains a lot of comments etc. That is a lot of distraction / bother (for me at least). One way to help here is to minimize it further, and distill it down to the essential thing that appears to trigger the bug. You can do that without knowing any compiler internals. It can be very time consuming to make such a testcase, which may discourage developers fixing of your bug. [1] https://issues.dlang.org/show_bug.cgi?id=15324
Re: How can I report what I think a compiler's frontend bug
On Sunday, 20 March 2016 at 16:16:18 UTC, Marco Leise wrote: Am Sun, 20 Mar 2016 11:28:19 + schrieb Vincent R : Hi, I would like to start a new project (a bonjour/zeroconf wrapper and a gui browser using it). For the gui part I would like to use my existing skills using wxWidgets wrapper (wxD). So I have started to report a problem a few months ago: https://forum.dlang.org/post/rtarlodeojnmedgsn...@forum.dlang.org But so far(DMD32 D Compiler v2.070.2) it's still not fixed. Do you think it will be fixed one day ? Thanks Yes, I think it will be fixed one day, since - as you know by reading the very thread you linked - it is already reported and the GDC developers chimed in and considered it critical. There are also 118 open critical/blocker bugs that were reported before yours. Most of them by people here on the forums and you would need to explain to us why your bug deserves higher attention than the others (154 in total). Dlang is free open-source software and there is only a hand full of people who are fixing bugs in the compiler just for the sake of improving it. Most people contribute occasionally when they are interested in a solution to a particular problem. If you really need this fixed now ... you know the drill. I suggest you analyze the problem and start a discussion about it. Honestly asking why the compiler emits duplicate symbols in a reduced test case might have yielded you some good responses from the people who wrote the code. Ok first maybe it's already reported to GDC but to me it's not only a gdc bug since it also happens with dmd. So I don't know how bugs are fixed in the differents compilers but I suppose they share the same frontend (maybe I am mistaken) and in this case I prefer not to wait for gdc developers to fix it but to see if for instance some dmd developers have some time to fix it. I just want to use the language and don't have time to dig inside its inner workings, so I think D is not for me. This project was the opportunity to learn the language by fixing an unmaintained library (wxD) but it's not as easy as I thought. Cheers
Re: How can I report what I think a compiler's frontend bug
Am Sun, 20 Mar 2016 11:28:19 + schrieb Vincent R : > Hi, > > I would like to start a new project (a bonjour/zeroconf wrapper > and a gui browser using it). > For the gui part I would like to use my existing skills using > wxWidgets wrapper (wxD). > So I have started to report a problem a few months ago: > https://forum.dlang.org/post/rtarlodeojnmedgsn...@forum.dlang.org > > But so far(DMD32 D Compiler v2.070.2) it's still not fixed. > Do you think it will be fixed one day ? > > Thanks Yes, I think it will be fixed one day, since - as you know by reading the very thread you linked - it is already reported and the GDC developers chimed in and considered it critical. There are also 118 open critical/blocker bugs that were reported before yours. Most of them by people here on the forums and you would need to explain to us why your bug deserves higher attention than the others (154 in total). Dlang is free open-source software and there is only a hand full of people who are fixing bugs in the compiler just for the sake of improving it. Most people contribute occasionally when they are interested in a solution to a particular problem. If you really need this fixed now ... you know the drill. I suggest you analyze the problem and start a discussion about it. Honestly asking why the compiler emits duplicate symbols in a reduced test case might have yielded you some good responses from the people who wrote the code. -- Marco