using System; using System.Collections.Immutable; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.CSharp.Symbols; internal class MissingNamespaceSymbol : NamespaceSymbol { private readonly string _name; private readonly Symbol _containingSymbol; public override string Name => _name; public override Symbol ContainingSymbol => _containingSymbol; public override AssemblySymbol ContainingAssembly => _containingSymbol.ContainingAssembly; internal override NamespaceExtent Extent { get { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Invalid comparison between Unknown and I4 if ((int)_containingSymbol.Kind == 10) { return new NamespaceExtent((ModuleSymbol)_containingSymbol); } return ((NamespaceSymbol)_containingSymbol).Extent; } } public override ImmutableArray Locations => ImmutableArray.Empty; public override ImmutableArray DeclaringSyntaxReferences => ImmutableArray.Empty; public MissingNamespaceSymbol(MissingModuleSymbol containingModule) { _containingSymbol = containingModule; _name = string.Empty; } public MissingNamespaceSymbol(NamespaceSymbol containingNamespace, string name) { _containingSymbol = containingNamespace; _name = name; } public override int GetHashCode() { return Hash.Combine(_containingSymbol.GetHashCode(), _name.GetHashCode()); } public override bool Equals(Symbol obj, TypeCompareKind compareKind) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) if ((object)this == obj) { return true; } if (obj is MissingNamespaceSymbol missingNamespaceSymbol && _name.Equals(missingNamespaceSymbol._name)) { return _containingSymbol.Equals(missingNamespaceSymbol._containingSymbol, compareKind); } return false; } public override ImmutableArray GetTypeMembers() { return ImmutableArray.Empty; } public override ImmutableArray GetTypeMembers(ReadOnlyMemory name) { return ImmutableArray.Empty; } public override ImmutableArray GetTypeMembers(ReadOnlyMemory name, int arity) { return ImmutableArray.Empty; } public override ImmutableArray GetMembers() { return ImmutableArray.Empty; } public override ImmutableArray GetMembers(ReadOnlyMemory name) { return ImmutableArray.Empty; } }