| File: Emitter\Model\MethodReference.cs | Web Access |
| Project: src\roslyn\src\Compilers\CSharp\Portable\Microsoft.CodeAnalysis.CSharp.csproj (Microsoft.CodeAnalysis.CSharp) |
// 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.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.Emit; namespace Microsoft.CodeAnalysis.CSharp.Emit { internal abstract class MethodReference : TypeMemberReference, Cci.IMethodReference { protected readonly MethodSymbol UnderlyingMethod; public MethodReference(MethodSymbol underlyingMethod) { Debug.Assert((object)underlyingMethod != null); this.UnderlyingMethod = underlyingMethod; } protected override Symbol UnderlyingSymbol { get { return UnderlyingMethod; } } bool Cci.IMethodReference.AcceptsExtraArguments { get { return UnderlyingMethod.IsVararg; } } ushort Cci.IMethodReference.GenericParameterCount { get { return (ushort)UnderlyingMethod.Arity; } } ushort Cci.ISignature.ParameterCount { get { return (ushort)UnderlyingMethod.ParameterCount; } } Cci.IMethodDefinition Cci.IMethodReference.GetResolvedMethod(EmitContext context) { return null; } ImmutableArray<Cci.IParameterTypeInformation> Cci.IMethodReference.ExtraParameters { get { return ImmutableArray<Cci.IParameterTypeInformation>.Empty; } } Cci.CallingConvention Cci.ISignature.CallingConvention { get { return UnderlyingMethod.CallingConvention; } } ImmutableArray<Cci.IParameterTypeInformation> Cci.ISignature.GetParameters(EmitContext context) { PEModuleBuilder moduleBeingBuilt = (PEModuleBuilder)context.Module; return moduleBeingBuilt.Translate(UnderlyingMethod.Parameters); } ImmutableArray<Cci.ICustomModifier> Cci.ISignature.ReturnValueCustomModifiers { get { return ImmutableArray<Cci.ICustomModifier>.CastUp(UnderlyingMethod.ReturnTypeWithAnnotations.CustomModifiers); } } ImmutableArray<Cci.ICustomModifier> Cci.ISignature.RefCustomModifiers { get { return ImmutableArray<Cci.ICustomModifier>.CastUp(UnderlyingMethod.RefCustomModifiers); } } bool Cci.ISignature.ReturnValueIsByRef { get { return UnderlyingMethod.RefKind.IsManagedReference(); } } Cci.ITypeReference Cci.ISignature.GetType(EmitContext context) { return ((PEModuleBuilder)context.Module).Translate(UnderlyingMethod.ReturnType, syntaxNodeOpt: (CSharpSyntaxNode)context.SyntaxNode, diagnostics: context.Diagnostics); } public virtual Cci.IGenericMethodInstanceReference AsGenericMethodInstanceReference { get { return null; } } public virtual Cci.ISpecializedMethodReference AsSpecializedMethodReference { get { return null; } } } }