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()); }
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); }
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); } }
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()); }
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) { }