1 instantiation of EntityRegistry
ILAssembler (1)
GrammarVisitor.cs (1)
79
private readonly EntityRegistry _entityRegistry =
new
();
143 references to EntityRegistry
ILAssembler (143)
BlobBuilderExtensions.cs (2)
86
public static void WriteTypeEntity(this BlobBuilder builder,
EntityRegistry
.TypeEntity entity)
88
if (entity is
EntityRegistry
.FakeTypeEntity fakeEntity)
GrammarVisitor.cs (141)
79
private readonly
EntityRegistry
_entityRegistry = new();
116
public sealed record Type(
EntityRegistry
.TypeEntity Entity) : TypedefEntry;
118
public sealed record Member(
EntityRegistry
.EntityBase Entity) : TypedefEntry;
119
public sealed record CustomAttribute(
EntityRegistry
.EntityBase Constructor, BlobBuilder Value) : TypedefEntry;
150
if (entity is
EntityRegistry
.MethodDefinitionEntity method && method.ExportOrdinal >= 0)
297
if (entity is
EntityRegistry
.MethodDefinitionEntity method &&
324
if (entity is
EntityRegistry
.MethodDefinitionEntity method &&
382
if (entity is not
EntityRegistry
.MethodDefinitionEntity method)
422
private static BlobBuilder EncodeSequencePoints(List<
EntityRegistry
.SequencePoint> sequencePoints)
553
private
EntityRegistry
.AssemblyOrRefEntity? _currentAssemblyOrRef;
595
_entityRegistry.Assembly ??= new
EntityRegistry
.AssemblyEntity(assemblyName);
740
((
EntityRegistry
.AssemblyReferenceEntity)_currentAssemblyOrRef!).Hash = blob;
752
public GrammarResult.Literal<
EntityRegistry
.AssemblyReferenceEntity> VisitAssemblyRefHead(CILParser.AssemblyRefHeadContext context)
869
public GrammarResult.Literal<
EntityRegistry
.TypeEntity> VisitCatchClause(CILParser.CatchClauseContext context) => VisitTypeSpec(context.typeSpec());
889
blob.WriteUTF8((name as
EntityRegistry
.IHasReflectionNotation)?.ReflectionNotation ?? "");
921
public GrammarResult.Literal<(GrammarResult.Flag<TypeAttributes> Attribute,
EntityRegistry
.WellKnownBaseType? FallbackBase, bool RequireSealed)> VisitClassAttr(CILParser.ClassAttrContext context)
930
EntityRegistry
.WellKnownBaseType? fallbackBase = null;
934
fallbackBase =
EntityRegistry
.WellKnownBaseType.System_ValueType;
938
fallbackBase =
EntityRegistry
.WellKnownBaseType.System_Enum;
951
return new((new(context.VALUE() is not null ? TypeAttributes.Sealed : 0),
EntityRegistry
.WellKnownBaseType.System_Enum, false));
956
return new((new(TypeAttributes.Sealed),
EntityRegistry
.WellKnownBaseType.System_ValueType, true));
989
public CurrentMethodContext(
EntityRegistry
.MethodDefinitionEntity definition)
994
public
EntityRegistry
.MethodDefinitionEntity Definition { get; }
1089
public GrammarResult.Literal<
EntityRegistry
.TypeDefinitionEntity> VisitClassHead(CILParser.ClassHeadContext context)
1128
EntityRegistry
.WellKnownBaseType? fallbackBase = _options.NoAutoInherit ? null :
EntityRegistry
.WellKnownBaseType.System_Object;
1182
EntityRegistry
.GenericParameterEntity? param = VisitTyparsClause(context.typarsClause()).Value[i];
1241
public GrammarResult.Literal<
EntityRegistry
.TypeEntity> VisitClassName(CILParser.ClassNameContext context)
1248
return new(new
EntityRegistry
.FakeTypeEntity(default(TypeDefinitionHandle)));
1258
return new(new
EntityRegistry
.FakeTypeEntity(default(TypeDefinitionHandle)));
1264
return new(new
EntityRegistry
.FakeTypeEntity(default(TypeDefinitionHandle)));
1273
return new(new
EntityRegistry
.FakeTypeEntity(default(TypeDefinitionHandle)));
1280
EntityRegistry
.EntityBase? resolutionContext = null;
1290
return new(new
EntityRegistry
.FakeTypeEntity(default(TypeDefinitionHandle)));
1304
resolutionContext = new
EntityRegistry
.FakeTypeEntity(default(ModuleDefinitionHandle));
1309
EntityRegistry
.TypeReferenceEntity typeRef = _entityRegistry.GetOrCreateTypeReference(resolutionContext, VisitSlashedName(slashedName).Value);
1318
EntityRegistry
.TypeEntity ResolveTypeDef()
1335
EntityRegistry
.TypeDefinitionEntity? typeDef = null;
1350
return new
EntityRegistry
.FakeTypeEntity(default(TypeDefinitionHandle));
1359
EntityRegistry
.EntityBase resolvedToken = VisitMdtoken(typeToken).Value;
1361
if (resolvedToken is not
EntityRegistry
.TypeEntity type)
1363
return new(new
EntityRegistry
.FakeTypeEntity(resolvedToken.Handle));
1390
if (VisitClassName(className).Value is
EntityRegistry
.IHasReflectionNotation notation)
1431
public GrammarResult.Literal<
EntityRegistry
.CustomAttributeEntity?> VisitCustomAttrDecl(CILParser.CustomAttrDeclContext context)
1462
public GrammarResult.Literal<
EntityRegistry
.CustomAttributeEntity?> VisitCustomDescrInMethodBody(CILParser.CustomDescrInMethodBodyContext context)
1529
public GrammarResult.Literal<
EntityRegistry
.CustomAttributeEntity> VisitCustomDescr(CILParser.CustomDescrContext context)
1558
public GrammarResult.Literal<
EntityRegistry
.CustomAttributeEntity> VisitCustomDescrWithOwner(CILParser.CustomDescrWithOwnerContext context)
1591
public GrammarResult.Literal<
EntityRegistry
.EntityBase> VisitCustomType(CILParser.CustomTypeContext context) => VisitMethodRef(context.methodRef());
1707
private readonly Stack<
EntityRegistry
.TypeDefinitionEntity> _currentTypeDefinition = new();
1910
EntityRegistry
.TypeEntity typeEntity = VisitClassName(className).Value;
1966
EntityRegistry
.GenericParameterEntity? genericParameter = _currentMethod.Definition.GenericParameters[i];
2012
EntityRegistry
.GenericParameterEntity? genericParameter = _currentTypeDefinition.Peek().GenericParameters[i];
2093
public GrammarResult.Literal<(MethodSemanticsAttributes,
EntityRegistry
.EntityBase)?> VisitEventDecl(CILParser.EventDeclContext context)
2100
EntityRegistry
.EntityBase memberReference = VisitMethodRef(context.methodRef()).Value;
2113
public GrammarResult.Sequence<(MethodSemanticsAttributes,
EntityRegistry
.EntityBase)> VisitEventDecls(CILParser.EventDeclsContext context)
2121
public GrammarResult.Literal<
EntityRegistry
.EventEntity> VisitEventHead(CILParser.EventHeadContext context)
2125
return new(new
EntityRegistry
.EventEntity(eventAttributes, VisitTypeSpec(context.typeSpec()).Value, name));
2151
public GrammarResult.Literal<(
EntityRegistry
.EntityBase? implementation, int typedefId, ImmutableArray<
EntityRegistry
.CustomAttributeEntity> attrs)> VisitExptypeDecls(CILParser.ExptypeDeclsContext context)
2157
EntityRegistry
.EntityBase? implementationEntity = null;
2159
var attrs = ImmutableArray.CreateBuilder<
EntityRegistry
.CustomAttributeEntity>();
2165
if (VisitCustomAttrDecl(attr).Value is
EntityRegistry
.CustomAttributeEntity customAttribute)
2174
if (entity is null or
EntityRegistry
.FakeTypeEntity)
2224
EntityRegistry
.EntityBase? ResolveBetterEntity(
EntityRegistry
.EntityBase? newImplementation)
2230
(_,
EntityRegistry
.FileEntity) => newImplementation,
2231
(
EntityRegistry
.FileEntity, _) => implementationEntity,
2232
(_,
EntityRegistry
.AssemblyEntity) => newImplementation,
2233
(
EntityRegistry
.AssemblyEntity, _) => implementationEntity,
2234
(_,
EntityRegistry
.TypeEntity) => newImplementation,
2235
(
EntityRegistry
.TypeEntity, _) => implementationEntity,
2241
EntityRegistry
.ExportedTypeEntity? ResolveExportedType(CILParser.SlashedNameContext slashedName)
2254
EntityRegistry
.ExportedTypeEntity? exportedType = null;
2284
public GrammarResult.Literal<
EntityRegistry
.TypeEntity?> VisitExtendsClause(CILParser.ExtendsClauseContext context)
2365
EntityRegistry
.SequencePoint.Hidden(ilOffset));
2370
new
EntityRegistry
.SequencePoint(ilOffset, startLine, startColumn, endLine, endColumn));
2456
var field =
EntityRegistry
.CreateUnrecordedFieldDefinition(fieldAttrs, _currentTypeDefinition.PeekOrDefault()!, name, signature.Builder);
2582
public GrammarResult.Literal<
EntityRegistry
.EntityBase> VisitFieldRef(CILParser.FieldRefContext context)
2598
EntityRegistry
.TypeEntity definingType = _currentTypeDefinition.PeekOrDefault() ?? _entityRegistry.ModuleType;
2692
public GrammarResult.Literal<
EntityRegistry
.FileEntity> VisitFileDecl(CILParser.FileDeclContext context)
2906
public GrammarResult.Sequence<
EntityRegistry
.InterfaceImplementationEntity> VisitImplClause(CILParser.ImplClauseContext context) => context.implList() is {} implList ? VisitImplList(implList) : new(ImmutableArray<
EntityRegistry
.InterfaceImplementationEntity>.Empty);
2909
public GrammarResult.Sequence<
EntityRegistry
.InterfaceImplementationEntity> VisitImplList(CILParser.ImplListContext context)
2911
var builder = ImmutableArray.CreateBuilder<
EntityRegistry
.InterfaceImplementationEntity>();
2914
builder.Add(
EntityRegistry
.CreateUnrecordedInterfaceImplementation(_currentTypeDefinition.PeekOrDefault()!, VisitTypeSpec(impl).Value));
2980
if (fieldRef is
EntityRegistry
.MemberReferenceEntity memberRef)
3017
if (methodRef is
EntityRegistry
.MemberReferenceEntity memberRef)
3454
public GrammarResult.Literal<(
EntityRegistry
.EntityBase? implementation, uint offset, ImmutableArray<
EntityRegistry
.CustomAttributeEntity> attributes)> VisitManifestResDecls(CILParser.ManifestResDeclsContext context)
3456
EntityRegistry
.EntityBase? implementation = null;
3458
var attributes = ImmutableArray.CreateBuilder<
EntityRegistry
.CustomAttributeEntity>();
3471
if (kind == ".file" && implementation is not
EntityRegistry
.AssemblyReferenceEntity)
3554
public GrammarResult.Literal<
EntityRegistry
.EntityBase> VisitMdtoken(CILParser.MdtokenContext context)
3560
public GrammarResult.Literal<
EntityRegistry
.EntityBase> VisitMemberRef(CILParser.MemberRefContext context)
3717
_currentTypeDefinition.PeekOrDefault()!.MethodImplementations.Add(
EntityRegistry
.CreateUnrecordedMethodImplementation(currentMethod.Definition, methodRef));
3729
EntityRegistry
.GenericParameterEntity? param = null;
3770
EntityRegistry
.GenericParameterEntity? param = null;
3802
EntityRegistry
.GenericParameterConstraintEntity? constraint = null;
3814
constraint =
EntityRegistry
.CreateGenericConstraint(baseType);
3885
public GrammarResult.Literal<
EntityRegistry
.MethodDefinitionEntity> VisitMethodHead(CILParser.MethodHeadContext context)
3889
var methodDefinition =
EntityRegistry
.CreateUnrecordedMethodDefinition(containingType, name);
3911
(
EntityRegistry
.ModuleReferenceEntity Module, string? EntryPoint, MethodImportAttributes Attributes)? pInvokeInformation = null;
3943
EntityRegistry
.GenericParameterEntity? param = typeParameters[i];
3960
methodDefinition.Parameters.Add(
EntityRegistry
.CreateParameter(returnValue.Attributes, returnValue.Name, returnValue.MarshallingDescriptor, 0));
3965
methodDefinition.Parameters.Add(
EntityRegistry
.CreateParameter(arg.Attributes, arg.Name, arg.MarshallingDescriptor, i + 1));
3973
if (!
EntityRegistry
.TryAddMethodDefinitionToContainingType(methodDefinition))
4003
public GrammarResult.Literal<
EntityRegistry
.EntityBase> VisitMethodRef(CILParser.MethodRefContext context)
4023
EntityRegistry
.TypeEntity owner = _currentTypeDefinition.PeekOrDefault() ?? _entityRegistry.ModuleType;
4418
public GrammarResult.Literal<
EntityRegistry
.EntityBase> VisitOwnerType(CILParser.OwnerTypeContext context)
4525
public GrammarResult.Literal<(MethodSemanticsAttributes,
EntityRegistry
.EntityBase)?> VisitPropDecl(CILParser.PropDeclContext context)
4532
EntityRegistry
.EntityBase memberReference = VisitMethodRef(context.methodRef()).Value;
4544
public GrammarResult.Sequence<(MethodSemanticsAttributes,
EntityRegistry
.EntityBase)> VisitPropDecls(CILParser.PropDeclsContext context)
4552
public GrammarResult.Literal<
EntityRegistry
.PropertyEntity> VisitPropHead(CILParser.PropHeadContext context)
4570
var property = new
EntityRegistry
.PropertyEntity(propAttrs, signature, name);
4621
if (context.typeSpec() is CILParser.TypeSpecContext typeSpec && VisitTypeSpec(typeSpec).Value is
EntityRegistry
.IHasReflectionNotation reflectionNotation)
4651
public GrammarResult.Literal<
EntityRegistry
.DeclarativeSecurityAttributeEntity?> VisitSecDecl(CILParser.SecDeclContext context)
4686
internal sealed record Catch(
EntityRegistry
.TypeEntity Type, LabelHandle Start, LabelHandle End) : ExceptionClause(Start, End);
4799
blob.WriteSerializedString((VisitClassName(context.className()).Value as
EntityRegistry
.IHasReflectionNotation)?.ReflectionNotation ?? "");
4830
blob.WriteSerializedString(VisitClassName(className).Value is
EntityRegistry
.IHasReflectionNotation reflection ? reflection.ReflectionNotation : string.Empty);
5001
public GrammarResult.Sequence<
EntityRegistry
.GenericParameterConstraintEntity> VisitTyBound(CILParser.TyBoundContext? context)
5006
return new(ImmutableArray<
EntityRegistry
.GenericParameterConstraintEntity>.Empty);
5011
.Select(
EntityRegistry
.CreateGenericConstraint)
5017
public GrammarResult.Literal<
EntityRegistry
.GenericParameterEntity> VisitTypar(CILParser.TyparContext context)
5020
EntityRegistry
.GenericParameterEntity genericParameter =
EntityRegistry
.CreateGenericParameter(attributes, VisitDottedName(context.dottedName()).Value);
5054
public GrammarResult.Sequence<
EntityRegistry
.GenericParameterEntity> VisitTypars(CILParser.TyparsContext context)
5057
ImmutableArray<
EntityRegistry
.GenericParameterEntity>.Builder builder = ImmutableArray.CreateBuilder<
EntityRegistry
.GenericParameterEntity>(typeParameters.Length);
5067
public GrammarResult.Sequence<
EntityRegistry
.GenericParameterEntity> VisitTyparsClause(CILParser.TyparsClauseContext context) => context.typars() is null ? new(ImmutableArray<
EntityRegistry
.GenericParameterEntity>.Empty) : VisitTypars(context.typars());
5225
private
EntityRegistry
.TypeEntity? TryResolveTypedefAsType(string alias)
5260
private
EntityRegistry
.EntityBase? TryResolveTypedefAsMember(string alias)
5272
private (
EntityRegistry
.EntityBase Constructor, BlobBuilder Value)? TryResolveTypedefAsCustomAttribute(string alias)
5294
public GrammarResult.Sequence<
EntityRegistry
.TypeEntity> VisitTypeList(CILParser.TypeListContext context)
5297
ImmutableArray<
EntityRegistry
.TypeEntity>.Builder builder = ImmutableArray.CreateBuilder<
EntityRegistry
.TypeEntity>(bounds.Length);
5306
public GrammarResult.Literal<
EntityRegistry
.TypeEntity> VisitTypeSpec(CILParser.TypeSpecContext context)
5317
EntityRegistry
.ModuleReferenceEntity? module = _entityRegistry.FindModuleReference(nameToResolve);
5321
return new(new
EntityRegistry
.FakeTypeEntity(MetadataTokens.ModuleReferenceHandle(0)));
5323
return new(new
EntityRegistry
.FakeTypeEntity(module.Handle));
5327
return new(new
EntityRegistry
.FakeTypeEntity(