352 references to Ref
GenerateDocumentationAndConfigFiles (13)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
500method.Parameters[0].RefKind == RefKind.Ref && 501method.Parameters[1].RefKind != RefKind.Ref && 512method.Parameters[0].RefKind == RefKind.Ref && 513method.Parameters[1].RefKind != RefKind.Ref && 514method.Parameters[2].RefKind != RefKind.Ref &&
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationMethodSymbol.cs (1)
81return RefKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationPropertySymbol.cs (1)
72public bool ReturnsByRef => refKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (1)
113=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef }
ILLink.RoslynAnalyzer (4)
IOperationExtensions.cs (3)
146case RefKind.Ref: 158RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 195case RefKind.Ref:
TrimAnalysis\ParameterProxy.cs (1)
29case RefKind.Ref: return ReferenceKind.Ref;
Microsoft.CodeAnalysis (4)
Emit\EditAndContinue\DefinitionMap.cs (1)
529if (p.RefKind == RefKind.Ref &&
Symbols\RefKind.cs (3)
57case RefKind.Ref: return "ref"; 69case RefKind.Ref: return "ref"; 80case RefKind.Ref: return "ref ";
Microsoft.CodeAnalysis.Analyzers (13)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
500method.Parameters[0].RefKind == RefKind.Ref && 501method.Parameters[1].RefKind != RefKind.Ref && 512method.Parameters[0].RefKind == RefKind.Ref && 513method.Parameters[1].RefKind != RefKind.Ref && 514method.Parameters[2].RefKind != RefKind.Ref &&
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationMethodSymbol.cs (1)
81return RefKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationPropertySymbol.cs (1)
72public bool ReturnsByRef => refKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (1)
113=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef }
Microsoft.CodeAnalysis.AnalyzerUtilities (24)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
500method.Parameters[0].RefKind == RefKind.Ref && 501method.Parameters[1].RefKind != RefKind.Ref && 512method.Parameters[0].RefKind == RefKind.Ref && 513method.Parameters[1].RefKind != RefKind.Ref && 514method.Parameters[2].RefKind != RefKind.Ref &&
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\CopyAnalysis\CopyAnalysis.CopyDataFlowOperationVisitor.cs (1)
319Debug.Assert(operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (2)
190Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 368if (operation.Parameter?.RefKind is RefKind.Out or RefKind.Ref)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (5)
252if (parameter.RefKind is RefKind.Ref or RefKind.Out) 289Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 307if ((operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out) && 319else if (operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out) 321if (operation.Parameter.RefKind == RefKind.Ref)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\TaintedDataAnalysis.TaintedDataOperationVisitor.cs (1)
759|| a.Parameter.RefKind == RefKind.Ref
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AbstractLocationDataFlowOperationVisitor.cs (2)
69Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 75if (operation.Parameter.RefKind == RefKind.Ref)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityDataFlowOperationVisitor.cs (2)
66Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 82Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (1)
3120if (operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
Microsoft.CodeAnalysis.CodeStyle (7)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (1)
689if (member is IFieldSymbol { RefKind: RefKind.Ref })
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
567case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
Microsoft.CodeAnalysis.CodeStyle.Fixes (4)
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (1)
252return RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationMethodSymbol.cs (1)
81return RefKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationPropertySymbol.cs (1)
72public bool ReturnsByRef => refKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (1)
113=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef }
Microsoft.CodeAnalysis.CSharp (175)
Binder\Binder.ValueChecks.cs (12)
638var useSetAccessor = coreValueKind == BindValueKind.Assignable && indexerAccess.Indexer.RefKind != RefKind.Ref; 1641case RefKind.Ref: 1666case RefKind.Ref: 1689case RefKind.Ref: 2769if (getArgument.RefKind == RefKind.Ref) 2775if (setArgument.RefKind == RefKind.Ref) 2824if (refKind == RefKind.Ref && mixableArguments is not null) 2963return parameter.RefKind == RefKind.Ref && 3414return RefKind.Ref; 5729resultRefKind = elementAccess.GetItemOrSliceHelper is WellKnownMember.System_ReadOnlySpan_T__get_Item ? RefKind.In : RefKind.Ref; 5739parameterRefKind = elementAccess.GetItemOrSliceHelper is WellKnownMember.System_ReadOnlySpan_T__Slice_Int_Int ? RefKind.In : RefKind.Ref; 5784RefKind parameterRefKind = resultType.OriginalDefinition.Equals(_compilation.GetWellKnownType(WellKnownType.System_ReadOnlySpan_T), TypeCompareKind.AllIgnoreOptions) ? RefKind.In : RefKind.Ref;
Binder\Binder_Crefs.cs (1)
1137if (refKind == RefKind.Ref && parameter.ReadOnlyKeyword.IsKind(SyntaxKind.ReadOnlyKeyword))
Binder\Binder_Expressions.cs (3)
4001if (argRefKind == RefKind.Ref) 5120if (analyzedArguments.RefKind(i) is (RefKind.Ref or RefKind.Out)) 5893bool isRef = refKind == RefKind.Ref;
Binder\Binder_Invocation.cs (4)
309case RefKind.Ref: 1271if (receiverParameter.RefKind == RefKind.Ref) 1284analyzedArguments.RefKinds[0] = RefKind.Ref; 1375if (extensionParameter.RefKind == RefKind.Ref)
Binder\Binder_Operators.cs (7)
449analyzedArguments.RefKinds.Add(RefKind.Ref); 3559analyzedArguments.RefKinds.Add(RefKind.Ref); 3925if (!((extensionParameter.Type.IsValueType && extensionParameter.RefKind == RefKind.Ref) || 5953var isRef = whenTrueRefKind == RefKind.Ref && whenFalseRefKind == RefKind.Ref; 5956if (whenFalseRefKind == RefKind.Ref) 5961if (whenTrueRefKind == RefKind.Ref)
Binder\Binder_Statements.cs (5)
927if (expressionRefKind == RefKind.Ref) 944else if (expressionRefKind != RefKind.Ref) 1422var isRef = refKind == RefKind.Ref; 1452if (lhsRefKind is RefKind.Ref or RefKind.Out) 3678requiredValueKind = sigRefKind == RefKind.Ref ?
Binder\ForEachLoopBinder.cs (5)
246if (getEnumeratorMethod.ParameterRefKinds is { IsDefault: false } refKinds && refKinds[0] == RefKind.Ref) 252else if (getEnumeratorMethod.IsExtensionBlockMember() && getEnumeratorMethod.ContainingType.ExtensionParameter.RefKind == RefKind.Ref) 349case RefKind.Ref: 486if (elementConversionClassification.Kind != ConversionKind.Identity && IterationVariable.RefKind is RefKind.Ref or RefKind.RefReadOnly) 889builder.CurrentPropertyGetter?.RefKind == (wellKnownSpan == WellKnownType.System_ReadOnlySpan_T ? RefKind.RefReadOnly : RefKind.Ref)) ||
Binder\Semantics\OverloadResolution\OverloadResolution.cs (12)
2679RefKind.Ref when isInterpolatedStringHandlerConversion => true, 2918Debug.Assert(refKind1 == RefKind.None || refKind1 == RefKind.Ref); 2919Debug.Assert(refKind2 == RefKind.None || refKind2 == RefKind.Ref); 2932else if (refKind1 == RefKind.Ref) 3985if (argRefKind == RefKind.Ref && binder.Compilation.IsFeatureEnabled(MessageID.IDS_FeatureRefReadonlyParameters)) 3987return RefKind.Ref; 3990else if (paramRefKind == RefKind.RefReadOnlyParameter && argRefKind is RefKind.None or RefKind.Ref or RefKind.In) 4003if ((options & Options.AllowRefOmittedArguments) != 0 && paramRefKind == RefKind.Ref && argRefKind == RefKind.None && !binder.InAttributeArgument) 4025(RefKind.RefReadOnlyParameter, RefKind.Ref) or 4033(candidateMethodParameterRefKind, delegateParameterRefKind) is (RefKind.In, RefKind.Ref)) 4584if (parameterRefKind == RefKind.Ref) 4603&& parameterRefKind == RefKind.Ref
Binder\Semantics\OverloadResolution\OverloadResolutionResult.cs (4)
1236if (refParameter == RefKind.Ref || refParameter == RefKind.In) 1295!(refArg == RefKind.Ref && refParameter == RefKind.In && binder.Compilation.IsFeatureEnabled(MessageID.IDS_FeatureRefReadonlyParameters)) && 1296!(refParameter == RefKind.RefReadOnlyParameter && refArg is RefKind.None or RefKind.Ref or RefKind.In)) 1306else if (refArg == RefKind.Ref && refParameter == RefKind.In && !binder.Compilation.IsFeatureEnabled(MessageID.IDS_FeatureRefReadonlyParameters))
BoundTree\BoundExpressionExtensions.cs (1)
54return RefKind.Ref;
BoundTree\BoundReturnStatement.cs (1)
13Debug.Assert(RefKind is RefKind.None or RefKind.Ref); // We assume that 'ref readonly' cannot be result of a return inference for a lambda.
BoundTree\Constructors.cs (1)
201Debug.Assert(argumentRefKind is RefKind.None or RefKind.Ref or RefKind.In or RefKind.Out or RefKindExtensions.StrictIn &&
CodeGen\CodeGenerator_HasHome.cs (4)
99return methodRefKind == RefKind.Ref || 105return dupRefKind == RefKind.Ref || 121return lhsRefKind == RefKind.Ref || 188if (field.RefKind is RefKind.Ref)
CodeGen\EmitAddress.cs (2)
124if (funcPtrRefKind == RefKind.Ref || 180return methodRefKind == RefKind.Ref ||
CodeGen\EmitExpression.cs (2)
724Debug.Assert(refKind is RefKind.In or RefKind.Ref or RefKind.Out or RefKindExtensions.StrictIn); 749Debug.Assert(refKind is RefKind.Ref or RefKind.Out or RefKindExtensions.StrictIn);
CodeGen\Optimizer.cs (3)
1066Debug.Assert(((BoundCall)lhs).Method.RefKind == RefKind.Ref, "only ref returning methods are assignable"); 1070Debug.Assert(((BoundFunctionPointerInvocation)lhs).FunctionPointer.Signature.RefKind == RefKind.Ref, "only ref returning function pointers are assignable"); 2250left.LocalSymbol.RefKind == RefKind.Ref &&
FlowAnalysis\AbstractFlowPass.cs (4)
1437WriteArgument(receiverOpt, RefKind.Ref, method: null); 1557case RefKind.Ref: 2166? RefKind.Ref 3340WriteArgument(operand, RefKind.Ref, method: null);
FlowAnalysis\DefiniteAssignment.cs (1)
2526if (refKind == RefKind.Ref)
FlowAnalysis\NullableWalker.cs (9)
1385if (refKind != RefKind.Out && refKind != RefKind.Ref) 2539if (refKind == RefKind.Ref) 7073return extensionParameter.RefKind == RefKind.Ref ? RefKind.Ref : RefKind.None; 8146case RefKind.Ref: 8249case RefKind.Ref: 8353case RefKind.Ref: 12117ImmutableArray<RefKind> refKindsOpt = extensionParameter.RefKind == RefKind.Ref ? [RefKind.Ref] : default;
Lowering\AsyncRewriter\RuntimeAsyncRewriter.cs (1)
415Debug.Assert(thisParameter is not { Type.IsValueType: true, RefKind: RefKind.Ref });
Lowering\ClosureConversion\ClosureConversion.cs (1)
940refkindsBuilder.AddMany(RefKind.Ref, frameCount);
Lowering\Instrumentation\LocalStateTracingInstrumenter.cs (1)
600if (refKinds[i] is not (RefKind.Ref or RefKind.Out))
Lowering\LocalRewriter\LocalRewriter_Call.cs (9)
306thisRefKind == RefKind.Ref ? CodeGenerator.AddressKind.Writeable : CodeGenerator.AddressKind.ReadOnlyStrict, 710refKind = rewrittenReceiver.Type.IsValueType || rewrittenReceiver.Type.Kind == SymbolKind.TypeParameter ? RefKind.Ref : RefKind.None; 729refKind = RefKind.Ref; 1273Debug.Assert(initialArgRefKind is RefKind.None or RefKind.In or RefKind.Ref); 1276else if (paramRefKind == RefKind.Ref && initialArgRefKind == RefKind.None) 1282return RefKind.Ref; 1708if (argRefKind != RefKind.None || paramRefKind != RefKind.Ref) 1717if (localRefKind == RefKind.Ref) 1735argsRefKindsBuilder[argIndex] = RefKind.Ref;
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (1)
663var call = _factory.New(constructor, arguments: [temp], argumentRefKinds: [asReadOnlySpan ? RefKindExtensions.StrictIn : RefKind.Ref]);
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (5)
313refKind = variableRepresentsLocation ? RefKind.Ref : RefKind.None; 579var variableTemp = _factory.StoreToTemp(arrayAccess, out assignmentToTemp, refKind: RefKind.Ref); 657var temp = _factory.StoreToTemp(VisitExpression(arguments[i]), out assignmentToTemp, indexerAccess.ArgumentRefKindsOpt.RefKinds(i) != RefKind.None ? RefKind.Ref : RefKind.None); 809Debug.Assert(originalLHS.GetRefKind() == RefKind.Ref); 885var variableTemp = _factory.StoreToTemp(rewrittenVariable, out assignmentToTemp2, refKind: RefKind.Ref);
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (1)
759collectionTempRefKind = enumeratorInfo.InlineArraySpanType == WellKnownType.System_Span_T ? RefKind.Ref : RefKindExtensions.StrictIn;
Lowering\LocalRewriter\LocalRewriter_IndexerAccess.cs (4)
330possiblyRefCapturedReceiver = _factory.StoreToTemp(possiblyRefCapturedReceiver, out var refCapture, createSpan.Parameters[0].RefKind == RefKind.In ? RefKindExtensions.StrictIn : RefKind.Ref); 511Debug.Assert(!isLeftOfAssignment || node.IndexerOrSliceAccess.GetRefKind() == RefKind.Ref); 568receiver.Type.IsReferenceType ? RefKind.None : RefKind.Ref); 871receiver.Type.IsReferenceType ? RefKind.None : RefKind.Ref);
Lowering\LocalRewriter\LocalRewriter_ObjectOrCollectionInitializerExpression.cs (2)
203if (initializer.InvokedAsExtensionMethod && addMethod.Parameters[0].RefKind == RefKind.Ref) 209builder[0] = RefKind.Ref;
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (2)
535argumentRefKindsOpt: [readOnlySpanCtorRefParamChar.Parameters[0].RefKind == RefKind.Ref ? RefKind.Ref : RefKindExtensions.StrictIn],
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (4)
556return hasHome ? RefKind.Ref : RefKind.None; 795return refKind == RefKind.None ? RefKind.None : RefKind.Ref; 818Debug.Assert(refKind == RefKind.None || refKind == RefKind.Ref || refKind == RefKind.Out, "unexpected refKind in dynamic"); 825else if (refKind == RefKind.Ref)
Lowering\SpillSequenceSpiller.cs (6)
370var left = Spill(builder, assignment.Left, RefKind.Ref); 371var right = Spill(builder, assignment.Right, RefKind.Ref); 919left = Spill(leftBuilder, VisitExpression(ref leftBuilder, left), RefKind.Ref); 966receiver = Spill(leftBuilder, VisitExpression(ref leftBuilder, field.ReceiverOpt), RefKind.Ref); 1090result = receiver.Type.IsReadOnly ? RefKind.In : RefKind.Ref; 1318receiver = Spill(receiverBuilder, receiver, RefKind.Ref);
Lowering\StateMachineRewriter\RefInitializationHoister.cs (3)
97var sacrificialTemp = _factory.SynthesizedLocal(type, refKind: RefKind.Ref); 240Debug.Assert(refKind is RefKindExtensions.StrictIn or RefKind.Ref or RefKind.Out); 261Debug.Assert(refKind is RefKindExtensions.StrictIn or RefKind.Ref or RefKind.In);
Lowering\SynthesizedMethodBaseSymbol.cs (1)
141builder.Add(SynthesizedParameterSymbol.Create(this, this.TypeMap.SubstituteType(extra), ordinal++, RefKind.Ref));
Lowering\SyntheticBoundNodeFactory.cs (3)
585return new BoundReturnStatement(Syntax, CurrentFunction.RefKind != RefKind.None ? RefKind.Ref : RefKind.None, expression, @checked: false) { WasCompilerGenerated = true }; 1670refKind = RefKind.Ref; 1688case RefKind.Ref:
SymbolDisplay\SymbolDisplayVisitor.Members.cs (2)
39case RefKind.Ref: 1142case RefKind.Ref:
Symbols\Extensions\SynthesizedExtensionMarker.cs (1)
100else if (parameterRefKind == RefKind.Ref && !parameterType.IsValueType)
Symbols\FunctionPointers\FunctionPointerMethodSymbol.cs (4)
53refKind = RefKind.Ref; 312Debug.Assert(refKind is RefKind.None or RefKind.In or RefKind.Ref or RefKind.Out); 553RefKind = getRefKind(retInfo, RefCustomModifiers, RefKind.RefReadOnly, RefKind.Ref, requiresLocationAllowed: false); 589true => RefKind.Ref,
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (1)
202=> refKind == RefKind.None ? RefKind.None : RefKind.Ref;
Symbols\MemberSignatureComparer.cs (1)
251/// the difference between <see cref="RefKind.Out"/> and <see cref="RefKind.Ref"/>.
Symbols\Metadata\PE\PEFieldSymbol.cs (1)
348moduleSymbol.Module.HasIsReadOnlyAttribute(_handle) ? RefKind.RefReadOnly : RefKind.Ref :
Symbols\Metadata\PE\PEMethodSymbol.cs (2)
1162case RefKind.Ref: 1196case RefKind.Ref:
Symbols\Metadata\PE\PEParameterSymbol.cs (2)
265refKind = isByRef ? RefKind.Ref : RefKind.None; 305refKind = RefKind.Ref;
Symbols\Metadata\PE\PEPropertySymbol.cs (1)
308_refKind = RefKind.Ref;
Symbols\MethodSymbol.cs (1)
227return this.RefKind == RefKind.Ref;
Symbols\NamedTypeSymbol.cs (1)
392if (thisParam.RefKind == RefKind.Ref && !thisParam.Type.IsValueType)
Symbols\ParameterSymbol.cs (1)
169(refKind == RefKind.Ref && ContainingSymbol.ContainingType.IsComImport));
Symbols\PropertySymbol.cs (1)
71public bool ReturnsByRef { get { return this.RefKind == RefKind.Ref; } }
Symbols\PropertySymbolExtensions.cs (1)
73if (param.RefKind == RefKind.Ref || param.RefKind == RefKind.Out)
Symbols\RefKindExtensions.cs (2)
26return RefKind.Ref; 42case RefKind.Ref:
Symbols\Source\ParameterHelpers.cs (4)
310if (!allowRefOrOut && (refKind == RefKind.Ref || refKind == RefKind.Out)) 957if (refKind == RefKind.Ref || refKind == RefKind.Out) 1157refKind = RefKind.Ref; 1180if (refKind == RefKind.Ref && refnessKeyword.GetNextToken() == modifier)
Symbols\Source\SourceComplexParameterSymbol.cs (1)
1459case RefKind.Ref:
Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs (8)
1314overrideMethod.RefKind == RefKind.Ref ? RefKind.Ref : RefKind.Out, 1386case RefKind.Ref: 1427p is { EffectiveScope: ScopedKind.None, RefKind: RefKind.Ref } or { EffectiveScope: ScopedKind.ScopedRef, RefKind: RefKind.Out } && 1438if ((overrideThisParameter is { RefKind: RefKind.Ref or RefKind.Out } && overrideThisParameter.Type.IsRefLikeOrAllowsRefLikeType()) || 1440(method.RefKind is RefKind.Ref or RefKind.RefReadOnly)) 1444else if (parameters.Any(p => (p.RefKind is RefKind.Ref or RefKind.Out) && p.Type.IsRefLikeOrAllowsRefLikeType())) 1455int nRefParameters = parameters.Count(p => p.RefKind is RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter or RefKind.Out);
Symbols\Source\SourceMemberFieldSymbol.cs (1)
535Debug.Assert(refKind is RefKind.None or RefKind.Ref or RefKind.RefReadOnly);
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (1)
753RefKind.Ref => "ref ",
Symbols\Source\SourceOrdinaryMethodSymbol.cs (1)
221else if (parameter0RefKind == RefKind.Ref && !parameter0Type.Type.IsValueType)
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (1)
402case RefKind.Ref: // 'ref' receivers are disallowed for types not known to be a struct
Symbols\Source\ThisParameterSymbol.cs (1)
172return RefKind.Ref;
Symbols\Synthesized\RefKindVector.cs (2)
47(false, false, true) => RefKind.Ref, 60RefKind.Ref => (false, false, true),
Symbols\Synthesized\SynthesizedBackingFieldSymbol.cs (1)
96Debug.Assert(property.RefKind is RefKind.None or RefKind.Ref or RefKind.RefReadOnly);
Symbols\Synthesized\SynthesizedInlineArrayAsSpanMethod.cs (1)
17this.SetParameters(ImmutableArray.Create<ParameterSymbol>(SynthesizedParameterSymbol.Create(this, TypeWithAnnotations.Create(TypeParameters[0]), 0, RefKind.Ref, "buffer"),
Symbols\Synthesized\SynthesizedInlineArrayElementRefMethod.cs (2)
17this.SetParameters(ImmutableArray.Create<ParameterSymbol>(SynthesizedParameterSymbol.Create(this, TypeWithAnnotations.Create(TypeParameters[0]), 0, RefKind.Ref, "buffer"), 21public override RefKind RefKind => RefKind.Ref;
Symbols\Synthesized\SynthesizedInlineArrayFirstElementRefMethod.cs (2)
17this.SetParameters(ImmutableArray.Create<ParameterSymbol>(SynthesizedParameterSymbol.Create(this, TypeWithAnnotations.Create(TypeParameters[0]), 0, RefKind.Ref, "buffer"))); 20public override RefKind RefKind => RefKind.Ref;
Syntax\SyntaxNodeExtensions.cs (2)
255: RefKind.Ref; 330refKind = RefKind.Ref;
Microsoft.CodeAnalysis.CSharp.CodeStyle (8)
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePatternMatching\CSharpAsAndNullCheckDiagnosticAnalyzer.cs (1)
249argument.GetRefKind() is RefKind.Out or RefKind.Ref)
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (1)
318if (primaryConstructor.Parameters.Any(static p => p.RefKind is RefKind.Ref or RefKind.Out))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ArgumentSyntaxExtensions.cs (2)
27SyntaxKind.RefKeyword => RefKind.Ref, 88parameter.RefKind != RefKind.Ref)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (1)
373ReducedFrom.Parameters: [{ RefKind: RefKind.Ref }, ..],
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (3)
735if (castedSymbol is not IFieldSymbol and not ILocalSymbol and not IParameterSymbol and not IParameterSymbol { RefKind: RefKind.Ref }) 1589if (operation is IPropertyReferenceOperation { Property.RefKind: not RefKind.Ref }) 1593if (operation is IInvocationOperation { TargetMethod.RefKind: not RefKind.Ref })
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (3)
src\roslyn\src\Analyzers\CSharp\CodeFixes\GenerateParameterizedMember\CSharpGenerateParameterizedMemberService.cs (1)
35=> _invocationExpression.IsParentKind(SyntaxKind.RefExpression) ? RefKind.Ref : RefKind.None;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (2)
165case RefKind.Ref: 301RefKind.Ref => SyntaxFactory.RefType(type),
Microsoft.CodeAnalysis.CSharp.Features (8)
CodeRefactorings\ConvertLocalFunctionToMethod\CSharpConvertLocalFunctionToMethodCodeRefactoringProvider.cs (1)
89refKind: dataFlow.WrittenInside.Contains(capture) ? RefKind.Ref : RefKind.None,
Completion\CompletionProviders\CrefCompletionProvider.cs (1)
301RefKind.Ref => "ref ",
Completion\KeywordRecommenders\RefKeywordRecommender.cs (1)
106return parameter?.RefKind is RefKind.Ref or RefKind.RefReadOnlyParameter;
Completion\Providers\ContextVariableArgumentProvider.cs (1)
38case RefKind.Ref:
ExtractMethod\CSharpMethodExtractor.CSharpCodeGenerator.cs (1)
100refKind: AnalyzerResult.ReturnsByRef ? RefKind.Ref : RefKind.None,
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePatternMatching\CSharpAsAndNullCheckDiagnosticAnalyzer.cs (1)
249argument.GetRefKind() is RefKind.Out or RefKind.Ref)
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (1)
318if (primaryConstructor.Parameters.Any(static p => p.RefKind is RefKind.Ref or RefKind.Out))
src\roslyn\src\Analyzers\CSharp\CodeFixes\GenerateParameterizedMember\CSharpGenerateParameterizedMemberService.cs (1)
35=> _invocationExpression.IsParentKind(SyntaxKind.RefExpression) ? RefKind.Ref : RefKind.None;
Microsoft.CodeAnalysis.CSharp.Workspaces (9)
CodeGeneration\CSharpSyntaxGenerator.cs (1)
212case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ArgumentSyntaxExtensions.cs (2)
27SyntaxKind.RefKeyword => RefKind.Ref, 88parameter.RefKind != RefKind.Ref)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (1)
373ReducedFrom.Parameters: [{ RefKind: RefKind.Ref }, ..],
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (3)
735if (castedSymbol is not IFieldSymbol and not ILocalSymbol and not IParameterSymbol and not IParameterSymbol { RefKind: RefKind.Ref }) 1589if (operation is IPropertyReferenceOperation { Property.RefKind: not RefKind.Ref }) 1593if (operation is IInvocationOperation { TargetMethod.RefKind: not RefKind.Ref })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (2)
165case RefKind.Ref: 301RefKind.Ref => SyntaxFactory.RefType(type),
Microsoft.CodeAnalysis.Extensions.Package (1)
Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
Microsoft.CodeAnalysis.Features (5)
ExtractMethod\MethodExtractor.CodeGenerator.cs (1)
451ParameterBehavior.Ref => RefKind.Ref,
RQName\RQNodeBuilder.cs (1)
156else if (parameter.RefKind == RefKind.Ref)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (1)
689if (member is IFieldSymbol { RefKind: RefKind.Ref })
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
567case RefKind.Ref:
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (1)
252return RefKind.Ref;
Microsoft.CodeAnalysis.ResxSourceGenerator (10)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
500method.Parameters[0].RefKind == RefKind.Ref && 501method.Parameters[1].RefKind != RefKind.Ref && 512method.Parameters[0].RefKind == RefKind.Ref && 513method.Parameters[1].RefKind != RefKind.Ref && 514method.Parameters[2].RefKind != RefKind.Ref &&
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
Microsoft.CodeAnalysis.VisualBasic (4)
Compilation\ClsComplianceChecker.vb (1)
958builder.Add(If(parameter.IsByRef, RefKind.Ref, RefKind.None))
Symbols\MethodSymbol.vb (1)
1086Return If(Me.ReturnsByRef, RefKind.Ref, RefKind.None)
Symbols\ParameterSymbol.vb (1)
308Return If(Me.IsByRef, RefKind.Ref, RefKind.None)
Symbols\PropertySymbol.vb (1)
611Return If(Me.ReturnsByRef, RefKind.Ref, RefKind.None)
Microsoft.CodeAnalysis.VisualBasic.CodeStyle (1)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ExpressionSyntaxExtensions.vb (1)
399method.ReducedFrom.Parameters.First().RefKind = RefKind.Ref Then
Microsoft.CodeAnalysis.VisualBasic.Features (1)
Completion\CompletionProviders\CrefCompletionProvider.vb (1)
233If parameter.RefKind = RefKind.Ref Then
Microsoft.CodeAnalysis.VisualBasic.Workspaces (1)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ExpressionSyntaxExtensions.vb (1)
399method.ReducedFrom.Parameters.First().RefKind = RefKind.Ref Then
Microsoft.CodeAnalysis.Workspaces (9)
Editing\DeclarationModifiers.cs (1)
85isRef: field?.RefKind is RefKind.Ref or RefKind.RefReadOnly || type?.IsRefLikeType == true,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationMethodSymbol.cs (1)
81return RefKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationPropertySymbol.cs (1)
72public bool ReturnsByRef => refKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (1)
113=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef }
Microsoft.Extensions.Logging.Generators (2)
LoggerMessageGenerator.Parser.cs (1)
380else if (paramSymbol.RefKind == RefKind.Ref)
LoggerMessageGenerator.Roslyn4.0.cs (1)
59m.Parameters[1].RefKind == RefKind.Ref) ?? false;
Microsoft.Interop.SourceGeneration (7)
MarshalAsParser.cs (1)
297&& info.RefKind is RefKind.None or RefKind.In or RefKind.Ref;
Marshalling\AttributedMarshallingModelGeneratorResolver.cs (1)
383if (info.RefKind == RefKind.Ref)
Marshalling\MarshallerHelpers.cs (5)
24ByValueContentsMarshalKind.InOut => RefKind.Ref, 293case RefKind.Ref: 315case RefKind.Ref: 402case RefKind.Ref: 432RefKind.Ref => Token(SyntaxKind.RefKeyword),
Roslyn.Diagnostics.Analyzers (26)
AbstractDoNotCopyValue.cs (12)
576case RefKind.Ref or RefKind.RefReadOnly or RefKindEx.RefReadOnlyParameter when operation.Conversion.IsIdentity: 1355(RefKind.Ref, RefKind.Ref or RefKind.RefReadOnly or RefKindEx.RefReadOnlyParameter) => true, 1369return RefKind.Ref; 1390{ ReturnsByRef: true } => RefKind.Ref, 1399return field.IsReadOnly ? RefKind.RefReadOnly : RefKind.Ref; 1402return _context.OwningSymbol.IsReadOnly() ? RefKind.RefReadOnly : RefKind.Ref; 1408{ ReturnsByRef: true } => RefKind.Ref, 1417return local.RefKind == RefKind.RefReadOnly ? RefKind.RefReadOnly : RefKind.Ref; 1424return parameter.RefKind is RefKind.In or RefKindEx.RefReadOnlyParameter ? parameter.RefKind : RefKind.Ref; 1434{ ReturnsByRef: true } => RefKind.Ref, 1458_ => RefKind.Ref,
AbstractExposeMemberForTesting`1.cs (1)
191GetByRefType(syntaxGenerator.TypeExpression(fieldSymbol.Type), fieldSymbol.IsReadOnly ? RefKind.RefReadOnly : RefKind.Ref),
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
500method.Parameters[0].RefKind == RefKind.Ref && 501method.Parameters[1].RefKind != RefKind.Ref && 512method.Parameters[0].RefKind == RefKind.Ref && 513method.Parameters[1].RefKind != RefKind.Ref && 514method.Parameters[2].RefKind != RefKind.Ref &&
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (3)
172case RefKind.Ref: 184RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 221case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
456if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\IParameterSymbolExtensions.cs (1)
18case RefKind.Ref:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationMethodSymbol.cs (1)
81return RefKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationPropertySymbol.cs (1)
72public bool ReturnsByRef => refKind == RefKind.Ref;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (1)
113=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef }
Roslyn.Diagnostics.CSharp.Analyzers (9)
CSharpExposeMemberForTesting.cs (1)
43RefKind.Ref => default,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ArgumentSyntaxExtensions.cs (2)
27SyntaxKind.RefKeyword => RefKind.Ref, 88parameter.RefKind != RefKind.Ref)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (1)
373ReducedFrom.Parameters: [{ RefKind: RefKind.Ref }, ..],
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (3)
735if (castedSymbol is not IFieldSymbol and not ILocalSymbol and not IParameterSymbol and not IParameterSymbol { RefKind: RefKind.Ref }) 1589if (operation is IPropertyReferenceOperation { Property.RefKind: not RefKind.Ref }) 1593if (operation is IInvocationOperation { TargetMethod.RefKind: not RefKind.Ref })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (2)
165case RefKind.Ref: 301RefKind.Ref => SyntaxFactory.RefType(type),
Roslyn.Diagnostics.VisualBasic.Analyzers (1)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ExpressionSyntaxExtensions.vb (1)
399method.ReducedFrom.Parameters.First().RefKind = RefKind.Ref Then
System.Text.Json.SourceGeneration (3)
JsonSourceGenerator.Emitter.cs (3)
1653bool hasRefOrRefReadonlyParams = parameters.Any(p => p.RefKind == RefKind.Ref || p.RefKind == RefKindRefReadOnlyParameter); 1665if (param.RefKind == RefKind.Ref || param.RefKind == RefKindRefReadOnlyParameter) 1728RefKind.Ref => $"ref __temp{param.ParameterIndex}",