| File: Microsoft\CSharp\RuntimeBinder\Semantics\Types\PointerType.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.CSharp\src\Microsoft.CSharp.csproj (Microsoft.CSharp) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; namespace Microsoft.CSharp.RuntimeBinder.Semantics { internal sealed class PointerType : CType { public PointerType(CType referentType) : base(TypeKind.TK_PointerType) { ReferentType = referentType; } public CType ReferentType { get; } public override bool IsUnsafe() => true; public override Type AssociatedSystemType { [RequiresUnreferencedCode(Binder.TrimmerWarning)] get => ReferentType.AssociatedSystemType.MakePointerType(); } public override CType BaseOrParameterOrElementType => ReferentType; public override FUNDTYPE FundamentalType => FUNDTYPE.FT_PTR; [ExcludeFromCodeCoverage(Justification = "Dynamic code can't contain constant pointers")] public override ConstValKind ConstValKind { get { Debug.Fail("Constant of pointer in dynamic code?"); return ConstValKind.IntPtr; } } } }