But when I look in the spec at the definition of aliases I see this:
An alias declaration binds an identifier to the given type.
AliasDecl = identifier "=" Type .
Within the scope of the identifier, it serves as an alias for the type.
type ( nodeList = *Node // nodeList and *Node are identical types Polar = polar // Polar and polar denote identical types )
This suggests to me that T1 is identical to *T, and thus a valid method receiver.
I think with the current spec both examples should compile, although I admit using a type alias to hide a pointer is bad style. Otherwise the spec should be clarified on how aliases work together with method definitions.