gen: add type name to comp for (#10881)
parent
713a079684
commit
dd3ee20566
|
@ -108,6 +108,7 @@ pub:
|
|||
args []MethodArgs
|
||||
return_type int
|
||||
typ int
|
||||
type_name string
|
||||
}
|
||||
|
||||
// FieldData holds information about a field. Fields reside on structs.
|
||||
|
@ -119,6 +120,7 @@ pub:
|
|||
is_mut bool
|
||||
is_shared bool
|
||||
typ int
|
||||
type_name string
|
||||
}
|
||||
|
||||
enum AttributeKind {
|
||||
|
|
|
@ -459,6 +459,7 @@ fn (mut g Gen) comp_for(node ast.CompFor) {
|
|||
ret_typ := method.return_type.idx()
|
||||
g.writeln('\t${node.val_var}.typ = $styp;')
|
||||
g.writeln('\t${node.val_var}.return_type = $ret_typ;')
|
||||
g.writeln('\t${node.val_var}.type_name = _SLIT("${g.table.get_type_symbol(ret_typ).name}");')
|
||||
//
|
||||
g.comptime_var_type_map['${node.val_var}.return_type'] = ret_typ
|
||||
g.comptime_var_type_map['${node.val_var}.typ'] = styp
|
||||
|
@ -502,6 +503,7 @@ fn (mut g Gen) comp_for(node ast.CompFor) {
|
|||
// g.writeln('\t${node.val_var}.typ = _SLIT("$field_sym.name");')
|
||||
styp := field.typ
|
||||
g.writeln('\t${node.val_var}.typ = $styp;')
|
||||
g.writeln('\t${node.val_var}.type_name = _SLIT("${g.table.get_type_symbol(styp).name}");')
|
||||
g.writeln('\t${node.val_var}.is_pub = $field.is_pub;')
|
||||
g.writeln('\t${node.val_var}.is_mut = $field.is_mut;')
|
||||
g.writeln('\t${node.val_var}.is_shared = ${field.typ.has_flag(.shared_f)};')
|
||||
|
|
|
@ -68,6 +68,7 @@ fn test_comptime_for_fields() {
|
|||
$for field in App.fields {
|
||||
println(' field: $field.name | ' + no_lines('$field'))
|
||||
$if field.typ is string {
|
||||
assert field.type_name == 'string'
|
||||
assert field.name in ['a', 'b', 'g']
|
||||
}
|
||||
$if field.typ is f32 {
|
||||
|
|
Loading…
Reference in New Issue