private TypeParameterConstraintClause GetTypeParameterConstraintClause(int ordinal) { if (_lazyTypeParameterConstraintsAndDiagnostics == null) { var diagnostics = DiagnosticBag.GetInstance(); var constraints = MakeTypeParameterConstraints(diagnostics); var value = new TypeParameterConstraintsAndDiagnostics(constraints, diagnostics.ToReadOnlyAndFree()); Interlocked.CompareExchange(ref _lazyTypeParameterConstraintsAndDiagnostics, value, null); } var clauses = _lazyTypeParameterConstraintsAndDiagnostics.ConstraintClauses; return((clauses.Length > 0) ? clauses[ordinal] : null); }
private TypeParameterConstraintClause GetTypeParameterConstraintClause(int ordinal) { if (_lazyTypeParameterConstraintsAndDiagnostics == null) { var diagnostics = DiagnosticBag.GetInstance(); var constraints = MakeTypeParameterConstraints(diagnostics); var value = new TypeParameterConstraintsAndDiagnostics(constraints, diagnostics.ToReadOnlyAndFree()); Interlocked.CompareExchange(ref _lazyTypeParameterConstraintsAndDiagnostics, value, null); } var clauses = _lazyTypeParameterConstraintsAndDiagnostics.ConstraintClauses; return (clauses.Length > 0) ? clauses[ordinal] : null; }