mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
ast, builder, checker, parser: fix typos (#18480)
This commit is contained in:
parent
0454f43fa3
commit
396d46d9ca
@ -339,7 +339,7 @@ pub:
|
||||
mod string
|
||||
name string
|
||||
is_pub bool
|
||||
is_markused bool // an explict `[markused]` tag; the const will NOT be removed by `-skip-unused`, no matter what
|
||||
is_markused bool // an explicit `[markused]` tag; the const will NOT be removed by `-skip-unused`, no matter what
|
||||
pos token.Pos
|
||||
pub mut:
|
||||
expr Expr // the value expr of field; everything after `=`
|
||||
@ -520,7 +520,7 @@ pub:
|
||||
is_exported bool // true for `[export: 'exact_C_name']`
|
||||
is_keep_alive bool // passed memory must not be freed (by GC) before function returns
|
||||
is_unsafe bool // true, when [unsafe] is used on a fn
|
||||
is_markused bool // true, when an explict `[markused]` tag was put on a fn; `-skip-unused` will not remove that fn
|
||||
is_markused bool // true, when an explicit `[markused]` tag was put on a fn; `-skip-unused` will not remove that fn
|
||||
is_file_translated bool // true, when the file it resides in is `[translated]`
|
||||
receiver StructField // TODO this is not a struct field
|
||||
receiver_pos token.Pos // `(u User)` in `fn (u User) name()` position
|
||||
@ -790,7 +790,7 @@ pub mut:
|
||||
// (for setting the position after the or block for autofree)
|
||||
is_or bool // `x := foo() or { ... }`
|
||||
is_tmp bool // for tmp for loop vars, so that autofree can skip them
|
||||
is_auto_heap bool // value whoes address goes out of scope
|
||||
is_auto_heap bool // value whose address goes out of scope
|
||||
is_stack_obj bool // may be pointer to stack value (`mut` or `&` arg and not [heap] struct)
|
||||
}
|
||||
|
||||
@ -818,7 +818,7 @@ pub:
|
||||
has_expr bool
|
||||
pos token.Pos
|
||||
typ_pos token.Pos
|
||||
is_markused bool // an explict `[markused]` tag; the global will NOT be removed by `-skip-unused`
|
||||
is_markused bool // an explicit `[markused]` tag; the global will NOT be removed by `-skip-unused`
|
||||
is_volatile bool
|
||||
pub mut:
|
||||
expr Expr
|
||||
@ -870,7 +870,7 @@ pub mut:
|
||||
scope &Scope = unsafe { nil }
|
||||
stmts []Stmt // all the statements in the source file
|
||||
imports []Import // all the imports
|
||||
auto_imports []string // imports that were implicitely added
|
||||
auto_imports []string // imports that were implicitly added
|
||||
embedded_files []EmbeddedFile // list of files to embed in the binary
|
||||
imported_symbols map[string]string // used for `import {symbol}`, it maps symbol => module.symbol
|
||||
errors []errors.Error // all the checker errors in the file
|
||||
@ -1566,7 +1566,7 @@ pub mut:
|
||||
index AsmArg // gpr
|
||||
}
|
||||
|
||||
// adressing modes:
|
||||
// addressing modes:
|
||||
pub enum AddressingMode {
|
||||
invalid
|
||||
displacement // displacement
|
||||
@ -1621,7 +1621,7 @@ pub const (
|
||||
}
|
||||
// no comments because maps do not support comments
|
||||
// r#*: gp registers added in 64-bit extensions, can only be from 8-15 actually
|
||||
// *mm#: vector/simd registors
|
||||
// *mm#: vector/simd registers
|
||||
// st#: floating point numbers
|
||||
// cr#: control/status registers
|
||||
// dr#: debug registers
|
||||
@ -1945,7 +1945,7 @@ pub fn (expr Expr) is_blank_ident() bool {
|
||||
pub fn (expr Expr) pos() token.Pos {
|
||||
// all uncommented have to be implemented
|
||||
// Note: please do not print here. the language server will hang
|
||||
// as it uses STDIO primarly to communicate ~Ned
|
||||
// as it uses STDIO primarily to communicate ~Ned
|
||||
match expr {
|
||||
AnonFn {
|
||||
return expr.decl.pos
|
||||
|
@ -1351,7 +1351,7 @@ pub fn (t &Table) known_type_names() []string {
|
||||
|
||||
// has_deep_child_no_ref returns true if type is struct and has any child or nested child with the type of the given name
|
||||
// the given name consists of module and name (`mod.Name`)
|
||||
// it doesn't care about childs that are references
|
||||
// it doesn't care about children that are references
|
||||
pub fn (t &Table) has_deep_child_no_ref(ts &TypeSymbol, name string) bool {
|
||||
if ts.info is Struct {
|
||||
for field in ts.info.fields {
|
||||
|
@ -1213,7 +1213,7 @@ pub fn (t &Table) type_to_str_using_aliases(typ Type, import_aliases map[string]
|
||||
}
|
||||
// Note, that the duplication of code in some of the match branches here
|
||||
// is VERY deliberate. DO NOT be tempted to use `else {}` instead, because
|
||||
// that strongly reduces the usefullness of the exhaustive checking that
|
||||
// that strongly reduces the usefulness of the exhaustive checking that
|
||||
// match does.
|
||||
// Using else{} here led to subtle bugs in vfmt discovered *months*
|
||||
// after the original code was written.
|
||||
@ -1401,7 +1401,7 @@ fn (t Table) shorten_user_defined_typenames(originalname string, import_aliases
|
||||
} else {
|
||||
// FIXME: clean this case and remove the following if
|
||||
// because it is an hack to format well the type when
|
||||
// there is a []modul.name
|
||||
// there is a []mod.name
|
||||
if res.contains('[]') {
|
||||
idx := res.index('.') or { -1 }
|
||||
return res[idx + 1..]
|
||||
|
@ -173,7 +173,7 @@ pub fn (mut b Builder) parse_imports() {
|
||||
// parsed (but not all of them), then this will cause a problem.
|
||||
// we could add a list of parsed files instead, but I think
|
||||
// there is a better solution all around, I will revisit this.
|
||||
// NOTE: there is a very similar occurance with the way
|
||||
// NOTE: there is a very similar occurrence with the way
|
||||
// internal module test's work, and this was the reason there
|
||||
// were issues with duplicate declarations, so we should sort
|
||||
// that out in a similar way.
|
||||
|
@ -538,7 +538,7 @@ pub fn (mut v Builder) cc() {
|
||||
mut tcc_output := os.Result{}
|
||||
original_pwd := os.getwd()
|
||||
for {
|
||||
// try to compile with the choosen compiler
|
||||
// try to compile with the chosen compiler
|
||||
// if compilation fails, retry again with another
|
||||
mut ccompiler := v.pref.ccompiler
|
||||
if v.pref.os == .wasm32 {
|
||||
|
@ -198,10 +198,10 @@ fn (mut b Builder) rebuild_cached_module(vexe string, imp_path string) string {
|
||||
println('Cached ${imp_path} .o file not found... Building .o file for ${imp_path}')
|
||||
}
|
||||
b.v_build_module(vexe, imp_path)
|
||||
rebuilded_o := b.pref.cache_manager.mod_exists(imp_path, '.o', imp_path) or {
|
||||
rebuilt_o := b.pref.cache_manager.mod_exists(imp_path, '.o', imp_path) or {
|
||||
panic('could not rebuild cache module for ${imp_path}, error: ${err.msg()}')
|
||||
}
|
||||
return rebuilded_o
|
||||
return rebuilt_o
|
||||
}
|
||||
return res
|
||||
}
|
||||
@ -227,8 +227,8 @@ fn (mut b Builder) handle_usecache(vexe string) {
|
||||
for imp_stmt in ast_file.imports {
|
||||
imp := imp_stmt.mod
|
||||
// strconv is already imported inside builtin, so skip generating its object file
|
||||
// TODO: incase we have other modules with the same name, make sure they are vlib
|
||||
// is this even doign anything?
|
||||
// TODO: in case we have other modules with the same name, make sure they are vlib
|
||||
// is this even doing anything?
|
||||
if util.module_is_builtin(imp) {
|
||||
continue
|
||||
}
|
||||
@ -240,7 +240,7 @@ fn (mut b Builder) handle_usecache(vexe string) {
|
||||
}
|
||||
// The problem is cmd/v is in module main and imports
|
||||
// the relative module named help, which is built as cmd.v.help not help
|
||||
// currently this got this workign by building into main, see ast.FnDecl in cgen
|
||||
// currently this got this working by building into main, see ast.FnDecl in cgen
|
||||
if imp == 'help' {
|
||||
continue
|
||||
}
|
||||
|
@ -509,7 +509,7 @@ fn (mut c Checker) check_shift(mut node ast.InfixExpr, left_type_ ast.Type, righ
|
||||
match node.op {
|
||||
.left_shift, .right_shift, .unsigned_right_shift {
|
||||
// The following code tries to disallow C UBs and IDs at the V level.
|
||||
// From the C++ standart (see https://pvs-studio.com/en/docs/warnings/v610/):
|
||||
// From the C++ standard (see https://pvs-studio.com/en/docs/warnings/v610/):
|
||||
// 1. The type of the result is that of the promoted left operand.
|
||||
// The behavior is undefined (UB), if the right operand is negative,
|
||||
// or greater than or equal to the length in bits of the promoted left operand.
|
||||
|
@ -2116,7 +2116,7 @@ fn (mut c Checker) asm_arg(arg ast.AsmArg, stmt ast.AsmStmt, aliases []string) {
|
||||
c.asm_arg(arg.base, stmt, aliases)
|
||||
c.asm_arg(arg.index, stmt, aliases)
|
||||
}
|
||||
ast.BoolLiteral {} // all of these are guarented to be correct.
|
||||
ast.BoolLiteral {} // all of these are guaranteed to be correct.
|
||||
ast.FloatLiteral {}
|
||||
ast.CharLiteral {}
|
||||
ast.IntegerLiteral {}
|
||||
@ -4012,7 +4012,7 @@ fn (mut c Checker) prefix_expr(mut node ast.PrefixExpr) ast.Type {
|
||||
}
|
||||
// FIXME
|
||||
// there are currently other issues to investigate if right_type
|
||||
// is unwraped directly as initialization, so do it here
|
||||
// is unwrapped directly as initialization, so do it here
|
||||
if node.op == .minus && !right_sym.is_number() {
|
||||
c.type_error_for_operator('-', 'numeric', right_sym.name, node.pos)
|
||||
}
|
||||
@ -4402,7 +4402,7 @@ fn (c &Checker) check_struct_signature(from ast.Struct, to ast.Struct) bool {
|
||||
}
|
||||
counterpart := filtered[0]
|
||||
if field.typ != counterpart.typ {
|
||||
// field has different tye
|
||||
// field has different type
|
||||
return false
|
||||
}
|
||||
if field.is_pub != counterpart.is_pub {
|
||||
@ -4615,7 +4615,7 @@ fn (mut c Checker) ensure_type_exists(typ ast.Type, pos token.Pos) ? {
|
||||
}
|
||||
.int_literal, .float_literal {
|
||||
// Separate error condition for `int_literal` and `float_literal` because `util.suggestion` may give different
|
||||
// suggestions due to f32 comparision issue.
|
||||
// suggestions due to f32 comparison issue.
|
||||
if !c.is_builtin_mod {
|
||||
msg := if sym.kind == .int_literal {
|
||||
'unknown type `${sym.name}`.\nDid you mean `int`?'
|
||||
|
@ -116,7 +116,7 @@ fn (mut c Checker) array_init(mut node ast.ArrayInit) ast.Type {
|
||||
}
|
||||
// `a = []`
|
||||
if node.exprs.len == 0 {
|
||||
// `a := fn_returing_opt_array() or { [] }`
|
||||
// `a := fn_returning_opt_array() or { [] }`
|
||||
if c.expected_type == ast.void_type && c.expected_or_type != ast.void_type {
|
||||
c.expected_type = c.expected_or_type
|
||||
}
|
||||
@ -128,7 +128,7 @@ fn (mut c Checker) array_init(mut node ast.ArrayInit) ast.Type {
|
||||
}
|
||||
array_info := type_sym.array_info()
|
||||
node.elem_type = array_info.elem_type
|
||||
// clear option flag incase of: `fn opt_arr() ?[]int { return [] }`
|
||||
// clear option flag in case of: `fn opt_arr() ?[]int { return [] }`
|
||||
return if c.expected_type.has_flag(.shared_f) {
|
||||
c.expected_type.clear_flag(.shared_f).deref()
|
||||
} else {
|
||||
|
@ -819,7 +819,7 @@ fn (mut c Checker) fn_call(mut node ast.CallExpr, mut continue_check &bool) ast.
|
||||
}
|
||||
}
|
||||
if !found && c.pref.is_vsh {
|
||||
// TOOD: test this hack more extensively
|
||||
// TODO: test this hack more extensively
|
||||
os_name := 'os.${fn_name}'
|
||||
if f := c.table.find_fn(os_name) {
|
||||
if f.generic_names.len == node.concrete_types.len {
|
||||
@ -2059,7 +2059,7 @@ fn (mut c Checker) method_call(mut node ast.CallExpr) ast.Type {
|
||||
arg) or {
|
||||
// str method, allow type with str method if fn arg is string
|
||||
// Passing an int or a string array produces a c error here
|
||||
// Deleting this condition results in propper V error messages
|
||||
// Deleting this condition results in proper V error messages
|
||||
// if arg_typ_sym.kind == .string && typ_sym.has_method('str') {
|
||||
// continue
|
||||
// }
|
||||
|
@ -297,7 +297,7 @@ fn (mut c Checker) for_stmt(mut node ast.ForStmt) {
|
||||
}
|
||||
}
|
||||
// TODO: update loop var type
|
||||
// how does this work currenly?
|
||||
// how does this work currently?
|
||||
c.check_loop_label(node.label, node.pos)
|
||||
c.stmts(node.stmts)
|
||||
c.loop_label = prev_loop_label
|
||||
|
@ -340,7 +340,7 @@ fn (mut c Checker) infix_expr(mut node ast.InfixExpr) ast.Type {
|
||||
unalias_right_type := c.table.unalias_num_type(unwrapped_right_type)
|
||||
mut promoted_type := c.promote_keeping_aliases(unaliased_left_type, unalias_right_type,
|
||||
left_sym.kind, right_sym.kind)
|
||||
// substract pointers is allowed in unsafe block
|
||||
// subtract pointers is allowed in unsafe block
|
||||
is_allowed_pointer_arithmetic := left_type.is_any_kind_of_pointer()
|
||||
&& right_type.is_any_kind_of_pointer() && node.op == .minus
|
||||
if is_allowed_pointer_arithmetic {
|
||||
|
@ -3,7 +3,7 @@ struct Context {}
|
||||
const ctx_ptr = &Context(unsafe { nil })
|
||||
|
||||
fn main() {
|
||||
// TODO unsafe bug, having this declaration inside `unsafe` results in an erro
|
||||
// TODO unsafe bug, having this declaration inside `unsafe` results in an error
|
||||
x := &ctx_ptr
|
||||
unsafe {
|
||||
*x = &Context{}
|
||||
|
12
vlib/v/checker/tests/import_mod_duplicate_as_alias_err.out
Normal file
12
vlib/v/checker/tests/import_mod_duplicate_as_alias_err.out
Normal file
@ -0,0 +1,12 @@
|
||||
vlib/v/checker/tests/import_mod_duplicate_as_alias_err.vv:3:8: error: cannot import `json` into a module with the same name
|
||||
1 | module json
|
||||
2 |
|
||||
3 | import json as vjson
|
||||
| ~~~~
|
||||
4 |
|
||||
5 | const used = true
|
||||
vlib/v/checker/tests/import_mod_duplicate_as_alias_err.vv:1:1: error: project must include a `main` module or be a shared library (compile with `v -shared`)
|
||||
1 | module json
|
||||
| ^
|
||||
2 |
|
||||
3 | import json as vjson
|
@ -1,12 +0,0 @@
|
||||
vlib/v/checker/tests/import_mod_duplicate_as_sub_err.vv:3:8: error: cannot import `json` into a module with the same name
|
||||
1 | module json
|
||||
2 |
|
||||
3 | import json as vjson
|
||||
| ~~~~
|
||||
4 |
|
||||
5 | const used = true
|
||||
vlib/v/checker/tests/import_mod_duplicate_as_sub_err.vv:1:1: error: project must include a `main` module or be a shared library (compile with `v -shared`)
|
||||
1 | module json
|
||||
| ^
|
||||
2 |
|
||||
3 | import json as vjson
|
@ -2,20 +2,20 @@ struct Inner {
|
||||
ptr &u8
|
||||
}
|
||||
|
||||
struct Outter {
|
||||
struct Outer {
|
||||
Inner
|
||||
mut:
|
||||
size int
|
||||
}
|
||||
|
||||
fn new_outter() &Outter {
|
||||
return &Outter{
|
||||
fn new_outer() &Outer {
|
||||
return &Outer{
|
||||
ptr: vcalloc(0)
|
||||
size: 1
|
||||
}
|
||||
}
|
||||
|
||||
fn main () {
|
||||
outter := new_outter()
|
||||
println(outter)
|
||||
}
|
||||
outer := new_outer()
|
||||
println(outer)
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
vlib/v/checker/tests/sum_type_exists.vv:1:22: error: unknown type `Inexistant`
|
||||
1 | type Miscellaneous = Inexistant | Nope | int
|
||||
vlib/v/checker/tests/sum_type_exists.vv:1:22: error: unknown type `Inexistent`
|
||||
1 | type Miscellaneous = Inexistent | Nope | int
|
||||
| ~~~~~~~~~~
|
@ -1 +1 @@
|
||||
type Miscellaneous = Inexistant | Nope | int
|
||||
type Miscellaneous = Inexistent | Nope | int
|
||||
|
@ -1,14 +1,14 @@
|
||||
vlib/v/checker/tests/vweb_routing_checks.vv:20:1: warning: mismatched parameters count between vweb method `App.bar` (1) and route attribute ['/bar'] (0)
|
||||
18 | // segfault because path taks 0 vars and fcn takes 1 arg
|
||||
18 | // segfault because path takes 0 vars and fcn takes 1 arg
|
||||
19 | ['/bar']
|
||||
20 | pub fn (mut app App) bar(a string) vweb.Result {
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
21 | return app.html('works')
|
||||
22 | }
|
||||
vlib/v/checker/tests/vweb_routing_checks.vv:26:1: warning: mismatched parameters count between vweb method `App.cow` (0) and route attribute ['/cow/:low'] (1)
|
||||
24 | // no segfault, but it shouldnt compile
|
||||
24 | // no segfault, but it shouldn't compile
|
||||
25 | ['/cow/:low']
|
||||
26 | pub fn (mut app App) cow() vweb.Result {
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
27 | return app.html('works')
|
||||
28 | }
|
||||
28 | }
|
@ -15,13 +15,13 @@ pub fn (mut app App) foo(a string) vweb.Result {
|
||||
return app.html('works')
|
||||
}
|
||||
|
||||
// segfault because path taks 0 vars and fcn takes 1 arg
|
||||
// segfault because path takes 0 vars and fcn takes 1 arg
|
||||
['/bar']
|
||||
pub fn (mut app App) bar(a string) vweb.Result {
|
||||
return app.html('works')
|
||||
}
|
||||
|
||||
// no segfault, but it shouldnt compile
|
||||
// no segfault, but it shouldn't compile
|
||||
['/cow/:low']
|
||||
pub fn (mut app App) cow() vweb.Result {
|
||||
return app.html('works')
|
||||
|
@ -261,7 +261,7 @@ fn (mut p Parser) comptime_call() ast.ComptimeCall {
|
||||
}
|
||||
// the tmpl inherits all parent scopes. previous functionality was just to
|
||||
// inherit the scope from which the comptime call was made and no parents.
|
||||
// this is much simpler and allws access to globals. can be changed if needed.
|
||||
// this is much simpler and allows access to globals. can be changed if needed.
|
||||
mut file := parse_comptime(tmpl_path, v_code, p.table, p.pref, p.scope)
|
||||
file.path = tmpl_path
|
||||
return ast.ComptimeCall{
|
||||
|
@ -495,7 +495,7 @@ run them via `v file.v` instead',
|
||||
if file_mode == .v && existing.file_mode != .v {
|
||||
// a definition made in a .c.v file, should have a priority over a .v file definition of the same function
|
||||
if !p.pref.is_fmt {
|
||||
name = p.prepend_mod('pure_v_but_overriden_by_${existing.file_mode}_${short_fn_name}')
|
||||
name = p.prepend_mod('pure_v_but_overridden_by_${existing.file_mode}_${short_fn_name}')
|
||||
}
|
||||
} else {
|
||||
p.table.redefined_fns << name
|
||||
|
@ -794,7 +794,7 @@ fn (mut p Parser) parse_generic_inst_type(name string) ast.Type {
|
||||
p.error_with_pos('interface `${parent_sym.name}` is not a generic interface, cannot instantiate to the concrete types',
|
||||
concrete_types_pos)
|
||||
} else if parent_sym.info.generic_types.len != concrete_types.len {
|
||||
p.error_with_pos('the number of generic types of interfce `${parent_sym.name}` is inconsistent with the concrete types',
|
||||
p.error_with_pos('the number of generic types of interface `${parent_sym.name}` is inconsistent with the concrete types',
|
||||
concrete_types_pos)
|
||||
}
|
||||
}
|
||||
|
@ -1704,7 +1704,7 @@ fn (mut p Parser) asm_ios(output bool) []ast.AsmIO {
|
||||
} else if mut expr is ast.Ident {
|
||||
alias = expr.name
|
||||
}
|
||||
// for constraints like `a`, no alias is needed, it is reffered to as rcx
|
||||
// for constraints like `a`, no alias is needed, it is referred to as rcx
|
||||
mut comments := []ast.Comment{}
|
||||
for p.tok.kind == .comment {
|
||||
comments << p.comment()
|
||||
|
@ -1,7 +1,7 @@
|
||||
vlib/v/parser/tests/embeded_struct_attribute_err.vv:8:7: error: cannot use attributes on embedded structs
|
||||
vlib/v/parser/tests/embedded_struct_attribute_err.vv:8:7: error: cannot use attributes on embedded structs
|
||||
6 |
|
||||
7 | struct Button {
|
||||
8 | Size [json: size] // fmt removes [json: size]
|
||||
| ^
|
||||
9 | }
|
||||
10 |
|
||||
10 |
|
@ -259,7 +259,7 @@ fn test_fn_is_html_open_tag() {
|
||||
b = is_html_open_tag('style', s)
|
||||
assert b == false
|
||||
|
||||
s = '<sript>'
|
||||
s = '<script>'
|
||||
b = is_html_open_tag('style', s)
|
||||
assert b == false
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user