require unsafe for dereferencing

This commit is contained in:
Alexander Medvednikov 2019-11-10 19:57:17 +03:00
parent c7f3413d70
commit fdf6682254
3 changed files with 9 additions and 1 deletions

View file

@ -1441,7 +1441,9 @@ fn (p mut Parser) dispatch_generic_fn_instance(f mut Fn, ti TypeInst) {
p.cgen.tmp_line = ''
p.cgen.cur_line = ''
p.cgen.lines = []string
p.cur_fn = *f
unsafe { // TODO
p.cur_fn = *f
}
for arg in f.args {
p.register_var(arg)
}

View file

@ -1481,6 +1481,10 @@ fn (p mut Parser) get_var_type(name string, is_ptr bool, is_deref bool) string {
mut typ := p.var_expr(v)
// *var
if is_deref {
if !p.inside_unsafe {
p.warn('dereferencing can only be done inside an `unsafe` block')
}
if !typ.contains('*') && !typ.ends_with('ptr') {
println('name="$name", t=$v.typ')
p.error('dereferencing requires a pointer, but got `$typ`')