cl/test:asmFull error

This commit is contained in:
luoliwoshang
2025-08-21 20:55:20 +08:00
parent 0faef117ca
commit 04f613dd15

View File

@@ -270,6 +270,52 @@ func TestErrBuiltin(t *testing.T) {
test("atomicCmpXchg", func(ctx *context) { ctx.atomicCmpXchg(nil, nil) })
}
func TestErrAsm(t *testing.T) {
test := func(testName string, fn func(ctx *context)) {
defer func() {
if r := recover(); r == nil {
t.Fatal(testName, ": no error?")
}
}()
var ctx context
fn(&ctx)
}
test("asm(NoArgs)", func(ctx *context) { ctx.asm(nil, []ssa.Value{}) })
test("asm(Nonconst)", func(ctx *context) { ctx.asm(nil, []ssa.Value{&ssa.Parameter{}}) })
test("asmFull(Nonconst)", func(ctx *context) { ctx.asm(nil, []ssa.Value{&ssa.Parameter{}, &ssa.Parameter{}}) })
test("asmFull(NonConstKey)", func(ctx *context) {
makeMap := &ssa.MakeMap{}
nonConstKey := &ssa.Parameter{}
mapUpdate := &ssa.MapUpdate{Key: nonConstKey}
referrers := []ssa.Instruction{mapUpdate}
setRefs(unsafe.Pointer(makeMap), referrers...)
strConst := &ssa.Const{
Value: constant.MakeString("nop"),
}
ctx.asm(nil, []ssa.Value{strConst, makeMap})
})
test("asmFull(RegisterNotFound)", func(ctx *context) {
makeMap := &ssa.MakeMap{}
referrers := []ssa.Instruction{}
setRefs(unsafe.Pointer(makeMap), referrers...)
strConst := &ssa.Const{
Value: constant.MakeString("test {missing}"),
}
ctx.asm(nil, []ssa.Value{strConst, makeMap})
})
test("asmFull(UnknownReferrer)", func(ctx *context) {
makeMap := &ssa.MakeMap{}
unknownRef := &ssa.Return{}
referrers := []ssa.Instruction{unknownRef}
setRefs(unsafe.Pointer(makeMap), referrers...)
strConst := &ssa.Const{
Value: constant.MakeString("test"),
}
ctx.asm(nil, []ssa.Value{strConst, makeMap})
})
}
func TestPkgNoInit(t *testing.T) {
pkg := types.NewPackage("foo", "foo")
ctx := &context{