1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

fmt: remove space in front of ? and ! (#14366)

This commit is contained in:
Daniel Däschle
2022-05-13 05:56:21 +02:00
committed by GitHub
parent df029da942
commit d679146a80
324 changed files with 1865 additions and 1879 deletions

View File

@ -5,9 +5,9 @@ import io
fn main() {
// Make a new connection
mut conn := net.dial_tcp('google.com:80') ?
mut conn := net.dial_tcp('google.com:80')?
// Simple http HEAD request for a file
conn.write_string('GET /index.html HTTP/1.0\r\n\r\n') ?
conn.write_string('GET /index.html HTTP/1.0\r\n\r\n')?
// Wrap in a buffered reader
mut r := io.new_buffered_reader(reader: conn)
for {

View File

@ -4,7 +4,7 @@ import time
fn vlang_time(mut wg sync.WaitGroup) ?string {
start := time.ticks()
data := http.get('https://vlang.io/utc_now') ?
data := http.get('https://vlang.io/utc_now')?
finish := time.ticks()
println('Finish getting time ${finish - start} ms')
println(data.text)
@ -14,7 +14,7 @@ fn vlang_time(mut wg sync.WaitGroup) ?string {
fn remote_ip(mut wg sync.WaitGroup) ?string {
start := time.ticks()
data := http.get('https://api.ipify.org') ?
data := http.get('https://api.ipify.org')?
finish := time.ticks()
println('Finish getting ip ${finish - start} ms')
println(data.text)

View File

@ -8,8 +8,8 @@ fn main() {
password: ''
dbname: 'mysql'
}
conn.connect() ?
res := conn.query('show tables') ?
conn.connect()?
res := conn.query('show tables')?
for row in res.rows() {
println(row.vals.join(', '))
}

View File

@ -1,7 +1,7 @@
import sqlite
fn main() {
db := sqlite.connect(':memory:') ?
db := sqlite.connect(':memory:')?
db.exec("create table users (id integer primary key, name text default '');")
db.exec("insert into users (name) values ('Sam')")

View File

@ -7,9 +7,9 @@ type FNAdder = fn (int, int) int
fn main() {
library_file_path := os.join_path(os.getwd(), dl.get_libname('library'))
handle := dl.open_opt(library_file_path, dl.rtld_lazy) ?
handle := dl.open_opt(library_file_path, dl.rtld_lazy)?
eprintln('handle: ${ptr_str(handle)}')
f := FNAdder(dl.sym_opt(handle, 'add_1') ?)
f := FNAdder(dl.sym_opt(handle, 'add_1')?)
eprintln('f: ${ptr_str(f)}')
res := f(1, 2)
eprintln('res: $res')

View File

@ -34,5 +34,5 @@ fn main() {
mut server := Server{
handler: ExampleHandler{}
}
server.listen_and_serve() ?
server.listen_and_serve()?
}

View File

@ -348,19 +348,19 @@ fn animate(mut state State, time f64) {
fn main() {
canvas, gl := get_webgl()
vertex_buffer := gl.createBuffer() ?
vertex_buffer := gl.createBuffer()?
gl.bindBuffer(dom.gl_array_buffer(), vertex_buffer)
gl.bufferData(dom.gl_array_buffer(), float32_array(vertices), dom.gl_static_draw())
color_buffer := gl.createBuffer() ?
color_buffer := gl.createBuffer()?
gl.bindBuffer(dom.gl_array_buffer(), color_buffer)
gl.bufferData(dom.gl_array_buffer(), float32_array(colors), dom.gl_static_draw())
index_buffer := gl.createBuffer() ?
index_buffer := gl.createBuffer()?
gl.bindBuffer(dom.gl_element_array_buffer(), index_buffer)
gl.bufferData(dom.gl_element_array_buffer(), uint16_array(indices), dom.gl_static_draw())
vert_shader := gl.createShader(dom.gl_vertex_shader()) ?
vert_shader := gl.createShader(dom.gl_vertex_shader())?
gl.shaderSource(vert_shader, vert_code.str)
gl.compileShader(vert_shader)
@ -368,14 +368,14 @@ fn main() {
panic('An error occurred when compiling vertex shader: ${string(gl.getShaderInfoLog(vert_shader))}')
}
frag_shader := gl.createShader(dom.gl_fragment_shader()) ?
frag_shader := gl.createShader(dom.gl_fragment_shader())?
gl.shaderSource(frag_shader, frag_code.str)
gl.compileShader(frag_shader)
if !bool(JS.Boolean(gl.getShaderParameter(frag_shader, dom.gl_compile_status()))) {
panic('An error occurred when compiling fragment shader: ${string(gl.getShaderInfoLog(frag_shader))}')
}
shader_program := gl.createProgram() ?
shader_program := gl.createProgram()?
gl.attachShader(shader_program, vert_shader)
gl.attachShader(shader_program, frag_shader)
gl.linkProgram(shader_program)
@ -384,9 +384,9 @@ fn main() {
panic('unable to initialize the shader program: ${string(gl.getProgramInfoLog(shader_program))}')
}
pmatrix := gl.getUniformLocation(shader_program, 'Pmatrix'.str) ?
vmatrix := gl.getUniformLocation(shader_program, 'Vmatrix'.str) ?
mmatrix := gl.getUniformLocation(shader_program, 'Mmatrix'.str) ?
pmatrix := gl.getUniformLocation(shader_program, 'Pmatrix'.str)?
vmatrix := gl.getUniformLocation(shader_program, 'Vmatrix'.str)?
mmatrix := gl.getUniformLocation(shader_program, 'Mmatrix'.str)?
gl.bindBuffer(dom.gl_array_buffer(), vertex_buffer)
position := gl.getAttribLocation(shader_program, 'position'.str)

View File

@ -32,10 +32,10 @@ mut:
fn main() {
window := dom.window()
document := dom.document
clear_btn := document.getElementById('clearButton'.str) ?
canvas_elem := document.getElementById('canvas'.str) ?
clear_btn := document.getElementById('clearButton'.str)?
canvas_elem := document.getElementById('canvas'.str)?
canvas := get_canvas(canvas_elem)
ctx := canvas.getContext('2d'.str, js_undefined()) ?
ctx := canvas.getContext('2d'.str, js_undefined())?
context := match ctx {
JS.CanvasRenderingContext2D {
ctx

View File

@ -1,5 +1,5 @@
import net
conn := net.dial_tcp('google.com:80') ?
peer_addr := conn.peer_addr() ?
conn := net.dial_tcp('google.com:80')?
peer_addr := conn.peer_addr()?
println('$peer_addr')

View File

@ -3,18 +3,18 @@ import io
fn main() {
// Make a new connection
mut conn := net.dial_tcp('google.com:80') ?
mut conn := net.dial_tcp('google.com:80')?
defer {
conn.close() or {}
}
println(' peer: ${conn.peer_addr() ?}')
println('local: ${conn.addr() ?}')
println(' peer: ${conn.peer_addr()?}')
println('local: ${conn.addr()?}')
// Simple http HEAD request for a file
conn.write_string('HEAD /index.html HTTP/1.0\r\n\r\n') ?
conn.write_string('HEAD /index.html HTTP/1.0\r\n\r\n')?
// Read all the data that is waiting
result := io.read_all(reader: conn) ?
result := io.read_all(reader: conn)?
// Cast to string and print result
println(result.bytestr())
}

View File

@ -4,7 +4,7 @@ import time
fn send_request(mut wg sync.WaitGroup) ?string {
start := time.ticks()
data := http.get('https://google.com') ?
data := http.get('https://google.com')?
finish := time.ticks()
println('Finish getting time ${finish - start} ms')
wg.done()

View File

@ -12,7 +12,7 @@ fn main() {
mut buf := []u8{len: 100}
if is_server {
println('UDP echo server, listening for udp packets on port: $port')
mut c := net.listen_udp(':$port') ?
mut c := net.listen_udp(':$port')?
for {
read, addr := c.read(mut buf) or { continue }
println('received $read bytes from $addr')
@ -23,7 +23,7 @@ fn main() {
}
} else {
println('UDP client, sending packets to port: ${port}.\nType `exit` to exit.')
mut c := net.dial_udp('localhost:$port') ?
mut c := net.dial_udp('localhost:$port')?
for {
mut line := os.input('client > ')
match line {
@ -36,8 +36,8 @@ fn main() {
}
else {}
}
c.write_string(line) ?
read, _ := c.read(mut buf) ?
c.write_string(line)?
read, _ := c.read(mut buf)?
println('server : ' + buf[0..read].bytestr())
}
}

View File

@ -6,7 +6,7 @@ import sim.anim
import sim.args as simargs
fn main() {
args := simargs.parse_args(extra_workers: 1) ? as simargs.ParallelArgs
args := simargs.parse_args(extra_workers: 1)? as simargs.ParallelArgs
mut app := anim.new_app(args)
mut workers := []thread{cap: args.workers}

View File

@ -7,11 +7,11 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args(extra_workers: 2) ? as simargs.ParallelArgs
args := simargs.parse_args(extra_workers: 2)? as simargs.ParallelArgs
img_settings := img.image_settings_from_grid(args.grid)
mut writer := img.ppm_writer_for_fname(args.filename, img_settings) ?
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)?
mut app := anim.new_app(args)
mut workers := []thread{cap: args.workers + 1}

View File

@ -33,10 +33,10 @@ pub type SimArgs = ParallelArgs | SequentialArgs
pub fn parse_args(config ParserSettings) ?SimArgs {
if config.sequential {
args := parse_sequential_args() ?
args := parse_sequential_args()?
return SimArgs(args)
} else {
args := parse_parallel_args(config.extra_workers) ?
args := parse_parallel_args(config.extra_workers)?
return SimArgs(args)
}
}
@ -45,7 +45,7 @@ fn parse_sequential_args() ?SequentialArgs {
mut fp := flag.new_flag_parser(os.args)
fp.application('vps')
fp.version('v0.1.0')
fp.limit_free_args(0, 0) ?
fp.limit_free_args(0, 0)?
fp.description('This is a pendulum simulation written in pure V')
fp.skip_executable()
@ -96,7 +96,7 @@ fn parse_parallel_args(extra_workers int) ?ParallelArgs {
mut fp := flag.new_flag_parser(os.args)
fp.application('vps')
fp.version('v0.1.0')
fp.limit_free_args(0, 0) ?
fp.limit_free_args(0, 0)?
fp.description('This is a pendulum simulation written in pure V')
fp.skip_executable()

View File

@ -44,19 +44,19 @@ pub fn ppm_writer_for_fname(fname string, settings ImageSettings) ?&PPMWriter {
cache_size: settings.cache_size
cache: []u8{cap: settings.cache_size}
}
writer.start_for_file(fname, settings) ?
writer.start_for_file(fname, settings)?
return writer
}
pub fn (mut writer PPMWriter) start_for_file(fname string, settings ImageSettings) ? {
writer.file = os.create(fname) ?
writer.file.writeln('P6 $settings.width $settings.height 255') ?
writer.file = os.create(fname)?
writer.file.writeln('P6 $settings.width $settings.height 255')?
}
pub fn (mut writer PPMWriter) handle_pixel(p gx.Color) ? {
if writer.cache.len >= writer.cache_size {
writer.write() ?
writer.flush() ?
writer.write()?
writer.flush()?
}
writer.cache << [p.r, p.g, p.b]
}
@ -66,7 +66,7 @@ pub fn (mut writer PPMWriter) flush() ? {
}
pub fn (mut writer PPMWriter) write() ? {
writer.file.write(writer.cache) ?
writer.file.write(writer.cache)?
}
pub fn (mut writer PPMWriter) close() {

View File

@ -6,7 +6,7 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args() ? as simargs.ParallelArgs
args := simargs.parse_args()? as simargs.ParallelArgs
img_settings := img.image_settings_from_grid(args.grid)
@ -17,7 +17,7 @@ fn main() {
request_chan := chan &sim.SimRequest{cap: args.workers}
result_chan := chan &sim.SimResult{cap: args.workers}
mut writer := img.ppm_writer_for_fname(args.filename, img_settings) ?
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)?
mut image_writer := img.new_image_writer(mut writer, img_settings)
mut workers := []thread{cap: args.workers}

View File

@ -6,14 +6,14 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args(extra_workers: 1) ? as simargs.ParallelArgs
args := simargs.parse_args(extra_workers: 1)? as simargs.ParallelArgs
img_settings := img.image_settings_from_grid(args.grid)
request_chan := chan &sim.SimRequest{cap: args.workers}
result_chan := chan &sim.SimResult{cap: args.workers}
mut writer := img.ppm_writer_for_fname(args.filename, img_settings) ?
mut writer := img.ppm_writer_for_fname(args.filename, img_settings)?
mut workers := []thread{cap: args.workers + 1}
mut bmark := benchmark.start()

View File

@ -6,14 +6,14 @@ import sim.args as simargs
import sim.img
fn main() {
args := simargs.parse_args(sequential: true) ? as simargs.SequentialArgs
args := simargs.parse_args(sequential: true)? as simargs.SequentialArgs
mut bmark := benchmark.start()
defer {
bmark.measure(@FN)
}
mut writer := img.ppm_writer_for_fname(args.filename, img.image_settings_from_grid(args.grid)) ?
mut writer := img.ppm_writer_for_fname(args.filename, img.image_settings_from_grid(args.grid))?
defer {
writer.close()
}
@ -26,5 +26,5 @@ fn main() {
sim.run(args.params, grid: args.grid, on_request: sim.SimRequestHandler(handle_request))
writer.write() ?
writer.write()?
}

View File

@ -2,6 +2,6 @@ import rand
fn main() {
for _ in 0 .. 10 {
println('${rand.intn(255) ?}.${rand.intn(255) ?}.${rand.intn(255) ?}.${rand.intn(255) ?}')
println('${rand.intn(255)?}.${rand.intn(255)?}.${rand.intn(255)?}.${rand.intn(255)?}')
}
}

View File

@ -12,10 +12,10 @@ mut:
fn main() {
if os.args.len < 2 {
eprintln('Usage: play_wav file1.wav file2.wav ...')
play_sounds([os.resource_abs_path('uhoh.wav')]) ?
play_sounds([os.resource_abs_path('uhoh.wav')])?
exit(1)
}
play_sounds(os.args[1..]) ?
play_sounds(os.args[1..])?
}
fn play_sounds(files []string) ? {
@ -31,7 +31,7 @@ fn play_sounds(files []string) ? {
eprintln('skipping "$f" (not a .wav file)')
continue
}
player.play_wav_file(f) ?
player.play_wav_file(f)?
}
player.stop()
}
@ -67,7 +67,7 @@ fn (mut p Player) stop() {
fn (mut p Player) play_wav_file(fpath string) ? {
println('> play_wav_file: $fpath')
samples := read_wav_file_samples(fpath) ?
samples := read_wav_file_samples(fpath)?
p.finished = true
p.samples << samples
p.finished = false
@ -119,7 +119,7 @@ struct RIFFFormat {
fn read_wav_file_samples(fpath string) ?[]f32 {
mut res := []f32{}
// eprintln('> read_wav_file_samples: $fpath -------------------------------------------------')
mut bytes := os.read_bytes(fpath) ?
mut bytes := os.read_bytes(fpath)?
mut pbytes := &u8(bytes.data)
mut offset := u32(0)
rh := unsafe { &RIFFHeader(pbytes) }

View File

@ -9,11 +9,11 @@ import net
// telnet 127.0.0.1 12345
fn main() {
mut server := net.listen_tcp(.ip6, ':12345') ?
laddr := server.addr() ?
mut server := net.listen_tcp(.ip6, ':12345')?
laddr := server.addr()?
eprintln('Listen on $laddr ...')
for {
mut socket := server.accept() ?
mut socket := server.accept()?
go handle_client(mut socket)
}
}

View File

@ -14,21 +14,21 @@ fn main() {
}
// create TCP listener
mut listener := net.listen_tcp(.ip, 'localhost:9001') ?
mut listener := net.listen_tcp(.ip, 'localhost:9001')?
defer {
listener.close() or {}
}
addr := listener.addr() ?
addr := listener.addr()?
eprintln('Listening on $addr')
eprintln('Type `stop` to stop the server')
// create file descriptor notifier
mut notifier := notify.new() ?
mut notifier := notify.new()?
defer {
notifier.close() or {}
}
notifier.add(os.stdin().fd, .read) ?
notifier.add(listener.sock.handle, .read) ?
notifier.add(os.stdin().fd, .read)?
notifier.add(listener.sock.handle, .read)?
for {
for event in notifier.wait(time.infinite) {

View File

@ -96,5 +96,5 @@ fn main() {
event_fn: event
hide_cursor: true
)
app.tui.run() ?
app.tui.run()?
}

View File

@ -43,5 +43,5 @@ fn main() {
use_alternate_buffer: false
)
println('V term.ui event viewer (press `esc` to exit)\n\n')
app.tui.run() ?
app.tui.run()?
}

View File

@ -495,5 +495,5 @@ fn main() {
hide_cursor: true
frame_rate: 60
)
app.tui.run() ?
app.tui.run()?
}

View File

@ -93,5 +93,5 @@ fn main() {
hide_cursor: true
frame_rate: 60
)
app.tui.run() ?
app.tui.run()?
}

View File

@ -125,7 +125,7 @@ fn main() {
app.mouse_pos.x = 40
app.mouse_pos.y = 15
app.ui.clear()
app.ui.run() ?
app.ui.run()?
}
fn frame(x voidptr) {

View File

@ -649,5 +649,5 @@ fn main() {
event_fn: event
capture_events: true
)
a.tui.run() ?
a.tui.run()?
}

View File

@ -471,5 +471,5 @@ fn main() {
hide_cursor: true
frame_rate: 10
)
app.termui.run() ?
app.termui.run()?
}

View File

@ -9,24 +9,24 @@ for _ in 0 .. 3 {
}
println('\nMaking dir "v_script_dir".')
mkdir('v_script_dir') ?
mkdir('v_script_dir')?
println("\nEntering into v_script_dir and listing it's files.")
chdir('v_script_dir') ?
chdir('v_script_dir')?
files := ls('.') or { panic(err) }
println(files)
println('\nCreating foo.txt')
create('foo.txt') ?
create('foo.txt')?
println('\nFiles:')
again_ls := ls('.') or { panic(err) }
println(again_ls)
println('\nRemoving foo.txt and v_script_dir')
rm('foo.txt') ?
chdir('../') ?
rmdir('v_script_dir') ?
rm('foo.txt')?
chdir('../')?
rmdir('v_script_dir')?
print('\nDoes v_script_dir still exist? ')
println(exists('v_script_dir'))

View File

@ -153,7 +153,7 @@ fn (item_list Item_list) get_file_path() string {
fn (mut item_list Item_list) scan_folder(path string, in_index int) ? {
println('Scanning [$path]')
mut folder_list := []string{}
lst := os.ls(path) ?
lst := os.ls(path)?
// manage the single files
for c, x in lst {
@ -171,7 +171,7 @@ fn (mut item_list Item_list) scan_folder(path string, in_index int) ? {
if ext == .zip {
item.i_type = .zip
item_list.lst << item
item_list.scan_zip(pt, item_list.lst.len - 1) ?
item_list.scan_zip(pt, item_list.lst.len - 1)?
continue
}
if is_image(ext) == true {
@ -194,7 +194,7 @@ fn (mut item_list Item_list) scan_folder(path string, in_index int) ? {
i_type: .folder
}
item_list.lst << item
item_list.scan_folder(pt, item_list.lst.len - 1) ?
item_list.scan_folder(pt, item_list.lst.len - 1)?
}
// println(item_list.lst.len)
// println("==================================")

View File

@ -13,12 +13,12 @@ import szip
fn (mut il Item_list) scan_zip(path string, in_index int) ? {
println('Scanning ZIP [$path]')
mut zp := szip.open(path, szip.CompressionLevel.no_compression, szip.OpenMode.read_only) ?
n_entries := zp.total() ?
mut zp := szip.open(path, szip.CompressionLevel.no_compression, szip.OpenMode.read_only)?
n_entries := zp.total()?
// println(n_entries)
for index in 0 .. n_entries {
zp.open_entry_by_index(index) ?
is_dir := zp.is_dir() ?
zp.open_entry_by_index(index)?
is_dir := zp.is_dir()?
name := zp.name()
size := zp.size()
// println("$index ${name} ${size:10} $is_dir")
@ -58,15 +58,15 @@ fn (mut app App) load_texture_from_zip() ?(gfx.Image, int, int) {
}
app.zip_index = item.container_index
// println("Opening the zip [${item.path}]")
app.zip = szip.open(item.path, szip.CompressionLevel.no_compression, szip.OpenMode.read_only) ?
app.zip = szip.open(item.path, szip.CompressionLevel.no_compression, szip.OpenMode.read_only)?
}
// println("Now get the image")
app.zip.open_entry_by_index(item.container_item_index) ?
app.zip.open_entry_by_index(item.container_item_index)?
zip_entry_size := int(item.size)
app.resize_buf_if_needed(zip_entry_size)
app.zip.read_entry_buf(app.mem_buf, app.mem_buf_size) ?
app.zip.read_entry_buf(app.mem_buf, app.mem_buf_size)?
app.zip.close_entry()
return app.load_texture_from_buffer(app.mem_buf, zip_entry_size)
}

View File

@ -10,7 +10,7 @@ fn main() {
for _ in 0 .. repeats {
mut sb := strings.new_builder(blocksize)
for {
x := rand.read(blocksize) ?
x := rand.read(blocksize)?
for c in x {
if c >= `0` && c <= `~` {
sb.write_u8(c)

View File

@ -17,7 +17,7 @@ fn main() {
mut app := &App{}
app.serve_static('/favicon.ico', 'favicon.ico')
// Automatically make available known static mime types found in given directory.
os.chdir(os.dir(os.executable())) ?
os.chdir(os.dir(os.executable()))?
app.handle_static('assets', true)
vweb.run(app, port)
}

View File

@ -8,7 +8,7 @@ import term
// it connects to the server who will broadcast your messages
// to all other connected clients
fn main() {
mut ws := start_client() ?
mut ws := start_client()?
println(term.green('client $ws.id ready'))
println('Write message and enter to send...')
for {
@ -16,7 +16,7 @@ fn main() {
if line == '' {
break
}
ws.write_string(line) ?
ws.write_string(line)?
}
ws.close(1000, 'normal') or { println(term.red('panicing $err')) }
unsafe {
@ -25,7 +25,7 @@ fn main() {
}
fn start_client() ?&websocket.Client {
mut ws := websocket.new_client('ws://localhost:30000') ?
mut ws := websocket.new_client('ws://localhost:30000')?
// mut ws := websocket.new_client('wss://echo.websocket.org:443')?
// use on_open_ref if you want to send any reference object
ws.on_open(fn (mut ws websocket.Client) ? {

View File

@ -6,7 +6,7 @@ import term
// this server accepts client connections and broadcast all messages to other connected clients
fn main() {
println('press ctrl-c to quit...')
start_server() ?
start_server()?
}
fn start_server() ? {
@ -20,7 +20,7 @@ fn start_server() ? {
return false
}
return true
}) ?
})?
// on_message_ref, broadcast all incoming messages to all clients except the one sent it
s.on_message_ref(fn (mut ws websocket.Client, msg &websocket.Message, mut m websocket.Server) ? {

View File

@ -25,7 +25,7 @@ fn start_server() ? {
return false
}
return true
}) ?
})?
s.on_message(fn (mut ws websocket.Client, msg &websocket.Message) ? {
ws.write(msg.payload, msg.opcode) or { panic(err) }
})
@ -41,7 +41,7 @@ fn start_server() ? {
// start_client starts the websocket client, it writes a message to
// the server and prints all the messages received
fn start_client() ? {
mut ws := websocket.new_client('ws://localhost:30000') ?
mut ws := websocket.new_client('ws://localhost:30000')?
// mut ws := websocket.new_client('wss://echo.websocket.org:443')?
// use on_open_ref if you want to send any reference object
ws.on_open(fn (mut ws websocket.Client) ? {
@ -64,7 +64,7 @@ fn start_client() ? {
})
// you can add any pointer reference to use in callback
// t := TestRef{count: 10}
// ws.on_message_ref(fn (mut ws websocket.Client, msg &websocket.Message, r &SomeRef)? {
// ws.on_message_ref(fn (mut ws websocket.Client, msg &websocket.Message, r &SomeRef) ? {
// // println('type: $msg.opcode payload:\n$msg.payload ref: $r')
// }, &r)
ws.connect() or { println('error on connect: $err') }