// walkConv walks an OCONV or OCONVNOP (but not OCONVIFACE) node. func walkConv(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkConvInterface walks an OCONVIFACE node. func walkConvInterface(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // Returns the data word (the second word) used to represent conv.X in // an interface. func dataWord(conv *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkBytesRunesToString walks an OBYTES2STR or ORUNES2STR node. func walkBytesRunesToString(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkBytesToStringTemp walks an OBYTES2STRTMP node. func walkBytesToStringTemp(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkRuneToString walks an ORUNESTR node. func walkRuneToString(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkStringToBytes walks an OSTR2BYTES node. func walkStringToBytes(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkStringToBytesTemp walks an OSTR2BYTESTMP node. func walkStringToBytesTemp(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkStringToRunes walks an OSTR2RUNES node. func walkStringToRunes(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // dataWordFuncName returns the name of the function used to convert a value of type "from" // to the data word of an interface. // argType is the type the argument needs to be coerced to. // needsaddr reports whether the value should be passed (needaddr==false) or its address (needsaddr==true). func dataWordFuncName(from *types.Type) (fnname string, argType *types.Type, needsaddr bool) { … } // rtconvfn returns the parameter and result types that will be used by a // runtime function to convert from type src to type dst. The runtime function // name can be derived from the names of the returned types. // // If no such function is necessary, it returns (Txxx, Txxx). func rtconvfn(src, dst *types.Type) (param, result types.Kind) { … } func soleComponent(init *ir.Nodes, n ir.Node) ir.Node { … } // byteindex converts n, which is byte-sized, to an int used to index into an array. // We cannot use conv, because we allow converting bool to int here, // which is forbidden in user code. func byteindex(n ir.Node) ir.Node { … } func walkCheckPtrArithmetic(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … } // walkSliceToArray walks an OSLICE2ARR expression. func walkSliceToArray(n *ir.ConvExpr, init *ir.Nodes) ir.Node { … }