void TrySetResult(SemanticModelResult result) { // Der Puffer wurde zwischenzeitlich schon wieder geändert. Dieses Ergebnis brauchen wir nicht, // da bereits ein neues berechnet wird. if (TextBuffer.CurrentSnapshot != result.Snapshot) { if (!WaitingForAnalysis) { // Dieser Fall sollte eigentlich nicht eintreten, denn es muss bereits eine neue Analyse angetriggert worden sein Invalidate(); } return; } _semanticModelResult = result; OnSemanticModelChanged(new SnapshotSpanEventArgs(result.Snapshot.ToSnapshotSpan())); }
void TrySetResult(SemanticModelResult result) { // Dieser Fall kann eintreten, da wir im Ctor "blind" ein Invalidate aufrufen. Möglicherweise gibt es aber noch kein ParseResult, // welches aber noch folgen wird und im Zuge eines OnParseResultChanging abgerbeitet wird. if(result == null) { return; } // Der Puffer wurde zwischenzeitlich schon wieder geändert. Dieses Ergebnis brauchen wir nicht, // da bereits ein neues berechnet wird. if (TextBuffer.CurrentSnapshot != result.Snapshot) { if (!WaitingForAnalysis) { // Dieser Fall sollte eigentlich nicht eintreten, denn es muss bereits eine neue Analyse angetriggert worden sein Invalidate(); } return; } _semanticModelResult = result; OnSemanticModelChanged(new SnapshotSpanEventArgs(result.Snapshot.GetFullSpan())); }