2 implementations of RefKind
Microsoft.CodeAnalysis.CSharp (1)
Symbols\PublicModel\ParameterSymbol.cs (1)
59RefKind IParameterSymbol.RefKind => _underlying.RefKind;
Microsoft.CodeAnalysis.VisualBasic (1)
Symbols\ParameterSymbol.vb (1)
304Private ReadOnly Property IParameterSymbol_RefKind As RefKind Implements IParameterSymbol.RefKind, IParameterSymbolInternal.RefKind
334 references to RefKind
ConfigurationSchemaGenerator (2)
RuntimeSource\Configuration.Binder\ConfigurationBindingGenerator.Parser.cs (1)
704else if (parameter.RefKind is not RefKind.None)
RuntimeSource\Configuration.Binder\Specs\Members\ParameterSpec.cs (1)
16RefKind = parameter.RefKind;
ILLink.RoslynAnalyzer (5)
DynamicallyAccessedMembersAnalyzer.cs (1)
161 if (parameter.GetDynamicallyAccessedMemberTypes () != DynamicallyAccessedMemberTypes.None && !parameter.Type.IsTypeInterestingForDataflow (isByRef: parameter.RefKind is not RefKind.None))
IOperationExtensions.cs (1)
125 switch (argumentOperation.Parameter?.RefKind) {
TrimAnalysis\FlowAnnotations.cs (1)
146 bool isByRef = parameter.RefKind is not RefKind.None;
TrimAnalysis\ParameterProxy.cs (2)
25 switch (Method.Method.Parameters[MetadataIndex].RefKind) { 31 Debug.Fail ($"Unexpected RefKind {Method.Method.Parameters[MetadataIndex].RefKind} found on parameter {GetDisplayName ()}");
Metrics (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Metrics.Legacy (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Microsoft.AspNetCore.App.Analyzers (2)
src\Shared\RoslynUtils\ParsabilityHelper.cs (2)
101methodSymbol.Parameters[1].RefKind == RefKind.Out; 112methodSymbol.Parameters[2].RefKind == RefKind.Out;
Microsoft.AspNetCore.Http.RequestDelegateGenerator (2)
src\Shared\RoslynUtils\ParsabilityHelper.cs (2)
101methodSymbol.Parameters[1].RefKind == RefKind.Out; 112methodSymbol.Parameters[2].RefKind == RefKind.Out;
Microsoft.CodeAnalysis (4)
DiagnosticAnalyzer\SuppressMessageAttributeState.TargetSymbolResolver.cs (1)
796if ((symbol.RefKind == RefKind.None) == parameterInfo.IsRefOrOut)
DocumentationCommentId.cs (2)
495if (p.RefKind != RefKind.None) 1400if ((symbol.RefKind == RefKind.None) == parameterInfo.IsRefOrOut)
Operations\ControlFlowGraphBuilder.cs (1)
6825Debug.Assert(outParameterArgument is { Parameter: { RefKind: RefKind.Out, Type.SpecialType: SpecialType.System_Boolean } });
Microsoft.CodeAnalysis.Analyzers (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Microsoft.CodeAnalysis.AnalyzerUtilities (38)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\CopyAnalysis\CopyAnalysis.CopyDataFlowOperationVisitor.cs (1)
320Debug.Assert(operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out);
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (5)
180Debug.Assert(parameter.RefKind != RefKind.None); 188Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 339operation.Parameter?.RefKind == RefKind.Out && 366if (operation.Parameter?.RefKind is RefKind.Out or RefKind.Ref) 377operation.Parameter.RefKind == RefKind.Out)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysisHelper.cs (1)
160operation.Parent is IArgumentOperation argument && argument.Parameter?.RefKind == RefKind.Out) &&
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\DefaultPointsToValueGenerator.cs (1)
31analysisEntity.Symbol is IParameterSymbol parameter && parameter.RefKind == RefKind.Out ||
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (6)
184analysisEntity.Symbol is IParameterSymbol { RefKind: RefKind.Out }); 250if (parameter.RefKind is RefKind.Ref or RefKind.Out) 287Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 305if ((operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out) && 317else if (operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out) 319if (operation.Parameter.RefKind == RefKind.Ref)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\TaintedDataAnalysis.TaintedDataOperationVisitor.cs (3)
757&& (a.Parameter.RefKind == RefKind.None 758|| a.Parameter.RefKind == RefKind.Ref 759|| a.Parameter.RefKind == RefKind.In));
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AbstractLocationDataFlowOperationVisitor.cs (3)
44if (parameter.RefKind == RefKind.None) 69Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 75if (operation.Parameter.RefKind == RefKind.Ref)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AddressSharedEntitiesProvider.cs (1)
45if (parameter.RefKind != RefKind.None &&
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityDataFlowOperationVisitor.cs (3)
66Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 82Debug.Assert(operation.Parameter!.RefKind is RefKind.Ref or RefKind.Out); 308if (parameter.RefKind != RefKind.None)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (3)
594if (parameter.RefKind == RefKind.None || DataFlowAnalysisContext.InterproceduralAnalysisData == null) 3118if (operation.Parameter?.RefKind is RefKind.Ref or RefKind.Out) 3121if (operation.Parameter.RefKind != RefKind.Out)
Microsoft.CodeAnalysis.BannedApiAnalyzers (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Microsoft.CodeAnalysis.CodeStyle (13)
src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (1)
818methodSymbol.Parameters[0].RefKind == RefKind.None &&
src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
542switch (unusedParameter.RefKind)
src\Compilers\Core\Portable\DiagnosticAnalyzer\SuppressMessageAttributeState.TargetSymbolResolver.cs (1)
796if ((symbol.RefKind == RefKind.None) == parameterInfo.IsRefOrOut)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\IParameterSymbolExtensions.cs (1)
13switch (symbol.RefKind)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ISymbolExtensions.cs (1)
497if (symbol is IMethodSymbol method && method.Parameters.All(p => p.RefKind == RefKind.None))
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
164switch (argumentOperation.Parameter?.RefKind)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
440if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\SymbolKey\SymbolKey.cs (3)
37/// equal <see cref="IParameterSymbol.RefKind"/>s.</item> 61/// the "same" <see cref="IParameterSymbol.RefKind"/>s.</item> 285refKinds[i], parameters[i].RefKind, distinguishRefFromOut: false))
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\SymbolKey\SymbolKey.SymbolKeyWriter.cs (1)
81_writeRefKind = p => WriteRefKind(p.RefKind);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\SymbolEquivalenceComparer.ParameterSymbolEqualityComparer.cs (2)
48AreRefKindsEquivalent(x.RefKind, y.RefKind, distinguishRefFromOut) &&
Microsoft.CodeAnalysis.CodeStyle.Fixes (13)
src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.State.cs (1)
262ctorParameter.RefKind == _parameterRefKinds[i];
src\Analyzers\Core\CodeFixes\GenerateConstructor\GenerateConstructorHelpers.cs (2)
45constructor.Parameters.SequenceEqual(parameters, (p1, p2) => p1.RefKind == p2.RefKind) &&
src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (1)
220parameter.RefKind is RefKind.Out ||
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (1)
304refKind ?? parameter.RefKind,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\IParameterSymbolExtensions.cs (2)
28parameter.RefKind, 43parameter.RefKind,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (4)
69return factory.Argument(parameter.RefKind, factory.IdentifierName(parameter.Name)); 296if (parameter.RefKind != RefKind.Out && 318if (parameter.RefKind != RefKind.Out && 356var refKind = parameter.RefKind;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (2)
107=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef } 108or { RefKind: RefKind.None, Type.IsRefLikeType: true, ScopedKind: ScopedKind.ScopedValue };
Microsoft.CodeAnalysis.CSharp (4)
SymbolDisplay\SymbolDisplayVisitor.Members.cs (4)
642AddParameterRefKind(param.RefKind); 852symbol.RefKind != RefKind.Out && 859AddParameterRefKind(symbol.RefKind); 873symbol.RefKind == RefKind.None &&
Microsoft.CodeAnalysis.CSharp.CodeStyle (5)
src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryLambdaExpression\CSharpRemoveUnnecessaryLambdaExpressionDiagnosticAnalyzer.cs (2)
169if (lambdaParameter.RefKind != invokedParameter.RefKind)
src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (1)
318if (primaryConstructor.Parameters.Any(static p => p.RefKind is RefKind.Ref or RefKind.Out))
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (1)
373ReducedFrom.Parameters: [{ RefKind: RefKind.Ref }, ..],
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (1)
707if (castedSymbol is not IFieldSymbol and not ILocalSymbol and not IParameterSymbol and not IParameterSymbol { RefKind: RefKind.Ref })
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (2)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (1)
135=> GetParameterModifiers(ParameterIsScoped(parameter), parameter.RefKind, parameter.IsParams, forFunctionPointerReturnParameter);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (1)
796if (parameter.RefKind == refKind)
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (11)
CodeGen\CodeGenLocalFunctionTests.cs (11)
3136Assert.Equal(RefKind.Ref, goo.Parameters[0].RefKind); 3161Assert.Equal(RefKind.Ref, goo.Parameters[0].RefKind); 3162Assert.Equal(RefKind.Ref, bar.Parameters[0].RefKind); 3163Assert.Equal(RefKind.Ref, bar.Parameters[1].RefKind); 3214Assert.Equal(RefKind.Ref, inner.Parameters[0].RefKind); 3215Assert.Equal(RefKind.Ref, inner.Parameters[1].RefKind); 3216Assert.Equal(RefKind.Ref, middle.Parameters[0].RefKind); 3279Assert.Equal(RefKind.Ref, goo.Parameters[0].RefKind); 3318Assert.Equal(RefKind.Ref, goo.Parameters[1].RefKind); 3319Assert.Equal(RefKind.Ref, bar.Parameters[1].RefKind); 3320Assert.Equal(RefKind.Ref, bar.Parameters[2].RefKind);
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (3)
RefReadonlyParameterTests.cs (2)
7103Assert.Equal(refKind, methodFromCref!.Parameters.Single().RefKind); 7131Assert.Equal(RefKind.RefReadOnlyParameter, methodFromCref!.Parameters.Single().RefKind);
Semantics\ExtensionTests.cs (1)
2750Assert.Equal(RefKind.Out, parameter.RefKind);
Microsoft.CodeAnalysis.CSharp.Features (5)
CodeRefactorings\ConvertLocalFunctionToMethod\CSharpConvertLocalFunctionToMethodCodeRefactoringProvider.cs (1)
259=> CSharpSyntaxGenerator.Instance.Argument(shouldUseNamedArguments ? name : null, p.RefKind, name.ToIdentifierName());
SignatureHelp\LightweightOverloadResolution.cs (1)
112var parameterRefKind = parameter.RefKind;
src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryLambdaExpression\CSharpRemoveUnnecessaryLambdaExpressionDiagnosticAnalyzer.cs (2)
169if (lambdaParameter.RefKind != invokedParameter.RefKind)
src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (1)
318if (primaryConstructor.Parameters.Any(static p => p.RefKind is RefKind.Ref or RefKind.Out))
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (40)
Semantics\LambdaTests.cs (1)
8575Assert.Equal(RefKind.Ref, symbol.Parameters[0].RefKind);
Semantics\RefExtensionMethodsTests.cs (4)
2148Assert.Equal(RefKind.Ref, symbol.RefKind); 2167Assert.Equal(RefKind.In, symbol.RefKind); 2186Assert.Equal(RefKind.Ref, symbol.RefKind); 2205Assert.Equal(RefKind.In, symbol.RefKind);
Semantics\RefFieldTests.cs (1)
12012Assert.Equal(expectedRefKind, parameter.RefKind);
Semantics\SimpleLambdaParametersWithModifiersTests.cs (34)
41Assert.Equal(RefKind.Ref, symbol.Parameters.Single().RefKind); 68Assert.True(symbol.Parameters is [{ Type.SpecialType: SpecialType.System_String, RefKind: RefKind.None }, { Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref }]); 101{ Type.SpecialType: SpecialType.System_String, RefKind: RefKind.None }, 102{ Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref, IsOptional: false }]); 169Assert.True(symbol.Parameters is [{ Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref, IsOptional: false }]); 387{ Type.SpecialType: SpecialType.System_String, RefKind: RefKind.None }, 388{ Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref }]); 420Assert.True(symbol.Parameters is [{ Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.None, IsOptional: true }]); 452Assert.True(symbol.Parameters is [{ Type: IErrorTypeSymbol, RefKind: RefKind.None, IsOptional: false }]); 481Assert.True(symbol.Parameters is [{ Name: "", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref, IsOptional: false }]); 513Assert.True(symbol.Parameters is [{ Name: "", Type: IErrorTypeSymbol { Name: "x" }, RefKind: RefKind.Ref, IsOptional: false }]); 546Assert.True(symbol.Parameters is [{ Name: "", Type: IErrorTypeSymbol { Name: "x" }, RefKind: RefKind.Ref, IsOptional: false }]); 579Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref, IsOptional: false }]); 613parameter.RefKind == (passByRef ? RefKind.Ref : RefKind.None)); 641Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_String, RefKind: RefKind.Ref, IsOptional: false }]); 669Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.In, IsOptional: false }]); 701Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.In, IsOptional: false }]); 730Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Out, IsOptional: false }]); 759Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Out, IsOptional: false }]); 790Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.Ref, IsOptional: false }]); 824Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_String, Type.NullableAnnotation: CodeAnalysis.NullableAnnotation.Annotated, RefKind: RefKind.Ref, IsOptional: false }]); 858Assert.True(symbol.Parameters is [{ Name: "x", Type.SpecialType: SpecialType.System_String, Type.NullableAnnotation: CodeAnalysis.NullableAnnotation.NotAnnotated, RefKind: RefKind.Ref, IsOptional: false }]); 890Assert.True(symbol.Parameters is [{ Name: "x", Type.TypeKind: TypeKind.Dynamic, RefKind: RefKind.Ref, IsOptional: false }]); 1000Assert.Equal(RefKind.Ref, symbol.Parameters.Single().RefKind); 1040Assert.True(symbol.Parameters is [{ Name: "x", Type: IArrayTypeSymbol { ElementType.SpecialType: SpecialType.System_Int32 }, RefKind: RefKind.Ref, IsParams: true }]); 1075Assert.True(symbol.Parameters is [{ Name: "x", Type: IArrayTypeSymbol { ElementType.SpecialType: SpecialType.System_Int32 }, RefKind: RefKind.Ref, IsParams: true }]); 1104Assert.True(symbol.Parameters is [{ Name: "x", Type: IErrorTypeSymbol, RefKind: RefKind.Out, IsParams: false }]); 1133Assert.True(symbol.Parameters is [{ Name: "x", Type: IErrorTypeSymbol, RefKind: RefKind.Ref, IsParams: false }]); 1332Assert.Equal(RefKind.Ref, symbol.Parameters.Single().RefKind); 1362Assert.Equal(RefKind.RefReadOnlyParameter, symbol.Parameters.Single().RefKind); 1389Assert.Equal(RefKind.RefReadOnlyParameter, symbol.Parameters.Single().RefKind); 1422Assert.Equal(RefKind.RefReadOnlyParameter, symbol.Parameters.Single().RefKind); 1455Assert.Equal(RefKind.Ref, symbol.Parameters.Single().RefKind);
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (4)
DocumentationComments\CrefTests.cs (2)
6709Assert.Equal(RefKind.In, parameterSymbol.RefKind); 6752Assert.Equal(RefKind.RefReadOnlyParameter, parameterSymbol.RefKind);
Symbols\Source\DelegateTests.cs (2)
832Assert.Equal(RefKind.In, lambda.Parameters[0].RefKind); 839Assert.Equal(RefKind.In, lambda.Parameters[0].RefKind);
Microsoft.CodeAnalysis.CSharp.Test.Utilities (1)
Extensions.cs (1)
216m.Parameters.All(p => p.RefKind == RefKind.Out && p.Type.Equals(primaryConstructor.Parameters[p.Ordinal].Type, SymbolEqualityComparer.Default)));
Microsoft.CodeAnalysis.CSharp.Workspaces (4)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (1)
373ReducedFrom.Parameters: [{ RefKind: RefKind.Ref }, ..],
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (1)
707if (castedSymbol is not IFieldSymbol and not ILocalSymbol and not IParameterSymbol and not IParameterSymbol { RefKind: RefKind.Ref })
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (1)
135=> GetParameterModifiers(ParameterIsScoped(parameter), parameter.RefKind, parameter.IsParams, forFunctionPointerReturnParameter);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (1)
796if (parameter.RefKind == refKind)
Microsoft.CodeAnalysis.Features (13)
AddConstructorParametersFromMembers\AddConstructorParametersFromMembersCodeRefactoringProvider.State.cs (1)
112return constructorParams.All(parameter => parameter.RefKind == RefKind.None) &&
GenerateConstructors\AbstractGenerateConstructorsCodeRefactoringProvider.State.cs (1)
107where c.Parameters.All(p => p.RefKind == RefKind.None) && !c.Parameters.Any(static p => p.IsParams)
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (1)
267if (parameter.RefKind == RefKind.Out)
ReplaceMethodWithProperty\ReplaceMethodWithPropertyCodeRefactoringProvider.cs (1)
137setMethod.Parameters is [{ RefKind: RefKind.None } parameter] &&
RQName\RQNodeBuilder.cs (2)
152if (parameter.RefKind == RefKind.Out) 156else if (parameter.RefKind == RefKind.Ref)
src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (1)
818methodSymbol.Parameters[0].RefKind == RefKind.None &&
src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (1)
542switch (unusedParameter.RefKind)
src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.State.cs (1)
262ctorParameter.RefKind == _parameterRefKinds[i];
src\Analyzers\Core\CodeFixes\GenerateConstructor\GenerateConstructorHelpers.cs (2)
45constructor.Parameters.SequenceEqual(parameters, (p1, p2) => p1.RefKind == p2.RefKind) &&
src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (1)
220parameter.RefKind is RefKind.Out ||
src\Compilers\Core\Portable\DiagnosticAnalyzer\SuppressMessageAttributeState.TargetSymbolResolver.cs (1)
796if ((symbol.RefKind == RefKind.None) == parameterInfo.IsRefOrOut)
Microsoft.CodeAnalysis.PublicApiAnalyzers (10)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
Microsoft.CodeAnalysis.ResxSourceGenerator (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Microsoft.CodeAnalysis.Test.Utilities (6)
Diagnostics\CouldHaveMoreSpecificTypeAnalyzer.cs (2)
90if (argument.Parameter.RefKind == RefKind.Out || argument.Parameter.RefKind == RefKind.Ref)
Diagnostics\FieldCouldBeReadOnlyAnalyzer.cs (2)
78if (argument.Parameter.RefKind == RefKind.Out || argument.Parameter.RefKind == RefKind.Ref)
Diagnostics\LocalCouldBeConstAnalyzer.cs (2)
71if (argument.Parameter.RefKind == RefKind.Out || argument.Parameter.RefKind == RefKind.Ref)
Microsoft.CodeAnalysis.VisualBasic (2)
SymbolDisplay\SymbolDisplayVisitor.Members.vb (1)
527If symbol.RefKind <> RefKind.None AndAlso IsExplicitByRefParameter(symbol) Then
Symbols\ParameterSymbol.vb (1)
304Private ReadOnly Property IParameterSymbol_RefKind As RefKind Implements IParameterSymbol.RefKind, IParameterSymbolInternal.RefKind
Microsoft.CodeAnalysis.VisualBasic.CodeStyle (4)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ExpressionSyntaxExtensions.vb (3)
287Return parameter IsNot Nothing AndAlso parameter.RefKind <> RefKind.None 302Return method.Parameters(index).RefKind <> RefKind.None 307Return prop.Parameters(index).RefKind <> RefKind.None
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ParenthesizedExpressionSyntaxExtensions.vb (1)
288parameter.RefKind <> RefKind.None Then
Microsoft.CodeAnalysis.VisualBasic.CodeStyle.Fixes (1)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\CodeGeneration\EventGenerator.vb (1)
194Return CodeGenerationSymbolFactory.CreateParameterSymbol(parameter.GetAttributes(), parameter.RefKind, isParams:=False, type:=parameter.Type, name:=parameter.Name, hasDefaultValue:=False)
Microsoft.CodeAnalysis.VisualBasic.Workspaces (5)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ExpressionSyntaxExtensions.vb (3)
287Return parameter IsNot Nothing AndAlso parameter.RefKind <> RefKind.None 302Return method.Parameters(index).RefKind <> RefKind.None 307Return prop.Parameters(index).RefKind <> RefKind.None
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\VisualBasic\Extensions\ParenthesizedExpressionSyntaxExtensions.vb (1)
288parameter.RefKind <> RefKind.None Then
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\CodeGeneration\EventGenerator.vb (1)
194Return CodeGenerationSymbolFactory.CreateParameterSymbol(parameter.GetAttributes(), parameter.RefKind, isParams:=False, type:=parameter.Type, name:=parameter.Name, hasDefaultValue:=False)
Microsoft.CodeAnalysis.Workspaces (25)
Editing\SyntaxGenerator.cs (1)
328symbol.RefKind,
ReassignedVariable\AbstractReassignedVariableService.cs (2)
211symbolIsDefinitelyAssigned: parameter.RefKind != RefKind.Out, 235symbolIsDefinitelyAssigned: parameter.RefKind != RefKind.Out,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\IParameterSymbolExtensions.cs (1)
13switch (symbol.RefKind)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ISymbolExtensions.cs (1)
497if (symbol is IMethodSymbol method && method.Parameters.All(p => p.RefKind == RefKind.None))
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
164switch (argumentOperation.Parameter?.RefKind)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (1)
440if (parameter.RefKind is RefKind.Ref or RefKind.Out)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\SymbolKey\SymbolKey.cs (3)
37/// equal <see cref="IParameterSymbol.RefKind"/>s.</item> 61/// the "same" <see cref="IParameterSymbol.RefKind"/>s.</item> 285refKinds[i], parameters[i].RefKind, distinguishRefFromOut: false))
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\SymbolKey\SymbolKey.SymbolKeyWriter.cs (1)
81_writeRefKind = p => WriteRefKind(p.RefKind);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\SymbolEquivalenceComparer.ParameterSymbolEqualityComparer.cs (2)
48AreRefKindsEquivalent(x.RefKind, y.RefKind, distinguishRefFromOut) &&
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (1)
304refKind ?? parameter.RefKind,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\IMethodSymbolExtensions.cs (2)
71CodeGenerationSymbolFactory.CreateParameterSymbol(p.GetAttributes(), p.RefKind, p.IsParams, p.Type.SubstituteTypes(mapping, typeGenerator), p.Name, p.IsOptional, 168p.RefKind, p.IsParams, p.Type, p.Name, p.IsOptional,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\IParameterSymbolExtensions.cs (2)
28parameter.RefKind, 43parameter.RefKind,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\IPropertySymbolExtensions.cs (1)
63p.RefKind, p.IsParams, p.Type, p.Name, p.IsOptional,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (4)
69return factory.Argument(parameter.RefKind, factory.IdentifierName(parameter.Name)); 296if (parameter.RefKind != RefKind.Out && 318if (parameter.RefKind != RefKind.Out && 356var refKind = parameter.RefKind;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (2)
107=> symbol is { RefKind: RefKind.Ref or RefKind.In or RefKind.RefReadOnlyParameter, ScopedKind: ScopedKind.ScopedRef } 108or { RefKind: RefKind.None, Type.IsRefLikeType: true, ScopedKind: ScopedKind.ScopedValue };
Microsoft.Extensions.Logging.Generators (3)
LoggerMessageGenerator.Parser.cs (3)
364if (paramSymbol.RefKind == RefKind.In) 368else if (paramSymbol.RefKind == RefKind.Ref) 372else if (paramSymbol.RefKind == RefKind.Out)
Microsoft.Gen.Logging (4)
Parsing\Parser.cs (2)
544if (paramSymbol.RefKind == RefKind.In) 548else if (paramSymbol.RefKind != RefKind.None)
Parsing\Parser.TagProvider.cs (2)
99&& method.Parameters[0].RefKind == RefKind.None 100&& method.Parameters[1].RefKind == RefKind.None
Microsoft.Interop.SourceGeneration (3)
MarshallerShape.cs (2)
317&& m.Parameters[1].RefKind == RefKind.Out); 328&& m.Parameters[2].RefKind == RefKind.Out);
TypePositionInfo.cs (1)
95RefKind = paramSymbol.RefKind,
Microsoft.VisualStudio.LanguageServices (3)
ChangeSignature\ChangeSignatureDialogViewModel.ParameterViewModels.cs (1)
190switch (ParameterSymbol.RefKind)
Progression\GraphBuilder.cs (2)
316node.SetValue<bool>(Properties.IsByReference, parameterSymbol.RefKind == RefKind.Ref); 317node.SetValue<bool>(Properties.IsOut, parameterSymbol.RefKind == RefKind.Out);
Microsoft.VisualStudio.LanguageServices.CSharp (4)
CodeModel\CSharpCodeModelService_Prototype.cs (2)
528if (parameter.RefKind == RefKind.Ref) 532else if (parameter.RefKind == RefKind.Out)
ObjectBrowser\DescriptionBuilder.cs (2)
427if (current.RefKind == RefKind.Ref) 431else if (current.RefKind == RefKind.Out)
Microsoft.VisualStudio.LanguageServices.VisualBasic (1)
ObjectBrowser\DescriptionBuilder.vb (1)
415If current.RefKind = RefKind.Ref Then
Roslyn.Diagnostics.Analyzers (15)
AbstractDoNotCopyValue.cs (4)
400var parameterRefKind = operation.Parameter.RefKind; 1104else if (returnedValue is IParameterReferenceOperation { Parameter.RefKind: RefKind.None }) 1425return parameter.RefKind is RefKind.In or RefKindEx.RefReadOnlyParameter ? parameter.RefKind : RefKind.Ref;
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Test.Utilities (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch
Text.Analyzers (11)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IEnumerableOfIMethodSymbolExtensions.cs (4)
58if (!trailingOnly && candidateMethod.Parameters.First().Type.Equals(expectedParameterType) && candidateMethod.Parameters[0].RefKind == RefKind.None) 67if (!lastParameter.Type.Equals(expectedParameterType) || lastParameter.RefKind != RefKind.None) 78selectedOverload.Parameters[i].RefKind != candidateMethod.Parameters[j].RefKind)
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (6)
254parameter.RefKind == RefKind.None; 670method.Parameters[0].RefKind == RefKind.Ref && 671method.Parameters[1].RefKind != RefKind.Ref && 682method.Parameters[0].RefKind == RefKind.Ref && 683method.Parameters[1].RefKind != RefKind.Ref && 684method.Parameters[2].RefKind != RefKind.Ref &&
src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (1)
1027return argumentOperation.Parameter?.RefKind switch