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