/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/CSharp/Test/Symbol/Symbols/MockNamespaceSymbol.cs
106 строк
3 KB
CyrusNajmabadi
Allocate less in GetTypeByMetadataName (#68415)
08 июн 2023, 22:03
Не верифицирован
08 июн 2023, 22:03
4b3255c
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; using Microsoft.CodeAnalysis.CSharp.Symbols; namespace Microsoft.CodeAnalysis.CSharp.UnitTests { internal class MockNamespaceSymbol : NamespaceSymbol, IMockSymbol { private NamespaceSymbol _container; private readonly NamespaceExtent _extent; private readonly IEnumerable<Symbol> _children; private readonly string _name; public MockNamespaceSymbol(string name, NamespaceExtent extent, IEnumerable<Symbol> children) { _name = name; _extent = extent; _children = children; } public void SetContainer(Symbol container) { _container = (NamespaceSymbol)container; } public override string Name { get { return _name; } } internal override NamespaceExtent Extent { get { return _extent; } } public override ImmutableArray<Symbol> GetMembers() { return _children.AsImmutable(); } public override ImmutableArray<Symbol> GetMembers(ReadOnlyMemory<char> name) { return _children.Where(ns => ns.Name.AsSpan().SequenceEqual(name.Span)).ToArray().AsImmutableOrNull(); } public override ImmutableArray<NamedTypeSymbol> GetTypeMembers() { return (from c in _children where c is NamedTypeSymbol select (NamedTypeSymbol)c).ToArray().AsImmutableOrNull(); } public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name) { return (from c in _children where c is NamedTypeSymbol && c.Name.AsSpan().SequenceEqual(name.Span) select (NamedTypeSymbol)c).ToArray().AsImmutableOrNull(); } public override Symbol ContainingSymbol { get { return _container; } } public override AssemblySymbol ContainingAssembly { get { return _container.ContainingAssembly; } } public override ImmutableArray<Location> Locations { get { return ImmutableArray.Create<Location>(); } } public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences { get { return ImmutableArray.Create<SyntaxReference>(); } } } }