json.decode: fix expressions in the second argument, also fixes news_fetcher.v
parent
b5a1544bf8
commit
e33805b2b3
|
@ -11,7 +11,7 @@ struct Story {
|
|||
}
|
||||
|
||||
fn worker_fetch(p &sync.PoolProcessor, cursor int, worker_id int) voidptr {
|
||||
id := p.get_item<int>(cursor)
|
||||
id := p.get_int_item(cursor)
|
||||
resp := http.get('https://hacker-news.firebaseio.com/v0/item/${id}.json') or {
|
||||
println('failed to fetch data from /v0/item/${id}.json')
|
||||
return sync.no_result
|
||||
|
@ -45,5 +45,5 @@ fn main() {
|
|||
// cases is what you want anyway... You can override the automatic choice
|
||||
// by setting the VJOBS environment variable too.
|
||||
// fetcher_pool.set_max_jobs( 4 )
|
||||
fetcher_pool.work_on_items(ids)
|
||||
fetcher_pool.work_on_items_i(ids)
|
||||
}
|
||||
|
|
|
@ -759,6 +759,8 @@ pub fn (mut c Checker) call_fn(call_expr mut ast.CallExpr) table.Type {
|
|||
c.error('json.decode: first argument needs to be a type, got `$typ`', call_expr.pos)
|
||||
return table.void_type
|
||||
}
|
||||
c.expected_type = table.string_type
|
||||
call_expr.args[1].typ = c.expr(call_expr.args[1].expr)
|
||||
typ := expr as ast.Type
|
||||
return typ.typ.set_flag(.optional)
|
||||
}
|
||||
|
|
|
@ -1270,7 +1270,7 @@ fn (mut g Gen) expr(node ast.Expr) {
|
|||
g.write('.')
|
||||
}
|
||||
if it.expr_type == 0 {
|
||||
verror('cgen: SelectorExpr typ=0 field=$it.field $g.file.path $it.pos.line_nr')
|
||||
verror('cgen: SelectorExpr | expr_type: 0 | it.expr: `${it.expr}` | field: `$it.field` | file: $g.file.path | line: $it.pos.line_nr')
|
||||
}
|
||||
g.write(c_name(it.field))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue