// getNamedScopeForScope returns namedScopeInfo for the given name, if it references a node by name. func (sb *scopeBuilder) getNamedScopeForScope(scope *proto.ScopeInfo) (namedScopeInfo, bool) { if scope.GetNamedReference() == nil { return namedScopeInfo{}, false } namedReference := scope.GetNamedReference() nodeId := compilergraph.GraphNodeId(namedReference.GetReferencedNode()) if namedReference.GetIsSRGNode() { referencedNode := sb.sg.srg.GetNamedScope(nodeId) return namedScopeInfo{referencedNode, nil, sb}, true } else { referencedNode := sb.sg.tdg.GetTypeOrMember(nodeId) return namedScopeInfo{srg.SRGNamedScope{}, referencedNode, sb}, true } }
// GetReferencedName returns the ReferencedName struct for the given scope, if it refers to a named scope. func (sg *ScopeGraph) GetReferencedName(scope proto.ScopeInfo) (ReferencedName, bool) { if scope.GetNamedReference() == nil { return ReferencedName{}, false } namedReference := scope.GetNamedReference() nodeId := compilergraph.GraphNodeId(namedReference.GetReferencedNode()) if namedReference.GetIsSRGNode() { referencedNode := sg.srg.GetNamedScope(nodeId) return ReferencedName{referencedNode, nil, sg}, true } else { referencedNode := sg.tdg.GetTypeOrMember(nodeId) return ReferencedName{srg.SRGNamedScope{}, referencedNode, sg}, true } }