On Thu, Feb 16, 2023 at 8:33 PM Jan Pfeifer <pfei...@gmail.com> wrote:
>
> Indeed.
>
> But it feels like that an incomplete type as type parameter should be ok if 
> we are never instantiating it, and only using pointers to it. From what I see 
> this was not considered in https://go.dev/issue/54765.
>
> Should this be raised as an issue for 1.21 or a 1.20.1 ? Any thoughts ?

I think it's very subtle to ensure that the type is only being used in
acceptable ways.  I'd rather not attempt to do that unless it is very
important to be able to use that kind of type argument.

Ian



> On Fri, Feb 17, 2023 at 12:43 AM Ian Lance Taylor <i...@golang.org> wrote:
>>
>> On Thu, Feb 16, 2023 at 2:38 AM Jan <pfei...@gmail.com> wrote:
>> >
>> > Apologies, actually it was trickier than I thought, the issue happens in 
>> > not fully defined C types only. So here is an example that runs in go 
>> > 1.19.5, but fails in go 1.20
>> >
>> > ```
>> > package main
>> >
>> > /*
>> > // Forward reference of C++ types.
>> > struct SomeType;
>> > typedef struct SomeType SomeType;
>> >
>> > // Fully defined type.
>> > typedef struct {
>> > char C;
>> > } FullyDefinedType;
>> > */
>> > import "C"
>> > import (
>> > "fmt"
>> > )
>> >
>> > type Wrapper[T any] struct {
>> > P *T
>> > }
>> >
>> > type SomeTypeHolder struct {
>> > *Wrapper[C.SomeType]
>> > }
>> >
>> > type FullyDefinedTypeHolder struct {
>> > *Wrapper[C.FullyDefinedType]
>> > }
>> >
>> > func main() {
>> > //var p *C.SomeType
>> > var x SomeTypeHolder
>> > var y FullyDefinedTypeHolder
>> > fmt.Printf("x.Wrapper=%x\n", x.Wrapper)
>> > fmt.Printf("y.Wrapper=%x\n", y.Wrapper)
>> > }
>> > ```
>> >
>> > In go 1.19.5 it prints:
>> >
>> > $ go run .
>> > x.Wrapper=0
>> > y.Wrapper=0
>> >
>> > In go 1.20 it prints:
>> >
>> > $ go run .
>> > # ...
>> > ./main.go:22:3: cannot use incomplete (or unallocatable) type as a type 
>> > argument: main._Ctype_struct_SomeType
>>
>> Giving an error here is https://go.dev/issue/54765.  That is, fixing
>> that issue in 1.20 is what causes this program to not compile.
>>
>> Ian
>
>
>
> --
> Jan Pfeifer
> Research Engineer
> Google Switzerland GmbH
> @ : pfei...@gmail.com
> @ : ja...@google.com
> T : +41 79 907 3855
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcU-ky5d_MWt118k84oBU65ux8XWb3oXsG03cEjC50BXZg%40mail.gmail.com.

Reply via email to