提交 c65f9cc0 编写于 作者: J Jared Parsons 提交者: GitHub

Merge pull request #15774 from jaredpar/fix-15771

Remove EmitContext from ITypeReference.TypeCode
......@@ -49,7 +49,7 @@ void Cci.IReference.Dispatch(Cci.MetadataVisitor visitor)
bool Cci.ITypeReference.IsValueType => false;
TypeDefinitionHandle Cci.ITypeReference.TypeDef => default(TypeDefinitionHandle);
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context) => Cci.PrimitiveTypeCode.NotPrimitive;
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode => Cci.PrimitiveTypeCode.NotPrimitive;
Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context) => null;
Cci.IGenericMethodParameterReference Cci.ITypeReference.AsGenericMethodParameterReference => null;
......
......@@ -29,9 +29,9 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return null;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.NotPrimitive;
get { return Cci.PrimitiveTypeCode.NotPrimitive; }
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -65,9 +65,12 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return null;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.NotPrimitive;
get
{
return Cci.PrimitiveTypeCode.NotPrimitive;
}
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -43,16 +43,19 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return AsTypeDefinitionImpl(moduleBeingBuilt);
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
Debug.Assert(this.IsDefinitionOrDistinct());
if (this.IsDefinition)
get
{
return this.PrimitiveTypeCode;
}
Debug.Assert(this.IsDefinitionOrDistinct());
return Cci.PrimitiveTypeCode.NotPrimitive;
if (this.IsDefinition)
{
return this.PrimitiveTypeCode;
}
return Cci.PrimitiveTypeCode.NotPrimitive;
}
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -38,9 +38,9 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return null;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.Pointer;
get { return Cci.PrimitiveTypeCode.Pointer; }
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -34,9 +34,9 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return null;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.NotPrimitive;
get { return Cci.PrimitiveTypeCode.NotPrimitive; }
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -531,7 +531,7 @@ public virtual IEnumerable<Cci.ICustomAttribute> GetAttributes(EmitContext conte
public Cci.ITypeDefinition GetResolvedType(EmitContext context) => this;
public Cci.PrimitiveTypeCode TypeCode(EmitContext context) => Cci.PrimitiveTypeCode.NotPrimitive;
public Cci.PrimitiveTypeCode TypeCode => Cci.PrimitiveTypeCode.NotPrimitive;
public TypeDefinitionHandle TypeDef
{
......
......@@ -72,9 +72,12 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return null;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.NotPrimitive;
get
{
return Cci.PrimitiveTypeCode.NotPrimitive;
}
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -567,9 +567,12 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return this;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.NotPrimitive;
get
{
return Cci.PrimitiveTypeCode.NotPrimitive;
}
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -126,9 +126,12 @@ Cci.ITypeDefinition Cci.ITypeReference.GetResolvedType(EmitContext context)
return null;
}
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode(EmitContext context)
Cci.PrimitiveTypeCode Cci.ITypeReference.TypeCode
{
return Cci.PrimitiveTypeCode.NotPrimitive;
get
{
return Cci.PrimitiveTypeCode.NotPrimitive;
}
}
TypeDefinitionHandle Cci.ITypeReference.TypeDef
......
......@@ -232,9 +232,9 @@ public ITypeDefinition GetResolvedType(EmitContext context)
throw ExceptionUtilities.Unreachable;
}
public PrimitiveTypeCode TypeCode(EmitContext context)
public PrimitiveTypeCode TypeCode
{
return PrimitiveTypeCode.NotPrimitive;
get { return PrimitiveTypeCode.NotPrimitive; }
}
#endregion
......
......@@ -159,7 +159,7 @@ private BlobHandle SerializeLocalConstantSignature(ILocalDefinition localConstan
SerializeCustomModifiers(encoder, localConstant.CustomModifiers);
var type = localConstant.Type;
var typeCode = type.TypeCode(Context);
var typeCode = type.TypeCode;
object value = localConstant.CompileTimeValue.Value;
......
......@@ -1235,7 +1235,7 @@ public static ParameterAttributes GetParameterAttributes(IParameterDefinition pa
internal PrimitiveTypeCode GetConstantTypeCode(ILocalDefinition constant)
{
return constant.CompileTimeValue.Type.TypeCode(Context);
return constant.CompileTimeValue.Type.TypeCode;
}
private BlobHandle GetPermissionSetBlobHandle(ImmutableArray<ICustomAttribute> permissionSet)
......@@ -3635,7 +3635,7 @@ private void SerializeTypeReference(SignatureTypeEncoder encoder, ITypeReference
// TYPEDREF is only allowed in RetType, Param, LocalVarSig signatures
Debug.Assert(!module.IsPlatformType(typeReference, PlatformType.SystemTypedReference));
var modifiedTypeReference = typeReference as IModifiedTypeReference;
if (modifiedTypeReference != null)
{
......@@ -3644,7 +3644,7 @@ private void SerializeTypeReference(SignatureTypeEncoder encoder, ITypeReference
continue;
}
var primitiveType = typeReference.TypeCode(Context);
var primitiveType = typeReference.TypeCode;
if (primitiveType != PrimitiveTypeCode.Pointer && primitiveType != PrimitiveTypeCode.NotPrimitive)
{
SerializePrimitiveType(encoder, primitiveType);
......@@ -3836,7 +3836,7 @@ private void SerializeCustomAttributeElementType(CustomAttributeElementTypeEncod
// ELEMENT_TYPE_U4, ELEMENT_TYPE_I8, ELEMENT_TYPE_U8, ELEMENT_TYPE_R4, ELEMENT_TYPE_R8, ELEMENT_TYPE_STRING.
// An enum is specified as a single byte 0x55 followed by a SerString.
var primitiveType = typeReference.TypeCode(Context);
var primitiveType = typeReference.TypeCode;
if (primitiveType != PrimitiveTypeCode.NotPrimitive)
{
SerializePrimitiveType(encoder, primitiveType);
......
......@@ -55,9 +55,9 @@ ITypeDefinition ITypeReference.GetResolvedType(EmitContext context)
throw ExceptionUtilities.Unreachable;
}
PrimitiveTypeCode ITypeReference.TypeCode(EmitContext context)
PrimitiveTypeCode ITypeReference.TypeCode
{
return PrimitiveTypeCode.NotPrimitive;
get { return PrimitiveTypeCode.NotPrimitive; }
}
TypeDefinitionHandle ITypeReference.TypeDef
......
......@@ -182,7 +182,7 @@ public override void Visit(IModuleReference moduleReference)
public override void Visit(INamespaceTypeReference namespaceTypeReference)
{
if (!this.typeReferenceNeedsToken && namespaceTypeReference.TypeCode(Context) != PrimitiveTypeCode.NotPrimitive)
if (!this.typeReferenceNeedsToken && namespaceTypeReference.TypeCode != PrimitiveTypeCode.NotPrimitive)
{
return;
}
......@@ -416,7 +416,7 @@ private bool VisitTypeReference(ITypeReference typeReference)
INestedTypeReference/*?*/ nestedTypeReference = typeReference.AsNestedTypeReference;
if (this.typeReferenceNeedsToken || nestedTypeReference != null ||
(typeReference.TypeCode(Context) == PrimitiveTypeCode.NotPrimitive && typeReference.AsNamespaceTypeReference != null))
(typeReference.TypeCode == PrimitiveTypeCode.NotPrimitive && typeReference.AsNamespaceTypeReference != null))
{
ISpecializedNestedTypeReference/*?*/ specializedNestedTypeReference = nestedTypeReference?.AsSpecializedNestedTypeReference;
if (specializedNestedTypeReference != null)
......
......@@ -202,9 +202,9 @@ ITypeDefinition ITypeReference.GetResolvedType(EmitContext context)
return this;
}
PrimitiveTypeCode ITypeReference.TypeCode(EmitContext context)
PrimitiveTypeCode ITypeReference.TypeCode
{
throw ExceptionUtilities.Unreachable;
get { throw ExceptionUtilities.Unreachable; }
}
ushort INamedTypeReference.GenericParameterCount
......
......@@ -605,7 +605,7 @@ internal interface ITypeReference : IReference
/// Unless the value of TypeCode is PrimitiveTypeCode.NotPrimitive, the type corresponds to a "primitive" CLR type (such as System.Int32) and
/// the type code identifies which of the primitive types it corresponds to.
/// </summary>
PrimitiveTypeCode TypeCode(EmitContext context);
PrimitiveTypeCode TypeCode { get; }
/// <summary>
/// TypeDefs defined in modules linked to the assembly being emitted are listed in the ExportedTypes table.
......
......@@ -61,9 +61,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
Return Nothing
End Function
Private Function ITypeReferenceTypeCode(context As EmitContext) As Cci.PrimitiveTypeCode Implements Cci.ITypeReference.TypeCode
Return Cci.PrimitiveTypeCode.NotPrimitive
End Function
Private ReadOnly Property ITypeReferenceTypeCode As Cci.PrimitiveTypeCode Implements Cci.ITypeReference.TypeCode
Get
Return Cci.PrimitiveTypeCode.NotPrimitive
End Get
End Property
Private ReadOnly Property ITypeReferenceTypeDef As TypeDefinitionHandle Implements Cci.ITypeReference.TypeDef
Get
......
......@@ -51,9 +51,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit
Return Nothing
End Function
Private Function ITypeReferenceTypeCode(context As EmitContext) As Cci.PrimitiveTypeCode Implements Cci.ITypeReference.TypeCode
Return Cci.PrimitiveTypeCode.NotPrimitive
End Function
Private ReadOnly Property ITypeReferenceTypeCode As Cci.PrimitiveTypeCode Implements Cci.ITypeReference.TypeCode
Get
Return Cci.PrimitiveTypeCode.NotPrimitive
End Get
End Property
Private ReadOnly Property ITypeReferenceTypeDef As TypeDefinitionHandle Implements Cci.ITypeReference.TypeDef
Get
......
......@@ -42,14 +42,16 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
Return AsTypeDefinitionImpl(moduleBeingBuilt)
End Function
Private Function ITypeReferenceTypeCode(context As EmitContext) As Cci.PrimitiveTypeCode Implements ITypeReference.TypeCode
Debug.Assert(Not Me.IsAnonymousType)
Debug.Assert(Me.IsDefinitionOrDistinct())
If Me.IsDefinition Then
Return Me.PrimitiveTypeCode
End If
Return Cci.PrimitiveTypeCode.NotPrimitive
End Function
Private ReadOnly Property ITypeReferenceTypeCode As Cci.PrimitiveTypeCode Implements ITypeReference.TypeCode
Get
Debug.Assert(Not Me.IsAnonymousType)
Debug.Assert(Me.IsDefinitionOrDistinct())
If Me.IsDefinition Then
Return Me.PrimitiveTypeCode
End If
Return Cci.PrimitiveTypeCode.NotPrimitive
End Get
End Property
Private ReadOnly Property ITypeReferenceTypeDef As TypeDefinitionHandle Implements ITypeReference.TypeDef
Get
......
......@@ -32,9 +32,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
Return Nothing
End Function
Private Function ITypeReferenceTypeCode(context As EmitContext) As Cci.PrimitiveTypeCode Implements ITypeReference.TypeCode
Return Cci.PrimitiveTypeCode.NotPrimitive
End Function
Private ReadOnly Property ITypeReferenceTypeCode As Cci.PrimitiveTypeCode Implements ITypeReference.TypeCode
Get
Return Cci.PrimitiveTypeCode.NotPrimitive
End Get
End Property
Private ReadOnly Property ITypeReferenceTypeDef As TypeDefinitionHandle Implements ITypeReference.TypeDef
Get
......
......@@ -113,6 +113,6 @@ internal NamespaceTypeDefinitionNoBase(INamespaceTypeDefinition underlyingType)
IEnumerable<TypeReferenceWithAttributes> ITypeDefinition.Interfaces(EmitContext context) => UnderlyingType.Interfaces(context);
Cci.PrimitiveTypeCode ITypeReference.TypeCode(EmitContext context) => UnderlyingType.TypeCode(context);
Cci.PrimitiveTypeCode ITypeReference.TypeCode => UnderlyingType.TypeCode;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册