public IEnumerable <ITagSpan <IErrorTag> > GetTags(NormalizedSnapshotSpanCollection spans) { var span = spans[0]; var line = span.Start.GetContainingLine(); var classificationSpans = _classifier.GetClassificationSpans(line.Extent); string property = null; ClearError(line); foreach (var cspan in classificationSpans) { if (cspan.ClassificationType.IsOfType(PredefinedClassificationTypeNames.SymbolDefinition)) { property = cspan.Span.GetText(); } else if (cspan.ClassificationType.IsOfType(PredefinedClassificationTypeNames.Literal)) { if (string.IsNullOrEmpty(property)) { continue; } CompletionItem item = CompletionItem.GetCompletionItem(property); if (item == null) { continue; } string value = cspan.Span.GetText(); int intValue; if (!item.Values.Contains(value) && !int.TryParse(value, out intValue)) { yield return(CreateError(line, cspan, "\"" + value + "\" is not a valid value for the '" + property + "' property")); } } } }