ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Impl/Tree/FSharpCachedDeclarationBase.cs (25 lines of code) (raw):
using JetBrains.Diagnostics;
using JetBrains.ReSharper.Psi;
using JetBrains.ReSharper.Psi.ExtensionsAPI.Caches2;
namespace JetBrains.ReSharper.Plugins.FSharp.Psi.Impl.Tree
{
internal abstract class FSharpCachedDeclarationBase : FSharpTypeMemberDeclarationBase, ICachedDeclaration2
{
protected override void PreInit()
{
base.PreInit();
CacheDeclaredElement = null;
}
public override IDeclaredElement DeclaredElement
{
get
{
Assertion.Assert(IsValid(), "Getting declared element from invalid declaration");
Assertion.Assert(CacheDeclaredElement == null || CacheDeclaredElement.IsValid(),
"myCacheDeclaredElement == null || myCacheDeclaredElement.IsValid()");
return CacheDeclaredElement;
}
}
public IDeclaredElement CacheDeclaredElement { get; set; }
}
}