(t *testing.T)
| 526 | } |
| 527 | |
| 528 | func TestFunctionMergeSingletonRedefinition(t *testing.T) { |
| 529 | sizeFunc, err := NewFunction("size", |
| 530 | MemberOverload("list_size", |
| 531 | []*types.Type{types.NewListType(types.NewTypeParamType("T"))}, types.IntType), |
| 532 | SingletonUnaryBinding(func(ref.Val) ref.Val { |
| 533 | return types.IntZero |
| 534 | }), |
| 535 | ) |
| 536 | if err != nil { |
| 537 | t.Fatalf("NewFunction() failed: %v", err) |
| 538 | } |
| 539 | sizeVecFunc, err := NewFunction("size", |
| 540 | MemberOverload("string_size", |
| 541 | []*types.Type{types.StringType}, types.IntType), |
| 542 | SingletonUnaryBinding(func(ref.Val) ref.Val { |
| 543 | return types.IntZero |
| 544 | }), |
| 545 | ) |
| 546 | if err != nil { |
| 547 | t.Fatalf("NewFunction() failed: %v", err) |
| 548 | } |
| 549 | _, err = sizeFunc.Merge(sizeVecFunc) |
| 550 | if err == nil || !strings.Contains(err.Error(), "already has a singleton") { |
| 551 | t.Fatalf("Merge() expected to fail, got: %v", err) |
| 552 | } |
| 553 | } |
| 554 | |
| 555 | func TestFunctionAddDuplicateOverloads(t *testing.T) { |
| 556 | _, err := NewFunction("max", |
nothing calls this directly
no test coverage detected