internal bool CalculateUseSiteDiagnostic(ref UseSiteInfo <AssemblySymbol> result) { Debug.Assert(IsDefinition); // Check type, custom modifiers if (DeriveUseSiteInfoFromType(ref result, this.TypeWithAnnotations, AllowedRequiredModifierType.System_Runtime_CompilerServices_Volatile)) { return(true); } // If the member is in an assembly with unified references, // we check if its definition depends on a type from a unified reference. if (this.ContainingModule.HasUnifiedReferences) { HashSet <TypeSymbol> unificationCheckedTypes = null; DiagnosticInfo diagnosticInfo = result.DiagnosticInfo; if (this.TypeWithAnnotations.GetUnificationUseSiteDiagnosticRecursive(ref diagnosticInfo, this, ref unificationCheckedTypes)) { result = result.AdjustDiagnosticInfo(diagnosticInfo); return(true); } result = result.AdjustDiagnosticInfo(diagnosticInfo); } return(false); }
internal sealed override UseSiteInfo <AssemblySymbol> GetUseSiteInfo() { var type = this.TypeWithAnnotations; UseSiteInfo <AssemblySymbol> result = default; if (!DeriveUseSiteInfoFromType(ref result, type, AllowedRequiredModifierType.None) && this.ContainingModule.HasUnifiedReferences) { // If the member is in an assembly with unified references, // we check if its definition depends on a type from a unified reference. HashSet <TypeSymbol> unificationCheckedTypes = null; var diagnosticInfo = result.DiagnosticInfo; type.GetUnificationUseSiteDiagnosticRecursive(ref diagnosticInfo, this, ref unificationCheckedTypes); result = result.AdjustDiagnosticInfo(diagnosticInfo); } return(result); }
private BoundExpression MakeTupleFieldAccessAndReportUseSiteDiagnostics(BoundExpression tuple, SyntaxNode syntax, FieldSymbol field) { // Use default field rather than implicitly named fields since // fields from inferred names are not usable in C# 7.0. field = field.CorrespondingTupleField ?? field; UseSiteInfo <AssemblySymbol> useSiteInfo = field.GetUseSiteInfo(); if (useSiteInfo.DiagnosticInfo?.Severity != DiagnosticSeverity.Error) { useSiteInfo = useSiteInfo.AdjustDiagnosticInfo(null); } _diagnostics.Add(useSiteInfo, syntax.Location); return(MakeTupleFieldAccess(syntax, field, tuple)); }