cloudfoundry-community/bosh-cloudstack-cpi

View on GitHub
go_agent/src/code.google.com/p/go.tools/go/types/testdata/cycles1.src

Summary

Maintainability
Test Coverage
// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package p

type (
    A interface {
        a() interface {
            ABC1
        }
    }
    B interface {
        b() interface {
            ABC2
        }
    }
    C interface {
        c() interface {
            ABC3
        }
    }

    AB interface {
        A
        B
    }
    BC interface {
        B
        C
    }

    ABC1 interface {
        A
        B
        C
    }
    ABC2 interface {
        AB
        C
    }
    ABC3 interface {
        A
        BC
    }
)

var (
    x1 ABC1
    x2 ABC2
    x3 ABC3
)

func _() {
    // all types have the same method set
    x1 = x2
    x2 = x1

    x1 = x3
    x3 = x1

    x2 = x3
    x3 = x2

    // all methods return the same type again
    x1 = x1.a()
    x1 = x1.b()
    x1 = x1.c()

    x2 = x2.a()
    x2 = x2.b()
    x2 = x2.c()

    x3 = x3.a()
    x3 = x3.b()
    x3 = x3.c()
}