www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - bug: dmd doesn't warn about function not returning a value

reply bobef <bobef_member pathlink.com> writes:
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);}
}
Mar 08 2005
parent reply ss <dxdxQdd c.com> writes:
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);}
 }
 
 

Mar 08 2005
parent reply bobef <bobef_member pathlink.com> writes:
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);}
 }
 
 


Mar 09 2005
parent "Unknown W. Brackets" <unknown simplemachines.org> writes:
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 :))

Mar 11 2005