test the recent type alias string; print vweb templates in verbose mode

pull/3119/head
Alexander Medvednikov 2019-12-16 18:58:56 +03:00
parent 8c0e0f8ab7
commit bcde155da7
3 changed files with 35 additions and 0 deletions

View File

@ -171,12 +171,18 @@ fn (p mut Parser) comp_time() {
p.check(.lpar) p.check(.lpar)
p.check(.rpar) p.check(.rpar)
v_code := tmpl.compile_template(path) v_code := tmpl.compile_template(path)
if p.pref.is_verbose {
println('vweb template:')
println(v_code)
}
is_strings_imorted := p.import_table.known_import('strings') is_strings_imorted := p.import_table.known_import('strings')
if !is_strings_imorted { if !is_strings_imorted {
p.register_import('strings', 0) // used by v_code p.register_import('strings', 0) // used by v_code
} }
p.import_table.register_used_import('strings') p.import_table.register_used_import('strings')
p.genln('/////////////////// tmpl start') p.genln('/////////////////// tmpl start')
p.scanner.file_path = path
p.scanner.line_nr = 0
p.statements_from_text(v_code, false) p.statements_from_text(v_code, false)
p.genln('/////////////////// tmpl end') p.genln('/////////////////// tmpl end')
receiver := p.cur_fn.args[0] receiver := p.cur_fn.args[0]

View File

@ -18,6 +18,7 @@ pub mut:
fn_cnt int //atomic fn_cnt int //atomic
obfuscate bool obfuscate bool
varg_access []VargAccess varg_access []VargAccess
//enum_vals map[string][]string
//names []Name //names []Name
} }
@ -230,9 +231,18 @@ fn is_primitive_type(typ string) bool {
return is_number_type(typ) || typ == 'string' return is_number_type(typ) || typ == 'string'
} }
/*
fn (t mut Table) register_enum_val(typ, val string) {
if t.enum_vals.len == 0 {
t.enum_vals = [val]
}
}
*/
fn new_table(obfuscate bool) &Table { fn new_table(obfuscate bool) &Table {
mut t := &Table { mut t := &Table {
obfuscate: obfuscate obfuscate: obfuscate
//enum_vals: map[string][]string
} }
t.register_builtin('int') t.register_builtin('int')
t.register_builtin('size_t') t.register_builtin('size_t')

View File

@ -0,0 +1,19 @@
struct Human { name string }
pub fn (h Human) str() string { return 'Human: $h.name' }
type Person Human
fn test_type_print() {
p := Person{'Bilbo'}
println(p)
assert p.str() == 'Human: Bilbo'
}
pub fn (h Person) str() string { return 'Person: $h.name' }
fn test_person_str() {
p := Person{'Bilbo'}
println(p)
assert p.str() == 'Person: Bilbo'
}