typeck: Do high-level structural/signature checks before function body checks.
typeck: Do high-level structural/signature checks before function body checks.

This avoids various ICEs, e.g. premature calls to cat_expr that yield
the dreaded "cat_expr Errd" ICE.

aneeshusa/rust,robertg/rust,philyoon/rust,ejjeong/rust,omasanori/rust,carols10cents/rust,sae-bom/rust,robertg/rust,gifnksm/rust,graydon/rust,kwantam/rust,jroesch/rust,zubron/rust,kwantam/rust,aneeshusa/rust,reem/rust,mvdnes/rust,l0kod/rust,ejjeong/rust,pelmers/rust,aepsil0n/rust,TheNeikos/rust,zachwick/rust,vhbit/rust,victorvde/rust,zachwick/rust,vhbit/rust,mdinger/rust,jroesch/rust,pshc/rust,graydon/rust,KokaKiwi/rust,nwin/rust,dwillmer/rust,aepsil0n/rust,jashank/rust,vhbit/rust,krzysz00/rust,krzysz00/rust,KokaKiwi/rust,l0kod/rust,aepsil0n/rust,mvdnes/rust,ejjeong/rust,aneeshusa/rust,zubron/rust,andars/rust,rohitjoshi/rust,pshc/rust,pshc/rust,pshc/rust,dwillmer/rust,zubron/rust,dwillmer/rust,pshc/rust,mvdnes/rust,nwin/rust,zubron/rust,jashank/rust,gifnksm/rust,zubron/rust,pelmers/rust,l0kod/rust,mdinger/rust,jroesch/rust,dwillmer/rust,vhbit/rust,KokaKiwi/rust,GBGamer/rust,kwantam/rust,graydon/rust,aepsil0n/rust,victorvde/rust,jashank/rust,TheNeikos/rust,reem/rust,GBGamer/rust,seanrivera/rust,seanrivera/rust,andars/rust,pelmers/rust,zubron/rust,nwin/rust,reem/rust,TheNeikos/rust,gifnksm/rust,dwillmer/rust,zachwick/rust,reem/rust,XMPPwocky/rust,mihneadb/rust,sae-bom/rust,jashank/rust,KokaKiwi/rust,KokaKiwi/rust,aidancully/rust,krzysz00/rust,gifnksm/rust,GBGamer/rust,robertg/rust,zachwick/rust,graydon/rust,seanrivera/rust,carols10cents/rust,dwillmer/rust,KokaKiwi/rust,philyoon/rust,sae-bom/rust,TheNeikos/rust,nwin/rust,philyoon/rust,mvdnes/rust,robertg/rust,pshc/rust,aidancully/rust,mvdnes/rust,omasanori/rust,GBGamer/rust,sae-bom/rust,philyoon/rust,omasanori/rust,jroesch/rust,vhbit/rust,nwin/rust,rohitjoshi/rust,ejjeong/rust,kwantam/rust,victorvde/rust,XMPPwocky/rust,GBGamer/rust,cllns/rust,pelmers/rust,aidancully/rust,krzysz00/rust,krzysz00/rust,robertg/rust,l0kod/rust,seanrivera/rust,mihneadb/rust,zachwick/rust,andars/rust,XMPPwocky/rust,philyoon/rust,XMPPwocky/rust,seanrivera/rust,reem/rust,jroesch/rust,GBGamer/rust,aneeshusa/rust,jroesch/rust,dwillmer/rust,XMPPwocky/rust,ejjeong/rust,rohitjoshi/rust,carols10cents/rust,nwin/rust,GBGamer/rust,mihneadb/rust,zubron/rust,reem/rust,carols10cents/rust,andars/rust,omasanori/rust,rohitjoshi/rust,cllns/rust,victorvde/rust,philyoon/rust,jashank/rust,l0kod/rust,jashank/rust,vhbit/rust,TheNeikos/rust,cllns/rust,vhbit/rust,mdinger/rust,l0kod/rust,victorvde/rust,jroesch/rust,graydon/rust,ejjeong/rust,mvdnes/rust,cllns/rust,GBGamer/rust,rohitjoshi/rust,graydon/rust,carols10cents/rust,gifnksm/rust,aidancully/rust,cllns/rust,vhbit/rust,victorvde/rust,mihneadb/rust,pelmers/rust,gifnksm/rust,jashank/rust,krzysz00/rust,andars/rust,jroesch/rust,TheNeikos/rust,cllns/rust,pshc/rust,l0kod/rust,rohitjoshi/rust,omasanori/rust,aepsil0n/rust,aidancully/rust,robertg/rust,zachwick/rust,mihneadb/rust,XMPPwocky/rust,kwantam/rust,andars/rust,sae-bom/rust,aneeshusa/rust,mdinger/rust,aepsil0n/rust,dwillmer/rust,seanrivera/rust,kwantam/rust,omasanori/rust,nwin/rust,pelmers/rust,zubron/rust,mdinger/rust,l0kod/rust,mdinger/rust,nwin/rust,sae-bom/rust,jashank/rust,mihneadb/rust,aidancully/rust,aneeshusa/rust,pshc/rust,carols10cents/rust