internal override DiagnosticInfo GetResolvedInfo() { if (lazyActualObsoleteDiagnostic == null) { // A symbol's Obsoleteness may not have been calculated yet if the symbol is coming // from a different compilation's source. In that case, force completion of attributes. symbol.ForceCompleteObsoleteAttribute(); if (symbol.ObsoleteState == ThreeState.True) { var inObsoleteContext = ObsoleteAttributeHelpers.GetObsoleteContextState(containingSymbol, forceComplete: true); Debug.Assert(inObsoleteContext != ThreeState.Unknown); if (inObsoleteContext == ThreeState.False) { DiagnosticInfo info = ObsoleteAttributeHelpers.CreateObsoleteDiagnostic(symbol, binderFlags); if (info != null) { Interlocked.CompareExchange(ref this.lazyActualObsoleteDiagnostic, info, null); return(lazyActualObsoleteDiagnostic); } } } // If this symbol is not obsolete or is in an obsolete context, we don't want to report any diagnostics. // Therefore make this a Void diagnostic. Interlocked.CompareExchange(ref this.lazyActualObsoleteDiagnostic, CSDiagnosticInfo.VoidDiagnosticInfo, null); } return(lazyActualObsoleteDiagnostic); }
internal override DiagnosticInfo GetResolvedInfo() { if (_lazyActualObsoleteDiagnostic == null) { // A symbol's Obsoleteness may not have been calculated yet if the symbol is coming // from a different compilation's source. In that case, force completion of attributes. _symbol.ForceCompleteObsoleteAttribute(); var kind = ObsoleteAttributeHelpers.GetObsoleteDiagnosticKind(_symbol, _containingSymbol, forceComplete: true); Debug.Assert(kind != ObsoleteDiagnosticKind.Lazy); Debug.Assert(kind != ObsoleteDiagnosticKind.LazyPotentiallySuppressed); var info = (kind == ObsoleteDiagnosticKind.Diagnostic) ? ObsoleteAttributeHelpers.CreateObsoleteDiagnostic(_symbol, _binderFlags) : null; // If this symbol is not obsolete or is in an obsolete context, we don't want to report any diagnostics. // Therefore make this a Void diagnostic. Interlocked.CompareExchange(ref _lazyActualObsoleteDiagnostic, info ?? CSDiagnosticInfo.VoidDiagnosticInfo, null); } return(_lazyActualObsoleteDiagnostic); }