public static string FormatIncludingContext([CanBeNull] IDeclaredElement element)
        {
            if (element == null)
            {
                return("NULL");
            }

            var result = element.GetType().Name + " '" + element.ShortName + "'";

            if (element is IClrDeclaredElement clrDeclaredElement)
            {
                var containingType     = clrDeclaredElement.GetContainingType();
                var containingTypeName = containingType == null ? "NULL" : containingType.GetClrName().FullName;
                result += " in " + containingTypeName;

                if (clrDeclaredElement is IParameter) // executing GetContainingTypeMember() on e.g. TypeParameters throws in R# 8.2
                {
                    var containingTypeMember = clrDeclaredElement.GetContainingTypeMember();
                    if (containingTypeMember != null)
                    {
                        result += "." + containingTypeMember.ShortName + "()";
                    }
                }
            }

            return(result);
        }
        private static IName FallbackHandler(IDeclaredElement element, ISubstitution substitution)
        {
            var typeName    = element.GetType().FullName;
            var elementName = element.ShortName;
            var id          = string.Format("UnknownDeclaredElement: {0}, '{1}', {2}", typeName, elementName, substitution);

            return(Names.General(id));
        }
 public UnexpectedReferenceTypeException(IDeclaredElement declaredElement, ReferenceExpressionEater eater, ICSharpTreeNode node)
     : base(string.Format("Unexpected reference declared type. Expected field, property, event, constant, variable or class, but was [{0}]", declaredElement.GetType()), eater, node)
 {
     DeclaredElement = declaredElement;
 }
        private IModule GetModule(IDeclaredElement declaredElement)
        {
#if RESHARPER_31 || RESHARPER_40 || RESHARPER_41
            return declaredElement.Module;
#elif RESHARPER_60_OR_NEWER
            var sourceFiles = declaredElement.GetSourceFiles();
            IPsiModule psiModule;
            if (sourceFiles.Count == 0)
            {
                // HACK: there must be a better way of doing this
                var propertyInfo = declaredElement.GetType().GetProperty("Module");
                psiModule = (IPsiModule)propertyInfo.GetValue(declaredElement, null);
            }
            else
            {
                psiModule = sourceFiles[0].GetPsiModule();
            }
            return psiModule.ContainingProjectModule;
#else
            return declaredElement.Module.ContainingProjectModule;
#endif
        }
 public UnexpectedReferenceTypeException(IDeclaredElement declaredElement, ReferenceExpressionEater eater, ICSharpTreeNode node)
     : base(string.Format("Unexpected reference declared type. Expected field, property, event, constant, variable or class, but was [{0}]", declaredElement.GetType()), eater, node)
 {
     DeclaredElement = declaredElement;
 }