feat: upgrade to x/tools 0.28

This commit is contained in:
Li Jie
2024-11-29 14:23:46 +08:00
parent db3f6e077e
commit 03b469212e
29 changed files with 202 additions and 153 deletions

View File

@@ -1223,11 +1223,20 @@ func (b Builder) BuiltinCall(fn string, args ...Expr) (ret Expr) {
return
}
case "clear":
if len(args) == 1 && args[0].kind == vkMap {
m := args[0]
t := b.abiType(m.raw.Type)
b.Call(b.Pkg.rtFunc("MapClear"), t, m)
return
if len(args) == 1 {
arg := args[0]
switch arg.kind {
case vkMap:
m := arg
t := b.abiType(m.raw.Type)
b.Call(b.Pkg.rtFunc("MapClear"), t, m)
return
case vkSlice:
s := arg
t := b.abiType(s.raw.Type)
b.Call(b.Pkg.rtFunc("SliceClear"), t, s)
return
}
}
case "min":
if len(args) > 0 {
@@ -1239,6 +1248,8 @@ func (b Builder) BuiltinCall(fn string, args ...Expr) (ret Expr) {
}
case "Add":
return b.Advance(args[0], args[1])
case "Sizeof":
return b.Prog.Val(int(b.Prog.SizeOf(args[0].Type)))
}
panic("todo: " + fn)
}

View File

@@ -388,6 +388,8 @@ func (p Program) toType(raw types.Type) Type {
return &aType{llvm.ArrayType(elem.ll, int(t.Len())), typ, vkArray}
case *types.Chan:
return &aType{llvm.PointerType(p.rtChan(), 0), typ, vkChan}
case *types.TypeParam:
return p.toType(t.Underlying())
}
panic(fmt.Sprintf("toLLVMType: todo - %T\n", raw))
}

View File

@@ -113,6 +113,8 @@ func (p goTypes) cvtType(typ types.Type) (raw types.Type, cvt bool) {
}
case *types.Tuple:
return p.cvtTuple(t)
case *types.TypeParam:
return typ.Underlying(), false
default:
panic(fmt.Sprintf("cvtType: unexpected type - %T", typ))
}