diff --git a/cl/_testdata/debug/in.go b/cl/_testdata/debug/in.go index 5a27afff..71c91c36 100644 --- a/cl/_testdata/debug/in.go +++ b/cl/_testdata/debug/in.go @@ -35,8 +35,8 @@ type StructWithAllTypeFields struct { pi *int intr Interface m map[string]uint64 - // c chan int - err error + c chan int + err error // fn func(string) (int, error) } @@ -82,7 +82,7 @@ func FuncWithAllTypeParams( pi *int, intr Interface, m map[string]uint64, - // c chan int, + c chan int, err error, // fn func(string) (int, error), ) (int, error) { @@ -94,7 +94,7 @@ func FuncWithAllTypeParams( s, &e, &f, pf, pi, intr, m, - // c, + c, err, // fn, ) @@ -128,8 +128,8 @@ func main() { pi: &i, intr: &Struct{}, m: map[string]uint64{"a": 31, "b": 32}, - // c: make(chan int), - err: errors.New("Test error"), + c: make(chan int), + err: errors.New("Test error"), // fn: func(s string) (int, error) { // println("fn:", s) // return 1, errors.New("fn error") @@ -148,7 +148,7 @@ func main() { s.pf, s.pi, s.intr, s.m, - // s.c, + s.c, s.err, // s.fn, ) diff --git a/ssa/di.go b/ssa/di.go index 1e04e106..15cde379 100644 --- a/ssa/di.go +++ b/ssa/di.go @@ -158,7 +158,7 @@ func (b diBuilder) createType(ty Type, pos token.Position) DIType { case *types.Array: return b.createArrayType(ty, t.Len()) case *types.Chan: - return b.createBasicType(ty) + return b.createChanType(ty) case *types.Map: ty := b.prog.rtType("Map") tk := b.prog.rawType(t.Key()) @@ -365,6 +365,20 @@ func (b diBuilder) createMapType(tyMap, tk, tv Type) DIType { } } +func (b diBuilder) createChanType(t Type) DIType { + tyElem := b.prog.rawType(t.RawType().(*types.Chan).Elem()) + fmt.Printf("tyElem: %v, %T\n", tyElem, tyElem) + return &aDIType{ll: b.di.CreateStructType( + llvm.Metadata{}, + llvm.DIStructType{ + Name: t.RawType().String(), + SizeInBits: b.prog.SizeOf(t) * 8, + AlignInBits: uint32(b.prog.sizes.Alignof(t.RawType()) * 8), + Elements: []llvm.Metadata{}, + }, + )} +} + func (b diBuilder) createComplexType(t Type) DIType { var tfield Type if t.RawType().(*types.Basic).Kind() == types.Complex128 {