func (stc *srgTypeConstructor) DecorateMembers(decorater typegraph.GetMemberDecorator, reporter typegraph.IssueReporter, graph *typegraph.TypeGraph) { // Decorate all module members. for _, module := range stc.srg.GetModules() { for _, member := range module.GetMembers() { parent, _ := graph.GetTypeOrModuleForSourceNode(module.Node()) stc.decorateMember(member, parent, decorater(member.GraphNode), reporter, graph) } } // Decorate all type members. buildTypeMembers := func(key interface{}, value interface{}) bool { data := value.(typeMemberWork) for _, member := range data.srgType.GetMembers() { parent, _ := graph.GetTypeOrModuleForSourceNode(data.srgType.Node()) stc.decorateMember(member, parent, decorater(member.GraphNode), reporter, graph) } return true } workqueue := compilerutil.Queue() for _, srgType := range stc.srg.GetTypes() { workqueue.Enqueue(srgType.Node(), typeMemberWork{srgType}, buildTypeMembers) } workqueue.Run() }