@@ -1224,23 +1224,26 @@ pub fn (mut g Gen) write_typeof_functions() {
12241224 g.writeln ('\t if (sidx == _${sym .cname }_${sub_sym .cname }_index) return "${util .strip_main_name (sub_sym .name )}";' )
12251225 }
12261226 g.writeln2 ('\t return "unknown ${util .strip_main_name (sym .name )}";' , '}' )
1227- g.definitions.writeln ('u32 v_typeof_interface_idx_${sym .cname }(u32 sidx);' )
1228- g.writeln2 ('' , 'u32 v_typeof_interface_idx_${sym .cname }(u32 sidx) {' )
1229- if g.pref.parallel_cc {
1230- g.extern_out.writeln ('extern u32 v_typeof_interface_idx_${sym .cname }(u32 sidx);' )
1231- }
1232- for t in inter_info.types {
1233- sub_sym := g.table.sym (ast.mktyp (t))
1234- if sub_sym.info is ast.Struct && sub_sym.info.is_unresolved_generic () {
1235- continue
1236- }
1237- if g.pref.skip_unused && sub_sym.kind == .struct
1238- && sub_sym.idx ! in g.table.used_features.used_syms {
1239- continue
1227+ // Avoid duplicate symbol '_v_typeof_interface_idx_IError' when using -usecache
1228+ if g.pref.build_mode != .build_module {
1229+ g.definitions.writeln ('u32 v_typeof_interface_idx_${sym .cname }(u32 sidx);' )
1230+ g.writeln2 ('' , 'u32 v_typeof_interface_idx_${sym .cname }(u32 sidx) {' )
1231+ if g.pref.parallel_cc {
1232+ g.extern_out.writeln ('extern u32 v_typeof_interface_idx_${sym .cname }(u32 sidx);' )
1233+ }
1234+ for t in inter_info.types {
1235+ sub_sym := g.table.sym (ast.mktyp (t))
1236+ if sub_sym.info is ast.Struct && sub_sym.info.is_unresolved_generic () {
1237+ continue
1238+ }
1239+ if g.pref.skip_unused && sub_sym.kind == .struct
1240+ && sub_sym.idx ! in g.table.used_features.used_syms {
1241+ continue
1242+ }
1243+ g.writeln ('\t if (sidx == _${sym .cname }_${sub_sym .cname }_index) return ${u32 (t .set_nr_muls (0 ))};' )
12401244 }
1241- g.writeln ('\t if (sidx == _${ sym . cname }_${ sub_sym . cname }_index) return ${ u32 (t . set_nr_muls ( 0 ))}; ' )
1245+ g.writeln2 ('\t return ${ u32 (ityp )};' , '} ' )
12421246 }
1243- g.writeln2 ('\t return ${u32 (ityp )};' , '}' )
12441247 }
12451248 }
12461249 g.writeln2 ('// << typeof() support for sum types' , '' )
0 commit comments