public static SourceParameterSymbol Create( Binder context, Symbol owner, TypeSymbol parameterType, ParameterSyntax syntax, RefKind refKind, SyntaxToken identifier, int ordinal, bool isParams, bool isExtensionMethodThis, DiagnosticBag diagnostics) { var name = identifier.ValueText; var locations = ImmutableArray.Create<Location>(new SourceLocation(identifier)); if (!isParams && !isExtensionMethodThis && (syntax.Default == null) && (syntax.AttributeLists.Count == 0) && !owner.IsPartialMethod()) { return new SourceSimpleParameterSymbol(owner, parameterType, ordinal, refKind, name, locations); } if (isParams) { // touch the constructor in order to generate proper use-site diagnostics Binder.ReportUseSiteDiagnosticForSynthesizedAttribute(context.Compilation, WellKnownMember.System_ParamArrayAttribute__ctor, diagnostics, identifier.Parent.GetLocation()); } var syntaxRef = syntax.GetReference(); return new SourceComplexParameterSymbol( owner, ordinal, parameterType, refKind, ImmutableArray<CustomModifier>.Empty, false, name, locations, syntaxRef, ConstantValue.Unset, isParams, isExtensionMethodThis); }
internal SourcePrimaryConstructorParameterSymbolWithBackingField( Symbol owner, int ordinal, TypeSymbol parameterType, RefKind refKind, string name, ImmutableArray<Location> locations, ParameterSyntax syntax, ConstantValue defaultSyntaxValue, bool isParams, bool isExtensionMethodThis, DiagnosticBag diagnostics ) : base(owner, ordinal, parameterType, refKind, ImmutableArray<CustomModifier>.Empty, false, name, locations, syntax.GetReference(), defaultSyntaxValue, isParams, isExtensionMethodThis) { bool modifierErrors; var modifiers = SourceMemberFieldSymbol.MakeModifiers(owner.ContainingType, syntax.Identifier, syntax.Modifiers, diagnostics, out modifierErrors, ignoreParameterModifiers: true); backingField = new BackingField(this, modifiers, modifierErrors, diagnostics); }