module caching: generate type aliases

pull/2298/head
Alexander Medvednikov 2019-10-12 04:09:37 +03:00
parent 4cd9099f74
commit 4c91a5c94b
4 changed files with 12 additions and 2 deletions

View File

@ -172,6 +172,10 @@ fn (v &V) generate_vh() {
if typ.name.contains('__') {
name = typ.name.all_after('__')
}
// type alias
if typ.parent != '' && typ.cat == .alias {
file.writeln('type $typ.name $typ.parent')
}
if typ.cat in [TypeCategory.struct_, .c_struct] {
c := if typ.is_c { 'C.' } else { '' }
file.writeln('struct ${c}$name {')

View File

@ -591,7 +591,12 @@ fn (p mut Parser) type_decl() {
''
}
p.gen_typedef('typedef $_struct $nt_pair; //type alias name="$name" parent=`$parent.name`')
p.register_type_with_parent(name, parent.name)
p.table.register_type2(Type{
name: name
parent: parent.name
mod: p.mod
cat: TypeCategory.alias
})
}
// current token is `(`

View File

@ -78,6 +78,7 @@ enum TypeCategory {
c_typedef
objc_interface // 8 Objective C @interface
array
alias // `type myint int`
}
struct Var {

View File

@ -4,6 +4,6 @@ fn test_nr_cpus() {
$if linux {
nr_cpus := runtime.nr_cpus()
println(nr_cpus)
assert nr_cpus > 0
assert nr_cpus >= 0
}
}