Exemplo n.º 1
0
        public void Merge(ReferenceItem other)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }
            IsDefinition = Merge(other.IsDefinition, IsDefinition);
            Definition   = Merge(other.Definition, Definition);
            Parent       = Merge(other.Parent, Parent);

            if (other.Parts != null && Parts != null)
            {
                foreach (var pair in other.Parts)
                {
                    var             sourceParts = pair.Value;
                    List <LinkItem> targetParts;
                    if (Parts.TryGetValue(pair.Key, out targetParts))
                    {
                        if (sourceParts.Count == 0)
                        {
                            continue;
                        }
                        Debug.Assert(sourceParts.Count == targetParts.Count);
                        for (int i = 0; i < sourceParts.Count; i++)
                        {
                            Debug.Assert(sourceParts[i].Name == targetParts[i].Name);
                            // Disable for now as it will fail for .NET Core project
                            // Debug.Assert(sourceParts[i].DisplayName == targetParts[i].DisplayName);
                            // Debug.Assert(sourceParts[i].DisplayQualifiedNames == targetParts[i].DisplayQualifiedNames);
                            targetParts[i].IsExternalPath &= sourceParts[i].IsExternalPath;
                            targetParts[i].Href            = targetParts[i].Href ?? sourceParts[i].Href;
                        }
                    }
                    else
                    {
                        Parts.Add(pair.Key, pair.Value);
                    }
                }
            }
            else
            {
                Parts = Parts ?? other.Parts;
            }
        }
Exemplo n.º 2
0
        internal string AddReference(ISymbol symbol, Dictionary <string, ReferenceItem> references, SymbolVisitorAdapter adapter)
        {
            var id = VisitorHelper.GetId(symbol);

            ReferenceItem reference = new ReferenceItem();

            reference.Parts        = new SortedList <SyntaxLanguage, List <LinkItem> >();
            reference.IsDefinition = symbol.IsDefinition;
            GenerateReferenceInternal(symbol, reference, adapter);

            if (!references.ContainsKey(id))
            {
                references[id] = reference;
            }
            else
            {
                references[id].Merge(reference);
            }

            return(id);
        }
 internal override sealed void GenerateReferenceInternal(ISymbol symbol, ReferenceItem reference, SymbolVisitorAdapter adapter)
 {
     GenerateReference(symbol, reference, adapter);
 }
 protected abstract void GenerateReference(ISymbol symbol, ReferenceItem reference, SymbolVisitorAdapter adapter);
Exemplo n.º 5
0
 protected override void GenerateReference(ISymbol symbol, ReferenceItem reference, SymbolVisitorAdapter adapter)
 {
     symbol.Accept(new VBReferenceItemVisitor(reference));
 }
Exemplo n.º 6
0
 protected ReferenceItemVisitor(ReferenceItem referenceItem)
 {
     ReferenceItem = referenceItem;
 }
Exemplo n.º 7
0
 internal abstract void GenerateReferenceInternal(ISymbol symbol, ReferenceItem reference, SymbolVisitorAdapter adapter);