if n.Left != nil {
n.Left.Type = n.Type
}
- if n.Embedded != 0 {
+ if n.Embedded() {
checkembeddedtype(n.Type)
}
}
if n.Left != nil && n.Left.Op == ONAME {
f.Nname = asTypesNode(n.Left)
- f.Embedded = n.Embedded
+ if n.Embedded() {
+ f.Embedded = 1
+ } else {
+ f.Embedded = 0
+ }
f.Sym = asNode(f.Nname).Sym
}
n = newname(s.Pkg.Lookup(name))
}
n = nod(ODCLFIELD, n, oldname(s))
- n.Embedded = 1
+ n.SetEmbedded(true)
return n
}
Op Op
Etype types.EType // op for OASOP, etype for OTYPE, exclam for export, 6g saved reg, ChanDir for OTCHAN, for OINDEXMAP 1=LHS,0=RHS
Class Class // PPARAM, PAUTO, PEXTERN, etc
- Embedded uint8 // ODCLFIELD embedded type
Typecheck uint8 // tracks state during typechecking; 2 == loop detected
Initorder uint8
}
_, nodeLikely // if statement condition likely
_, nodeHasVal // node.E contains a Val
_, nodeHasOpt // node.E contains an Opt
+ _, nodeEmbedded // ODCLFIELD embedded type
)
func (n *Node) Walkdef() uint8 { return n.flags.get2(nodeWalkdef) }
func (n *Node) Likely() bool { return n.flags&nodeLikely != 0 }
func (n *Node) HasVal() bool { return n.flags&nodeHasVal != 0 }
func (n *Node) HasOpt() bool { return n.flags&nodeHasOpt != 0 }
+func (n *Node) Embedded() bool { return n.flags&nodeEmbedded != 0 }
func (n *Node) SetWalkdef(b uint8) { n.flags.set2(nodeWalkdef, b) }
func (n *Node) SetLikely(b bool) { n.flags.set(nodeLikely, b) }
func (n *Node) SetHasVal(b bool) { n.flags.set(nodeHasVal, b) }
func (n *Node) SetHasOpt(b bool) { n.flags.set(nodeHasOpt, b) }
+func (n *Node) SetEmbedded(b bool) { n.flags.set(nodeEmbedded, b) }
// Val returns the Val for the node.
func (n *Node) Val() Val {