-
Notifications
You must be signed in to change notification settings - Fork 18k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmd/compile: generics with method values not working #45817
Comments
Method types are just function types with the receiver parameter still in place. As far as expression typing goes, you can generally just ignore the receiver part: Off hand, I think they only show up in Method expressions will instead have a new type like |
Thanks for the example. Method values are definitely an untested area. I think I already have another example of method values not working when I tried an adjusted version of ./cmd/compile/internal/types2/fixedbugs/issue44688.go2. FYI, the other big areas that are not handled correctly yet related to generic functions/types are: embedded fields & interfaces and type aliases. I eventually plan to go through all of ./cmd/compile/internal/types2/fixedbugs, but it will be easier once we have basic export/import working. |
Change https://golang.org/cl/318089 mentions this issue: |
Change https://golang.org/cl/319589 mentions this issue: |
… methods We were handling the case where an OFUNCINST node was used as a function value, but not the case when an OFUNCINST node was used as a method value. In the case of a method value, we need to create a new selector expression that references the newly stenciled method. To make this work, also needed small fix to noder2 code to properly set the Sel of a method SelectorExpr (should be just the base method name, not the full method name including the type string). This has to be correct, so that the function created by MethodValueWrapper() can be typechecked successfully. Fixes #45817 Change-Id: I7343e8a0d35fc46b44dfe4d45b77997ba6c8733e Reviewed-on: https://go-review.googlesource.com/c/go/+/319589 Reviewed-by: Keith Randall <khr@golang.org> Trust: Dan Scales <danscales@google.com>
Fixed by https://golang.org/cl/319589. I guess the issue wasn't closed automatically, because the CL was checked in on dev.typeparams? But I think we can close this issue, since we're doing all the testing/dev on dev.typeparams. |
This should work, I think. It looks like it got the type of
f
correct, which means:=
worked. But then later it decided the RHS was a different type...I think this might be happening during stenciling. Beforehand, the RHS of the assignment is
afterward, the RHS is
The former looks superficially ok, but I'm not entirely sure as I don't really understand what method types are.
The latter definitely looks like a problem.
Adding
-l
to the command line makes the compiler crash :(@griesemer @findleyr @mdempsky @danscales
The text was updated successfully, but these errors were encountered: