Example #1
0
        private void InitializeFullQualifierSymbol(BoundQualifier qualifier)
        {
            if (qualifier.IsInitialized())
            {
                return;
            }
            var result = ArrayBuilder <object> .GetInstance();

            var identifiers = qualifier.Identifiers;
            NamespaceOrTypeSymbol qualifierOpt = null;

            for (int i = 0; i < identifiers.Length; i++)
            {
                bool         last         = i == identifiers.Length - 1;
                var          types        = last ? _types : _nestingTypes;
                var          identifier   = identifiers[i];
                LookupResult lookupResult = LookupResult.GetInstance();
                this.LookupSymbolsSimpleName(lookupResult, new LookupConstraints(identifier.Name, identifier.MetadataName, types, qualifierOpt));
                var symbol = this.ResultSymbol(lookupResult, identifier.Name, identifier.MetadataName, identifier.Syntax, identifier.BoundTree.DiagnosticBag, false, out bool wasError, qualifierOpt, LookupOptions.Default);
                Debug.Assert(symbol != null);
                result.Add(symbol);
                lookupResult.Free();
                qualifierOpt = symbol as NamespaceOrTypeSymbol;
            }
            qualifier.InitializeValues(identifiers, result.ToImmutableAndFree());
        }
Example #2
0
        public override void InitializeQualifierSymbol(BoundQualifier qualifier)
        {
            if (qualifier.IsInitialized())
            {
                return;
            }
            var boundNode = this.Compilation.GetBoundNode <BoundSymbolUse>(qualifier.Syntax);

            if (boundNode == null)
            {
                return;
            }
            var qualifiers = boundNode.GetChildQualifiers();

            foreach (var child in qualifiers)
            {
                if (child.Syntax.Span.Contains(qualifier.Syntax.Span))
                {
                    this.InitializeFullQualifierSymbol(child);
                    return;
                }
            }
            qualifier.BoundTree.DiagnosticBag.Add(ModelErrorCode.WRN_QualifierNotFound, qualifier.Syntax.Location, qualifier.Syntax.ToString(), qualifier.Syntax.GetType().FullName, boundNode.Syntax.GetType().FullName);
            this.InitializeFullQualifierSymbol(qualifier);
        }
Example #3
0
        public override void InitializeQualifierSymbol(BoundQualifier qualifier)
        {
            var length = qualifier.Identifiers.Length;

            if (length == 1)
            {
                qualifier.InitializeValues(qualifier.Identifiers, ImmutableArray.Create(this.Value));
            }
            else if (length > 1)
            {
                var values = ArrayBuilder <object> .GetInstance();

                for (int i = 0; i < length; i++)
                {
                    if (i < length - 1)
                    {
                        values.Add(null);
                    }
                    else
                    {
                        values.Add(this.Value);
                    }
                }
                qualifier.InitializeValues(qualifier.Identifiers, values.ToImmutableAndFree());
            }
            else
            {
                qualifier.InitializeValues(qualifier.Identifiers, ImmutableArray <object> .Empty);
            }
        }
Example #4
0
        private void InitializeFullQualifierSymbol(BoundQualifier qualifier)
        {
            if (qualifier.IsInitialized())
            {
                return;
            }
            var containerSymbol = this.GetParentDeclarationSymbol();
            var result          = ArrayBuilder <object> .GetInstance();

            var identifiers = qualifier.Identifiers;

            foreach (var identifier in identifiers)
            {
                var symbol = containerSymbol?.GetSourceMember(identifier.Syntax);
                Debug.Assert(symbol != null);
                result.Add(symbol);
                containerSymbol = symbol;
            }
            qualifier.InitializeValues(identifiers, result.ToImmutableAndFree());
        }
Example #5
0
        public override void InitializeQualifierSymbol(BoundQualifier qualifier)
        {
            if (qualifier.IsInitialized())
            {
                return;
            }
            var boundNode  = this.Compilation.GetBoundNode <BoundSymbolDef>(qualifier.Syntax);
            var boundNames = boundNode.GetChildNames();

            foreach (var boundName in boundNames)
            {
                foreach (var child in boundName.GetChildQualifiers())
                {
                    if (child.Syntax.Span.Contains(qualifier.Syntax.Span))
                    {
                        this.InitializeFullQualifierSymbol(child);
                    }
                }
            }
        }
 public override void InitializeQualifierSymbol(BoundQualifier qualifier)
 {
 }