make all necessary structs public

pull/2463/head^2
Alexander Medvednikov 2019-10-24 12:47:21 +03:00
parent dce3275df4
commit 4a88a28a3b
9 changed files with 34 additions and 26 deletions

View File

@ -9,9 +9,9 @@ Example usage of this module:
import benchmark
mut bmark := benchmark.new_benchmark()
// by default the benchmark will be verbose, i.e. it will include timing information
// if you want it to be silent, set bmark.verbose = false
for {
bmark.step() // call this when you want to advance the benchmark.
// if you want it to be silent, set bmark.verbose = false
for {
bmark.step() // call this when you want to advance the benchmark.
// The timing info in bmark.step_message will be measured starting from the last call to bmark.step
....
@ -26,7 +26,7 @@ println( bmark.total_message('remarks about the benchmark') )
```
*/
struct Benchmark{
pub struct Benchmark{
pub mut:
bench_start_time i64
bench_end_time i64

View File

@ -6,7 +6,7 @@ module builtin
import strings
struct map {
pub struct map {
element_size int
root &mapnode
pub:

View File

@ -43,7 +43,7 @@ NB: A V string should be/is immutable from the point of view of
import strconv
struct string {
pub struct string {
//mut:
//hash_cache int
pub:
@ -51,7 +51,7 @@ pub:
len int // the length of the .str field, excluding the ending 0 byte. It is always equal to strlen(.str).
}
struct ustring {
pub struct ustring {
pub:
s string
runes []int

View File

@ -1100,6 +1100,9 @@ fn (p mut Parser) get_type() string {
p.error('unknown type `$typ`')
}
}
else if !t.is_public && t.mod != p.mod && t.name != '' {
p.warn('type `$t.name` is private')
}
}
if typ == 'void' {
p.error('unknown type `$typ`')
@ -3179,6 +3182,9 @@ fn (p mut Parser) array_init() string {
fn (p mut Parser) struct_init(typ string) string {
p.is_struct_init = true
t := p.table.find_type(typ)
if !t.is_public && t.mod != p.mod {
p.warn('type `$t.name` is private')
}
if p.gen_struct_init(typ, t) { return typ }
p.scanner.fmt_out.cut(typ.len)
ptr := typ.contains('*')
@ -4120,7 +4126,7 @@ fn (p mut Parser) js_decode() string {
p.gen('json__jsdecode_$typ($cjson_tmp, &$tmp); cJSON_Delete($cjson_tmp);')
opt_type := 'Option_$typ'
p.cgen.typedefs << 'typedef Option $opt_type;'
p.table.register_type(opt_type)
p.table.register_builtin(opt_type)
return opt_type
}
else if op == 'encode' {

View File

@ -180,7 +180,7 @@ for (int i = 0; i < ${qprefix}rows.len; i++) {
} else if query_one {
opt_type := 'Option_$table_name'
p.cgen.typedefs << 'typedef Option $opt_type;'
p.table.register_type( opt_type )
p.table.register_builtin( opt_type )
return opt_type
} else {
p.register_array('array_$table_name')

View File

@ -234,8 +234,8 @@ fn new_table(obfuscate bool) &Table {
mut t := &Table {
obfuscate: obfuscate
}
t.register_type('int')
t.register_type('size_t')
t.register_builtin('int')
t.register_builtin('size_t')
t.register_type_with_parent('i8', 'int')
t.register_type_with_parent('byte', 'int')
t.register_type_with_parent('char', 'int') // for C functions only, to avoid warnings
@ -244,17 +244,17 @@ fn new_table(obfuscate bool) &Table {
t.register_type_with_parent('u32', 'int')
t.register_type_with_parent('i64', 'int')
t.register_type_with_parent('u64', 'u32')
t.register_type('byteptr')
t.register_type('intptr')
t.register_type('f32')
t.register_type('f64')
t.register_type('rune')
t.register_type('bool')
t.register_type('void')
t.register_type('voidptr')
t.register_type('va_list')
t.register_builtin('byteptr')
t.register_builtin('intptr')
t.register_builtin('f32')
t.register_builtin('f64')
t.register_builtin('rune')
t.register_builtin('bool')
t.register_builtin('void')
t.register_builtin('voidptr')
t.register_builtin('va_list')
for c in reserved_type_param_names {
t.register_type(c)
t.register_builtin(c)
}
t.register_const('stdin', 'int', 'main', true)
t.register_const('stdout', 'int', 'main', true)
@ -390,14 +390,14 @@ fn (t &Table) known_const(name string) bool {
return true
}
fn (t mut Table) register_type(typ string) {
fn (t mut Table) register_builtin(typ string) {
if typ.len == 0 {
return
}
if typ in t.typesmap {
return
}
t.typesmap[typ] = Type{name:typ}
t.typesmap[typ] = Type{name:typ, is_public:true}
}
fn (p mut Parser) register_type_with_parent(strtyp, parent string) {
@ -405,6 +405,7 @@ fn (p mut Parser) register_type_with_parent(strtyp, parent string) {
name: strtyp
parent: parent
mod: p.mod
is_public: true
}
p.table.register_type2(typ)
}
@ -416,6 +417,7 @@ fn (t mut Table) register_type_with_parent(typ, parent string) {
t.typesmap[typ] = Type {
name: typ
parent: parent
is_public: true
//mod: mod
}
}

View File

@ -35,7 +35,7 @@ struct C.FILE {
}
struct File {
pub struct File {
cfile &FILE
}

View File

@ -4,7 +4,7 @@
module strings
struct Builder {
pub struct Builder {
mut:
buf []byte
pub:

View File

@ -4,7 +4,7 @@
module strings
struct Builder {
pub struct Builder {
mut:
buf []byte
pub: