Пример #1
0
        private void ComputeParameters()
        {
            if (_lazyParametersAndDiagnostics != null)
            {
                return;
            }

            var         diagnostics = DiagnosticBag.GetInstance();
            SyntaxToken arglistToken;

            foreach (var param in _syntax.ParameterList.Parameters)
            {
                ReportAnyAttributes(diagnostics, param.AttributeLists);
            }

            var parameters = ParameterHelpers.MakeParameters(
                _binder,
                this,
                _syntax.ParameterList,
                arglistToken: out arglistToken,
                diagnostics: diagnostics,
                allowRefOrOut: true,
                allowThis: true,
                beStrict: true);

            var isVararg = (arglistToken.Kind() == SyntaxKind.ArgListKeyword);

            if (IsAsync && diagnostics.IsEmptyWithoutResolution)
            {
                SourceMemberMethodSymbol.ReportAsyncParameterErrors(parameters, diagnostics, this.Locations[0]);
            }
            var value = new ParametersAndDiagnostics(parameters, isVararg, diagnostics.ToReadOnlyAndFree());

            Interlocked.CompareExchange(ref _lazyParametersAndDiagnostics, value, null);
        }
Пример #2
0
        private void ComputeParameters()
        {
            if (_lazyParametersAndDiagnostics != null)
            {
                return;
            }

            var diagnostics = DiagnosticBag.GetInstance();
            SyntaxToken arglistToken;
            var parameters = ParameterHelpers.MakeParameters(_binder, this, _syntax.ParameterList, true, out arglistToken, diagnostics, true);
            var isVararg = (arglistToken.Kind() == SyntaxKind.ArgListKeyword);
            if (IsAsync && diagnostics.IsEmptyWithoutResolution)
            {
                SourceMemberMethodSymbol.ReportAsyncParameterErrors(parameters, diagnostics, this.Locations[0]);
            }
            var value = new ParametersAndDiagnostics(parameters, isVararg, diagnostics.ToReadOnlyAndFree());
            Interlocked.CompareExchange(ref _lazyParametersAndDiagnostics, value, null);
        }