mirror of
https://github.com/vlang/v.git
synced 2025-09-14 15:02:33 +03:00
make function arguments immutable
This commit is contained in:
parent
74dbb1bce3
commit
0f0ed8d716
8 changed files with 42 additions and 33 deletions
|
@ -1044,7 +1044,8 @@ fn (p mut Parser) statement(add_semi bool) string {
|
|||
fn (p mut Parser) assign_statement(v Var, ph int, is_map bool) {
|
||||
p.log('assign_statement() name=$v.name tok=')
|
||||
tok := p.tok
|
||||
if !v.is_mut && !v.is_arg && !p.pref.translated && !v.is_global{
|
||||
//if !v.is_mut && !v.is_arg && !p.pref.translated && !v.is_global{
|
||||
if !v.is_mut && !p.pref.translated && !v.is_global{
|
||||
p.error('`$v.name` is immutable')
|
||||
}
|
||||
is_str := v.typ == 'string'
|
||||
|
@ -1454,7 +1455,7 @@ fn (p mut Parser) var_expr(v Var) string {
|
|||
}
|
||||
// a++ and a--
|
||||
if p.tok == INC || p.tok == DEC {
|
||||
if !v.is_mut && !v.is_arg && !p.pref.translated {
|
||||
if !v.is_mut && !p.pref.translated {
|
||||
p.error('`$v.name` is immutable')
|
||||
}
|
||||
if typ != 'int' {
|
||||
|
@ -1581,11 +1582,12 @@ fn (p mut Parser) dot(str_typ string, method_ph int) string {
|
|||
return method.typ
|
||||
}
|
||||
|
||||
fn (p mut Parser) index_expr(typ string, fn_ph int) string {
|
||||
fn (p mut Parser) index_expr(_typ string, fn_ph int) string {
|
||||
//if p.fileis('main.v') {
|
||||
//println('index expr typ=$typ')
|
||||
//}
|
||||
// a[0]
|
||||
mut typ := _typ
|
||||
v := p.expr_var
|
||||
is_map := typ.starts_with('map_')
|
||||
is_str := typ == 'string'
|
||||
|
@ -2133,8 +2135,8 @@ fn (p mut Parser) typ_to_fmt(typ string) string {
|
|||
return ''
|
||||
}
|
||||
|
||||
fn format_str(str string) string {
|
||||
str = str.replace('"', '\\"')
|
||||
fn format_str(_str string) string {
|
||||
mut str := _str.replace('"', '\\"')
|
||||
$if windows {
|
||||
str = str.replace('\r\n', '\\n')
|
||||
}
|
||||
|
@ -3077,7 +3079,8 @@ fn (p mut Parser) go_statement() {
|
|||
}
|
||||
}
|
||||
|
||||
fn (p mut Parser) register_var(v Var) {
|
||||
fn (p mut Parser) register_var(var Var) {
|
||||
mut v := var
|
||||
if v.line_nr == 0 {
|
||||
v.line_nr = p.scanner.line_nr
|
||||
}
|
||||
|
@ -3141,8 +3144,8 @@ fn (p mut Parser) js_decode() string {
|
|||
return ''
|
||||
}
|
||||
|
||||
fn is_compile_time_const(s string) bool {
|
||||
s = s.trim_space()
|
||||
fn is_compile_time_const(_s string) bool {
|
||||
s := _s.trim_space()
|
||||
if s == '' {
|
||||
return false
|
||||
}
|
||||
|
@ -3166,15 +3169,17 @@ fn (p &Parser) building_v() bool {
|
|||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// fmt helpers
|
||||
fn (scanner mut Scanner) fgen(s string) {
|
||||
fn (scanner mut Scanner) fgen(_s string) {
|
||||
mut s := _s
|
||||
if scanner.fmt_line_empty {
|
||||
s = strings.repeat(`\t`, scanner.fmt_indent) + s
|
||||
s = strings.repeat(`\t`, scanner.fmt_indent) + s
|
||||
}
|
||||
scanner.fmt_out.write(s)
|
||||
scanner.fmt_line_empty = false
|
||||
}
|
||||
|
||||
fn (scanner mut Scanner) fgenln(s string) {
|
||||
fn (scanner mut Scanner) fgenln(_s string) {
|
||||
mut s := _s
|
||||
if scanner.fmt_line_empty {
|
||||
s = strings.repeat(`\t`, scanner.fmt_indent) + s
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue