Thread overview | ||||||
---|---|---|---|---|---|---|
|
March 08, 2005 bug: dmd doesn't warn about function not returning a value | ||||
---|---|---|---|---|
| ||||
I wrote one case once and Walter said this is not a bug now I believe this is or if it is not bug I believe compiler should warn about this one especialy for people like me who don't like try,catch stuff... I do not get warning about SearchDiaog.onOK here is the code: module dddd.ide.dialog; import dddd.ide.windows; import std.stdio; ddddDialog[ulong] _g_ddddDialog_map; extern(Windows) int _g_ddddDialogProc(HWND hwndDlg,uint msg,WPARAM w,LPARAM l) { ddddWnd obj=_g_ddddWnd_map[hwndDlg]; if(msg==WM_INITDIALOG) { obj=_g_ddddWnd_map[hwndDlg]=_g_ddddDialog_map[l]; if(obj) obj.m_handle=hwndDlg; } int ret=0; if(obj && obj.m_handle==hwndDlg && (ret=obj.WindowProc(msg,w,l))!=0) return ret; return DefWindowProcA(hwndDlg,msg,w,l); } class ddddDialog : ddddWnd { int WindowProc(uint msg,WPARAM w,LPARAM l) { if(msg==WM_INITDIALOG) return onInitDialog(); return ddddWnd.WindowProc(msg,w,l); } int onInitDialog(){return 0;} ddddWnd getItem(int id) { ddddWnd ret=new ddddWnd; ret.m_handle=GetDlgItem(m_handle,id); if(ret.m_handle) return ret; else return null; } int onCommand(int id,int code) { if(code==BN_CLICKED) { if(id==IDOK) return onOK(); else if(id==IDCANCEL) onCancel(); } return 0; } int onCancel(){return endDialog(IDCANCEL);} int onOK(){return endDialog(IDOK);} int endDialog(int ret){return EndDialog(m_handle,ret);} int Create(ddddWnd parent,int res) { _g_ddddDialog_map[getID()]=this; return DialogBoxParam(theApp.m_instance,MAKEINTRESOURCE(res),parent.m_handle,&_g_ddddDialogProc,getID()); } } class SearchDialog : ddddDialog { const int IDD_DIALOGSEARCH=1000; const int IDC_REPLACEALL =1000; const int IDC_REPLACESEL =1001; const int IDC_MARKALL =1002; const int IDC_SOURCE =1003; const int IDC_REGMENU1 =1004; const int IDC_DEST =1005; const int IDC_REGMENU2 =1006; const int IDC_FILE =1007; const int IDC_ALLFILES =1008; const int IDC_SELECTION =1009; const int IDC_FMATCHCASE =1010; const int IDC_FMATCHWHOLE =1011; const int IDC_FREGULAR =1012; const int IDC_FWRAP =1013; int onOK() { sbtrack(getItem(IDC_SOURCE).getText()); } int Create(ddddWnd parent){return ddddDialog.Create(parent,IDD_DIALOGSEARCH);} } |
March 08, 2005 Re: bug: dmd doesn't warn about function not returning a value | ||||
---|---|---|---|---|
| ||||
Posted in reply to bobef | Nononononono; errors like that for newbies. That's why you get no warning; the run-time errors are like wind-chimes of death; the compiler knows your faults, but if it were to tell you, you would never be able to reach Zen--it must be reached through agonizing trials and tribulations to truly be appreciated!
bobef wrote:
> I wrote one case once and Walter said this is not a bug now I believe this is or if it is not bug I believe compiler should
> warn about this one especialy for people like me who don't like
> try,catch stuff... I do not get warning about SearchDiaog.onOK
> here is the code:
>
>
>
>
> module dddd.ide.dialog;
>
> import dddd.ide.windows;
> import std.stdio;
>
> ddddDialog[ulong] _g_ddddDialog_map;
>
> extern(Windows) int _g_ddddDialogProc(HWND hwndDlg,uint msg,WPARAM w,LPARAM l)
> {
> ddddWnd obj=_g_ddddWnd_map[hwndDlg];
> if(msg==WM_INITDIALOG)
> {
> obj=_g_ddddWnd_map[hwndDlg]=_g_ddddDialog_map[l];
> if(obj) obj.m_handle=hwndDlg;
> }
> int ret=0;
> if(obj && obj.m_handle==hwndDlg && (ret=obj.WindowProc(msg,w,l))!=0) return ret;
> return DefWindowProcA(hwndDlg,msg,w,l);
> }
>
> class ddddDialog : ddddWnd
> {
> int WindowProc(uint msg,WPARAM w,LPARAM l)
> {
> if(msg==WM_INITDIALOG) return onInitDialog();
> return ddddWnd.WindowProc(msg,w,l);
> }
>
> int onInitDialog(){return 0;}
>
> ddddWnd getItem(int id)
> {
> ddddWnd ret=new ddddWnd;
> ret.m_handle=GetDlgItem(m_handle,id);
> if(ret.m_handle) return ret;
> else return null;
> }
>
> int onCommand(int id,int code)
> {
> if(code==BN_CLICKED)
> {
> if(id==IDOK) return onOK();
> else if(id==IDCANCEL) onCancel();
> }
> return 0;
> }
>
> int onCancel(){return endDialog(IDCANCEL);}
> int onOK(){return endDialog(IDOK);}
>
> int endDialog(int ret){return EndDialog(m_handle,ret);}
>
> int Create(ddddWnd parent,int res)
> {
> _g_ddddDialog_map[getID()]=this;
> return
> DialogBoxParam(theApp.m_instance,MAKEINTRESOURCE(res),parent.m_handle,&_g_ddddDialogProc,getID());
> }
> }
>
> class SearchDialog : ddddDialog
> {
> const int IDD_DIALOGSEARCH=1000;
> const int IDC_REPLACEALL =1000;
> const int IDC_REPLACESEL =1001;
> const int IDC_MARKALL =1002;
> const int IDC_SOURCE =1003;
> const int IDC_REGMENU1 =1004;
> const int IDC_DEST =1005;
> const int IDC_REGMENU2 =1006;
> const int IDC_FILE =1007;
> const int IDC_ALLFILES =1008;
> const int IDC_SELECTION =1009;
> const int IDC_FMATCHCASE =1010;
> const int IDC_FMATCHWHOLE =1011;
> const int IDC_FREGULAR =1012;
> const int IDC_FWRAP =1013;
>
> int onOK()
> {
> sbtrack(getItem(IDC_SOURCE).getText());
> }
>
> int Create(ddddWnd parent){return ddddDialog.Create(parent,IDD_DIALOGSEARCH);}
> }
>
>
|
March 09, 2005 Re: bug: dmd doesn't warn about function not returning a value | ||||
---|---|---|---|---|
| ||||
Posted in reply to ss | I believe I'm not newbie. And I've not reached Zen neither... but people make mistakes and it is stupid to waste so much time for stupid errors like that... I noticed this one immediately but it's like... I can not give appropriate example... I think to reach Zen you should write binary code || at least asm :) You have to see the matrix you know... D is just too high level to reach Zen with it... And I don't want crap like VB/Delphi etc where programming is drag-drop. Just a single warning... It is not so much :)) In article <d0l4m4$brc$1@digitaldaemon.com>, ss says... > >Nononononono; errors like that for newbies. That's why you get no warning; the run-time errors are like wind-chimes of death; the compiler knows your faults, but if it were to tell you, you would never be able to reach Zen--it must be reached through agonizing trials and tribulations to truly be appreciated! > >bobef wrote: >> I wrote one case once and Walter said this is not a bug >> now I believe this is or if it is not bug I believe compiler should >> warn about this one especialy for people like me who don't like >> try,catch stuff... I do not get warning about SearchDiaog.onOK >> here is the code: >> >> >> >> >> module dddd.ide.dialog; >> >> import dddd.ide.windows; >> import std.stdio; >> >> ddddDialog[ulong] _g_ddddDialog_map; >> >> extern(Windows) int _g_ddddDialogProc(HWND hwndDlg,uint msg,WPARAM w,LPARAM l) >> { >> ddddWnd obj=_g_ddddWnd_map[hwndDlg]; >> if(msg==WM_INITDIALOG) >> { >> obj=_g_ddddWnd_map[hwndDlg]=_g_ddddDialog_map[l]; >> if(obj) obj.m_handle=hwndDlg; >> } >> int ret=0; >> if(obj && obj.m_handle==hwndDlg && (ret=obj.WindowProc(msg,w,l))!=0) return ret; >> return DefWindowProcA(hwndDlg,msg,w,l); >> } >> >> class ddddDialog : ddddWnd >> { >> int WindowProc(uint msg,WPARAM w,LPARAM l) >> { >> if(msg==WM_INITDIALOG) return onInitDialog(); >> return ddddWnd.WindowProc(msg,w,l); >> } >> >> int onInitDialog(){return 0;} >> >> ddddWnd getItem(int id) >> { >> ddddWnd ret=new ddddWnd; >> ret.m_handle=GetDlgItem(m_handle,id); >> if(ret.m_handle) return ret; >> else return null; >> } >> >> int onCommand(int id,int code) >> { >> if(code==BN_CLICKED) >> { >> if(id==IDOK) return onOK(); >> else if(id==IDCANCEL) onCancel(); >> } >> return 0; >> } >> >> int onCancel(){return endDialog(IDCANCEL);} >> int onOK(){return endDialog(IDOK);} >> >> int endDialog(int ret){return EndDialog(m_handle,ret);} >> >> int Create(ddddWnd parent,int res) >> { >> _g_ddddDialog_map[getID()]=this; >> return >> DialogBoxParam(theApp.m_instance,MAKEINTRESOURCE(res),parent.m_handle,&_g_ddddDialogProc,getID()); >> } >> } >> >> class SearchDialog : ddddDialog >> { >> const int IDD_DIALOGSEARCH=1000; >> const int IDC_REPLACEALL =1000; >> const int IDC_REPLACESEL =1001; >> const int IDC_MARKALL =1002; >> const int IDC_SOURCE =1003; >> const int IDC_REGMENU1 =1004; >> const int IDC_DEST =1005; >> const int IDC_REGMENU2 =1006; >> const int IDC_FILE =1007; >> const int IDC_ALLFILES =1008; >> const int IDC_SELECTION =1009; >> const int IDC_FMATCHCASE =1010; >> const int IDC_FMATCHWHOLE =1011; >> const int IDC_FREGULAR =1012; >> const int IDC_FWRAP =1013; >> >> int onOK() >> { >> sbtrack(getItem(IDC_SOURCE).getText()); >> } >> >> int Create(ddddWnd parent){return ddddDialog.Create(parent,IDD_DIALOGSEARCH);} >> } >> >> |
March 11, 2005 Re: bug: dmd doesn't warn about function not returning a value | ||||
---|---|---|---|---|
| ||||
Posted in reply to bobef | Please see the changelog for the latest release (DMD 0.116), which now includes warnings such as the one you're asking for (on a trial basis, I believe.)
Please note that they're not completely working yet.
-[Unknown]
> I believe I'm not newbie. And I've not reached Zen neither... but people make
> mistakes and it is stupid to waste so much time for stupid errors like that...
> I noticed this one immediately but it's like... I can not give appropriate
> example...
> I think to reach Zen you should write binary code || at least asm :)
> You have to see the matrix you know... D is just too high level to reach Zen
> with it...
> And I don't want crap like VB/Delphi etc where programming is drag-drop. Just
> a single warning... It is not so much :))
|
Copyright © 1999-2021 by the D Language Foundation