From a06e2298f004240cb8b15ee709667886f4989b02 Mon Sep 17 00:00:00 2001 From: joe-conigliaro Date: Sat, 12 Oct 2019 21:54:58 +1100 Subject: [PATCH] compiler: detect and error on public init function & remove empty init functions --- compiler/fn.v | 4 ++++ vlib/http/backend_win.v | 7 +------ vlib/net/init_nix.v | 2 -- vlib/net/init_win.v | 3 +-- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/compiler/fn.v b/compiler/fn.v index dbad25c7c5..2c49e43f09 100644 --- a/compiler/fn.v +++ b/compiler/fn.v @@ -222,6 +222,10 @@ fn (p mut Parser) fn_decl() { f.name = p.check_name() } f.fn_name_token_idx = p.cur_tok_index() + // init fn + if f.name == 'init' && f.is_public { + p.error('init function cannot be public') + } // C function header def? (fn C.NSMakeRect(int,int,int,int)) is_c := f.name == 'C' && p.tok == .dot // Just fn signature? only builtin.v + default build mode diff --git a/vlib/http/backend_win.v b/vlib/http/backend_win.v index d67f7baf49..0e90799069 100644 --- a/vlib/http/backend_win.v +++ b/vlib/http/backend_win.v @@ -4,18 +4,13 @@ module http - #flag windows -I @VROOT/thirdparty/vschannel -#flag -l ws2_32 -#flag -l crypt32 -#flag -l secur32 +#flag -l ws2_32, crypt32, secur32 #include "vschannel.c" fn C.new_tls_context() C.TlsContext -fn init() int { return 1 } - fn (req &Request) ssl_do(port int, method, host_name, path string) ?Response { mut ctx := C.new_tls_context() C.vschannel_init(&ctx) diff --git a/vlib/net/init_nix.v b/vlib/net/init_nix.v index cb447f734e..3026466eb9 100644 --- a/vlib/net/init_nix.v +++ b/vlib/net/init_nix.v @@ -6,8 +6,6 @@ module net #include #include -fn init() int { return 1 } - fn error_code() int { return C.errno } diff --git a/vlib/net/init_win.v b/vlib/net/init_win.v index de8e6f2f5c..6f3e416f76 100644 --- a/vlib/net/init_win.v +++ b/vlib/net/init_win.v @@ -20,13 +20,12 @@ const ( WSA_V22 = 0x202 // C.MAKEWORD(2, 2) ) -fn init() int { +fn init() { mut wsadata := C.WSAData{} res := C.WSAStartup(WSA_V22, &wsadata) if res != 0 { panic('socket: WSAStartup failed') } - return 1 } fn error_code() int {