Binder\Binder.CapturedParametersFinder.cs (2)
168if (isTypeOrValueReceiver(enclosingBinder, id, parameter.Type, out SyntaxNode? memberAccessNode, out string? memberName, out int targetMemberArity, out bool invoked))
171if (TreatAsInstanceMemberAccess(enclosingBinder, parameter.Type, memberAccessNode, memberName, targetMemberArity, invoked, lookupResult))
Binder\Binder_Conversions.cs (13)
580method.Parameters[0].Type is ArrayTypeSymbol { IsSZArray: true, ElementType: TypeParameterSymbol });
590static (readonlySpanType, method) => method.Parameters[0].Type.IsSpan() &&
640arg.source.Equals(parameter.Type.OriginalDefinition, TypeCompareKind.ConsiderEverything) &&
646((NamedTypeSymbol)parameter.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type.Equals(typeArgument.Type, TypeCompareKind.ConsiderEverything) &&
669Parameters: [{ Type.SpecialType: SpecialType.System_String }]
1061var parameterType = (NamedTypeSymbol)collectionBuilderMethod.Parameters[0].Type;
1515TypeSymbol secondArgumentType = (constructed ?? member).Parameters[1].Type;
1542var conversion = conversions.ConvertExtensionMethodThisArg(constructed.Parameters[0].Type, receiverType, ref useSiteInfo, isMethodGroupConversion: false);
1893if (method.Parameters is not [{ RefKind: RefKind.None, Type: var parameterType }]
1911var spanTypeArg = ((NamedTypeSymbol)methodWithTargetTypeParameters.Parameters[0].Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
2853(Conversions.ConvertExtensionMethodThisArg(GetReceiverParameter(method)!.Type, receiverOpt!.Type, ref useSiteInfo, isMethodGroupConversion: true).Exists && useSiteInfo.Diagnostics.IsNullOrEmpty()));
2877source: delegateParameter.Type,
2878destination: methodParameter.Type,
Binder\Binder_Expressions.cs (15)
518defaultValueBinder.GenerateConversionForAssignment(parameter.Type, valueBeforeConversion, diagnostics, ConversionForAssignmentFlags.DefaultParameter));
2140if (IsBadLocalOrParameterCapture(parameter, parameter.Type, parameter.RefKind))
2148else if (parameter.Type.IsRestrictedType(ignoreSpanLikeTypes: true))
2150Error(diagnostics, ErrorCode.ERR_SpecialByRefInLambda, node, parameter.Type);
2154Debug.Assert(parameter.Type.IsRefLikeOrAllowsRefLikeType());
2164(parameter.RefKind != RefKind.None || parameter.Type.IsRestrictedType()) &&
2171else if (parameter.Type.IsRestrictedType(ignoreSpanLikeTypes: true))
2173Error(diagnostics, ErrorCode.ERR_UnsupportedPrimaryConstructorParameterCapturingRefAny, node, parameter.Type);
2177Debug.Assert(parameter.Type.IsRefLikeOrAllowsRefLikeType());
3586if (parameters[paramsIndex].Type.IsSZArray())
3809placeholderType = parameter.Type;
3828placeholderType = parameter.Type;
10424original.Parameters[0] is { Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.None })
10524original.Parameters[0] is { Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.None } &&
10525original.Parameters[1] is { Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.None };
Binder\Binder_Operators.cs (8)
461BoundExpression rightConverted = CreateConversion(right, overloadResolutionResult.ValidResult.Result.ConversionForArg(isExtension ? 1 : 0), method.Parameters[0].Type, diagnostics);
490leftConversion = CreateConversion(node, leftPlaceholder, conversion, isCast: false, conversionGroupOpt: null, method.ContainingType.ExtensionParameter.Type, diagnostics);
499rightType: method.Parameters[0].Type,
1444var trueFalseParameterType = (resultKind.Operator() == BinaryOperatorKind.And ? falseOperator : trueOperator).Parameters[0].Type;
1561TypeSymbol parameterType = userDefinedOperator.Parameters[0].Type;
3366operandConversion = CreateConversion(node, operandPlaceholder, conversion, isCast: false, conversionGroupOpt: null, method.ContainingType.ExtensionParameter.Type, diagnostics);
3648!((extensionParameter.Type.IsValueType && extensionParameter.RefKind == RefKind.Ref) ||
3649(extensionParameter.Type.IsReferenceType && extensionParameter.RefKind == RefKind.None)))
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (6)
702var conversionInputType = method.Parameters[0].Type;
709? Convert(Visit(node.Operand), node.Operand.Type, method.Parameters[0].Type, node.Checked, false)
767unquoted = _bound.Call(_bound.MethodInfo(method, createDelegate.ContainingType), createDelegate, _bound.Typeof(delegateType, createDelegate.Parameters[0].Type), receiver);
774_bound.Typeof(delegateType, createDelegate.Parameters[0].Type),
776_bound.MethodInfo(method, createDelegate.Parameters[2].Type));
847_bound.Typeof(_typeMap.SubstituteType(p.Type).Type, _bound.WellKnownType(WellKnownType.System_Type)), _bound.Literal(p.Name));
Lowering\Instrumentation\LocalStateTracingInstrumenter.cs (9)
312var parameterLogger = GetLocalOrParameterStoreLogger(parameter.Type, parameter, refAssignmentSourceIsLocal: null, _factory.Syntax);
316MakeStoreLoggerArguments(parameterLogger.Parameters[0], parameter, parameter.Type, _factory.Parameter(parameter), refAssignmentSourceIndex: null, _factory.Literal((ushort)parameter.Ordinal)))));
424type = parameterSymbol.Type;
450if (parameter.Type.IsVoidPointer() && !targetType.IsPointerOrFunctionPointer())
453Debug.Assert(!parameter.Type.IsManagedTypeNoUseSiteDiagnostics);
456(BoundExpression)new BoundAddressOfOperator(_factory.Syntax, value, isManaged: false, parameter.Type) :
457_factory.Sequence(new[] { value }, new BoundAddressOfOperator(_factory.Syntax, VariableRead(targetSymbol), isManaged: false, parameter.Type));
462if (parameter.Type.SpecialType == SpecialType.System_String && targetType.SpecialType != SpecialType.System_String)
482return ImmutableArray.Create(_factory.Convert(parameter.Type, value), index);
Symbols\Source\SourceComplexParameterSymbol.cs (19)
350new BoundLiteral(parameterSyntax, defaultValue, Type));
404if (Type.IsNullableType())
406convertedExpression = binder.GenerateConversionForAssignment(Type.GetNullableUnderlyingType(),
878return RefKind != RefKind.None || (HasParamsModifier && Type.IsRefLikeOrAllowsRefLikeType());
988if (this.Type.IsReferenceType)
1012else if (!compilation.Conversions.ClassifyConversionFromType((TypeSymbol)arg.TypeInternal, this.Type, isChecked: false, ref useSiteInfo).Kind.IsImplicitConversion())
1221if (!Type.Equals(this.DeclaringCompilation.GetWellKnownType(WellKnownType.System_Threading_CancellationToken)))
1244if (Type is not NamedTypeSymbol { IsInterpolatedStringHandlerType: true } handlerType)
1247diagnostics.Add(ErrorCode.ERR_TypeIsNotAnInterpolatedStringHandlerType, arguments.AttributeSyntaxOpt.Location, Type);
1506public sealed override bool IsParamsArray => (_parameterSyntaxKind & ParameterFlags.ParamsParameter) != 0 && this.Type.IsSZArray();
1508public sealed override bool IsParamsCollection => (_parameterSyntaxKind & ParameterFlags.ParamsParameter) != 0 && !this.Type.IsSZArray();
1536if (DeclaredScope == ScopedKind.ScopedValue && !Type.IsErrorOrRefLikeOrAllowsRefLikeType())
1553var collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(DeclaringCompilation, Type, out TypeWithAnnotations elementTypeWithAnnotations);
1567binder.TryGetCollectionIterationType(syntax, Type, out elementTypeWithAnnotations);
1575if (!binder.HasCollectionExpressionApplicableConstructor(syntax, Type, out MethodSymbol? constructor, isExpanded: out _, diagnostics, isParamsModifierValidation: true))
1585if (!binder.HasCollectionExpressionApplicableAddMethod(syntax, Type, out ImmutableArray<MethodSymbol> addMethods, diagnostics))
1594diagnostics.Add(ErrorCode.ERR_ParamsCollectionExtensionAddMethod, syntax, Type);
1625binder.TryGetCollectionIterationType(syntax, Type, out elementTypeWithAnnotations);
1633MethodSymbol? collectionBuilderMethod = binder.GetAndValidateCollectionBuilderMethod(syntax, (NamedTypeSymbol)Type, diagnostics, elementType: out _);
Symbols\Source\SourcePropertySymbol.cs (6)
681if (!IsExplicitInterfaceImplementation && !this.IsNoMoreVisibleThan(param.Type, ref useSiteInfo))
683diagnostics.Add(ErrorCode.ERR_BadVisIndexerParam, Location, this, param.Type);
685else if (param.Type.HasFileLocalTypes() && !containingTypeForFileTypeCheck.HasFileLocalTypes())
687diagnostics.Add(ErrorCode.ERR_FileTypeDisallowedInSignature, Location, param.Type, containingTypeForFileTypeCheck);
709!this.IsNoMoreVisibleThan(extensionParameter.Type, ref useSiteInfo))
711diagnostics.Add(ErrorCode.ERR_BadVisIndexerParam, Location, this, extensionParameter.Type);