Binder\Binder.CapturedParametersFinder.cs (2)
167if (isTypeOrValueReceiver(enclosingBinder, id, parameter.Type, out SyntaxNode? memberAccessNode, out string? memberName, out int targetMemberArity, out bool invoked))
170if (TreatAsInstanceMemberAccess(enclosingBinder, parameter.Type, memberAccessNode, memberName, targetMemberArity, invoked, lookupResult))
Binder\Binder_Conversions.cs (12)
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;
1538var conversion = conversions.ConvertExtensionMethodThisArg(constructed.Parameters[0].Type, receiverType, ref useSiteInfo, isMethodGroupConversion: false);
1888if (method.Parameters is not [{ RefKind: RefKind.None, Type: var parameterType }]
1906var spanTypeArg = ((NamedTypeSymbol)methodWithTargetTypeParameters.Parameters[0].Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
2848(Conversions.ConvertExtensionMethodThisArg(GetReceiverParameter(method)!.Type, receiverOpt!.Type, ref useSiteInfo, isMethodGroupConversion: true).Exists && useSiteInfo.Diagnostics.IsNullOrEmpty()));
2872source: delegateParameter.Type,
2873destination: 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;
10415original.Parameters[0] is { Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.None })
10515original.Parameters[0] is { Type.SpecialType: SpecialType.System_Int32, RefKind: RefKind.None } &&
10516original.Parameters[1] is { Type.SpecialType: SpecialType.System_Int32, 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)
349new BoundLiteral(parameterSyntax, defaultValue, Type));
403if (Type.IsNullableType())
405convertedExpression = binder.GenerateConversionForAssignment(Type.GetNullableUnderlyingType(),
877return RefKind != RefKind.None || (HasParamsModifier && Type.IsRefLikeOrAllowsRefLikeType());
987if (this.Type.IsReferenceType)
1011else if (!compilation.Conversions.ClassifyConversionFromType((TypeSymbol)arg.TypeInternal, this.Type, isChecked: false, ref useSiteInfo).Kind.IsImplicitConversion())
1220if (!Type.Equals(this.DeclaringCompilation.GetWellKnownType(WellKnownType.System_Threading_CancellationToken)))
1243if (Type is not NamedTypeSymbol { IsInterpolatedStringHandlerType: true } handlerType)
1246diagnostics.Add(ErrorCode.ERR_TypeIsNotAnInterpolatedStringHandlerType, arguments.AttributeSyntaxOpt.Location, Type);
1505public sealed override bool IsParamsArray => (_parameterSyntaxKind & ParameterFlags.ParamsParameter) != 0 && this.Type.IsSZArray();
1507public sealed override bool IsParamsCollection => (_parameterSyntaxKind & ParameterFlags.ParamsParameter) != 0 && !this.Type.IsSZArray();
1535if (DeclaredScope == ScopedKind.ScopedValue && !Type.IsErrorOrRefLikeOrAllowsRefLikeType())
1552var collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(DeclaringCompilation, Type, out TypeWithAnnotations elementTypeWithAnnotations);
1566binder.TryGetCollectionIterationType(syntax, Type, out elementTypeWithAnnotations);
1574if (!binder.HasCollectionExpressionApplicableConstructor(syntax, Type, out MethodSymbol? constructor, isExpanded: out _, diagnostics, isParamsModifierValidation: true))
1584if (!binder.HasCollectionExpressionApplicableAddMethod(syntax, Type, out ImmutableArray<MethodSymbol> addMethods, diagnostics))
1593diagnostics.Add(ErrorCode.ERR_ParamsCollectionExtensionAddMethod, syntax, Type);
1624binder.TryGetCollectionIterationType(syntax, Type, out elementTypeWithAnnotations);
1632MethodSymbol? collectionBuilderMethod = binder.GetAndValidateCollectionBuilderMethod(syntax, (NamedTypeSymbol)Type, diagnostics, elementType: out _);
Symbols\Source\SourcePropertySymbol.cs (6)
683if (!IsExplicitInterfaceImplementation && !this.IsNoMoreVisibleThan(param.Type, ref useSiteInfo))
685diagnostics.Add(ErrorCode.ERR_BadVisIndexerParam, Location, this, param.Type);
687else if (param.Type.HasFileLocalTypes() && !containingTypeForFileTypeCheck.HasFileLocalTypes())
689diagnostics.Add(ErrorCode.ERR_FileTypeDisallowedInSignature, Location, param.Type, containingTypeForFileTypeCheck);
711!this.IsNoMoreVisibleThan(extensionParameter.Type, ref useSiteInfo))
713diagnostics.Add(ErrorCode.ERR_BadVisIndexerParam, Location, this, extensionParameter.Type);