diff --git a/vlib/compiler/enum.v b/vlib/compiler/enum.v index 1fd41a20f8..e3e5e397c7 100644 --- a/vlib/compiler/enum.v +++ b/vlib/compiler/enum.v @@ -59,7 +59,7 @@ fn (p mut Parser) enum_decl(no_name bool) { name: enum_name mod: p.mod parent: 'int' - cat: .enum_ //.enum_ //if is_c { TypeCategory.c_struct } else {TypeCategory.enum_ } + cat: TypeCategory.enum_ enum_vals: fields.clone() is_public: is_pub }) diff --git a/vlib/compiler/fn.v b/vlib/compiler/fn.v index 63e952312a..a6dff68281 100644 --- a/vlib/compiler/fn.v +++ b/vlib/compiler/fn.v @@ -1219,7 +1219,7 @@ fn (p mut Parser) replace_type_params(f &Fn, ti TypeInst) []string { fn (p mut Parser) register_vargs_stuct(typ string, len int) string { vargs_struct := 'varg_$typ' varg_type := Type{ - cat: .struct_, + cat: TypeCategory.struct_, name: vargs_struct, mod: p.mod } @@ -1299,7 +1299,7 @@ fn (p mut Parser) register_multi_return_stuct(types []string) string { typ := '_V_MulRet_' + types.join('_V_').replace('*', '_PTR_') if p.table.known_type(typ) { return typ } p.table.register_type2(Type{ - cat: .struct_, + cat: TypeCategory.struct_, name: typ, mod: p.mod }) diff --git a/vlib/compiler/parser.v b/vlib/compiler/parser.v index ee77ec7595..cfd5b330c1 100644 --- a/vlib/compiler/parser.v +++ b/vlib/compiler/parser.v @@ -227,7 +227,7 @@ fn (p & Parser) peek() TokenKind { } [inline] fn (p &Parser) peek_token() Token { if p.token_idx >= p.tokens.len - 2 { - return Token{ tok:.eof } + return Token{ tok:TokenKind.eof } } return p.tokens[p.token_idx] } @@ -639,7 +639,7 @@ fn (p mut Parser) type_decl() { name: name parent: parent.name mod: p.mod - cat: .alias + cat: TypeCategory.alias }) } @@ -1274,7 +1274,7 @@ fn ($v.name mut $v.typ) $p.cur_fn.name (...) { p.error_with_token_index( 'incompatible types: $p.assigned_type != $p.expected_type', errtok) } p.cgen.resetln('memcpy( (& $left), ($etype{$expr}), sizeof( $left ) );') - } + } else if tok == .left_shift_assign || tok == .righ_shift_assign { if !is_integer_type(p.assigned_type) { p.error_with_token_index( 'cannot use shift operator on non-integer type `$p.assigned_type`', errtok) @@ -1282,7 +1282,7 @@ fn ($v.name mut $v.typ) $p.cur_fn.name (...) { if !is_integer_type(expr_type) { p.error_with_token_index( 'cannot use non-integer type `$expr_type` as shift argument', errtok) } - } + } else if !p.builtin_mod && !p.check_types_no_throw(expr_type, p.assigned_type) { p.error_with_token_index( 'cannot use type `$expr_type` as type `$p.assigned_type` in assignment', errtok) } @@ -1683,7 +1683,7 @@ fn (p mut Parser) name_expr() string { if p.expected_type == enum_type.name { // `if color == .red` is enough // no need in `if color == Color.red` - p.error('`${enum_type.name}.$val` is unnecessary, use `.$val`') + p.warn('`${enum_type.name}.$val` is unnecessary, use `.$val`') } // println('enum val $val') p.gen(mod_gen_name(enum_type.mod) + '__' + enum_type.name + '_' + val)// `color = main__Color_green` diff --git a/vlib/compiler/parser2.v b/vlib/compiler/parser2.v index edae13fba9..b94efbc585 100644 --- a/vlib/compiler/parser2.v +++ b/vlib/compiler/parser2.v @@ -31,7 +31,7 @@ fn (p mut Parser) get_type2() Type { name: f.typ_str()// 'fn (int, int) string' mod: p.mod func: f - cat: .func + cat: TypeCategory.func } p.table.register_type2(fn_typ) return fn_typ