github.com/riscv/riscv-go@v0.0.0-20200123204226-124ebd6fcc8e/src/go/types/object_test.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package types 6 7 import "testing" 8 9 func TestIsAlias(t *testing.T) { 10 check := func(obj *TypeName, want bool) { 11 if got := obj.IsAlias(); got != want { 12 t.Errorf("%v: got IsAlias = %v; want %v", obj, got, want) 13 } 14 } 15 16 // predeclared types 17 for _, name := range Universe.Names() { 18 if obj, _ := Universe.Lookup(name).(*TypeName); obj != nil { 19 check(obj, name == "byte" || name == "rune") 20 } 21 } 22 23 // various other types 24 pkg := NewPackage("p", "p") 25 t1 := NewTypeName(0, pkg, "t1", nil) 26 n1 := NewNamed(t1, new(Struct), nil) 27 for _, test := range []struct { 28 name *TypeName 29 alias bool 30 }{ 31 {NewTypeName(0, nil, "t0", nil), false}, // no type yet 32 {NewTypeName(0, pkg, "t0", nil), false}, // no type yet 33 {t1, false}, // type name refers to named type and vice versa 34 {NewTypeName(0, nil, "t2", new(Interface)), true}, // type name refers to unnamed type 35 {NewTypeName(0, pkg, "t3", n1), true}, // type name refers to named type with different type name 36 {NewTypeName(0, nil, "t4", Typ[Int32]), true}, // type name refers to basic type with different name 37 {NewTypeName(0, nil, "int32", Typ[Int32]), false}, // type name refers to basic type with same name 38 {NewTypeName(0, pkg, "int32", Typ[Int32]), true}, // type name is declared in user-defined package (outside Universe) 39 {NewTypeName(0, nil, "rune", Typ[Rune]), true}, // type name refers to basic type rune which is an alias already 40 } { 41 check(test.name, test.alias) 42 } 43 }