ReportTypeArgsNotAllowedError() public static method

public static ReportTypeArgsNotAllowedError ( SymbolLoader symbolLoader, int arity, Microsoft.CSharp.RuntimeBinder.Errors.ErrArgRef argName, Microsoft.CSharp.RuntimeBinder.Errors.ErrArgRef argKind ) : void
symbolLoader SymbolLoader
arity int
argName Microsoft.CSharp.RuntimeBinder.Errors.ErrArgRef
argKind Microsoft.CSharp.RuntimeBinder.Errors.ErrArgRef
return void
Exemplo n.º 1
0
        /******************************************************************************
        *   Reports errors. Only call this if FError() is true.
        ******************************************************************************/
        public void ReportErrors()
        {
            Debug.Assert(FError());

            // Report error.
            // NOTE: If the definition of FError changes, this code will need to change.
            Debug.Assert(!_swtFirst || _swtAmbig);

            if (_swtFirst)
            {
                // Ambiguous lookup.
                GetErrorContext().ErrorRef(ErrorCode.ERR_AmbigMember, _swtFirst, _swtAmbig);
            }
            else if (_swtInaccess)
            {
                if (!_swtInaccess.Sym.isUserCallable() && ((_flags & MemLookFlags.UserCallable) != 0))
                {
                    GetErrorContext().Error(ErrorCode.ERR_CantCallSpecialMethod, _swtInaccess);
                }
                else
                {
                    GetSemanticChecker().ReportAccessError(_swtInaccess, _symWhere, _typeQual);
                }
            }
            else if ((_flags & MemLookFlags.Ctor) != 0)
            {
                if (_arity > 0)
                {
                    GetErrorContext().Error(ErrorCode.ERR_BadCtorArgCount, _typeSrc.getAggregate(), _arity);
                }
                else
                {
                    GetErrorContext().Error(ErrorCode.ERR_NoConstructors, _typeSrc.getAggregate());
                }
            }
            else if ((_flags & MemLookFlags.Operator) != 0)
            {
                GetErrorContext().Error(ErrorCode.ERR_NoSuchMember, _typeSrc, _name);
            }
            else if ((_flags & MemLookFlags.Indexer) != 0)
            {
                GetErrorContext().Error(ErrorCode.ERR_BadIndexLHS, _typeSrc);
            }
            else if (_swtBad)
            {
                GetErrorContext().Error((_flags & MemLookFlags.MustBeInvocable) != 0 ? ErrorCode.ERR_NonInvocableMemberCalled : ErrorCode.ERR_CantCallSpecialMethod, _swtBad);
            }
            else if (_swtBogus)
            {
                ReportBogus(_swtBogus);
            }
            else if (_swtBadArity)
            {
                int cvar;

                switch (_swtBadArity.Sym.getKind())
                {
                case SYMKIND.SK_MethodSymbol:
                    Debug.Assert(_arity != 0);
                    cvar = _swtBadArity.Sym.AsMethodSymbol().typeVars.size;
                    GetErrorContext().ErrorRef(cvar > 0 ? ErrorCode.ERR_BadArity : ErrorCode.ERR_HasNoTypeVars, _swtBadArity, new ErrArgSymKind(_swtBadArity.Sym), cvar);
                    break;

                case SYMKIND.SK_AggregateSymbol:
                    cvar = _swtBadArity.Sym.AsAggregateSymbol().GetTypeVars().size;
                    GetErrorContext().ErrorRef(cvar > 0 ? ErrorCode.ERR_BadArity : ErrorCode.ERR_HasNoTypeVars, _swtBadArity, new ErrArgSymKind(_swtBadArity.Sym), cvar);
                    break;

                default:
                    Debug.Assert(_arity != 0);
                    ExpressionBinder.ReportTypeArgsNotAllowedError(GetSymbolLoader(), _arity, _swtBadArity, new ErrArgSymKind(_swtBadArity.Sym));
                    break;
                }
            }
            else
            {
                if ((_flags & MemLookFlags.ExtensionCall) != 0)
                {
                    GetErrorContext().Error(ErrorCode.ERR_NoSuchMemberOrExtension, _typeSrc, _name);
                }
                else
                {
                    GetErrorContext().Error(ErrorCode.ERR_NoSuchMember, _typeSrc, _name);
                }
            }
        }