private static string FormatClosureDescription([NotNull] JetHashSet <IDeclaredElement> elements) { int parameters = 0, vars = 0; var hasThis = false; foreach (var element in elements) { if (element is IParameter || element is IQueryAnonymousTypeProperty) { parameters++; } else if (element is ILocalVariable) { vars++; } else if (element is IFunction) { hasThis = true; } } var buf = new StringBuilder(); if (parameters > 0) { buf.Append(FormatOrderedByStartOffset(elements.Where(element => element is IParameter || element is IQueryAnonymousTypeProperty))) .Append(' ') .Append(NounUtil.ToPluralOrSingular("parameter", parameters)); } if (vars > 0) { if (parameters > 0) { buf.Append(hasThis ? ", " : " and "); } buf.Append(FormatOrderedByStartOffset( elements.Where(element => element is ILocalVariable))) .Append(' ') .Append(NounUtil.ToPluralOrSingular("variable", vars)); } if (hasThis) { if (parameters > 0 || vars > 0) { buf.Append(" and "); } buf.Append("'this' reference"); } return(buf.ToString()); }
public void ReanalyzeDirtyFiles() { lock (_lock) { foreach (var file in _dirtyFiles.Where(x => x.IsValid())) { using (_shellLocks.UsingReadLock()) { ICache cache = this; cache.Merge(file, cache.Build(file, false)); } } _dirtyFiles.Clear(); } }