public override Expression DoResolve(ParseContext parseContext) { Expression = Expression.Resolve(parseContext); return this; }
public override Expression DoResolve(ParseContext parseContext) { _initializer = _initializer.Resolve(parseContext); return(this); }
public override Expression DoResolve(ParseContext parseContext) { return((_expression == null) ? this : _expression.Resolve(parseContext)); }
public override Expression DoResolve(ParseContext parseContext) { _target = _target.Resolve(parseContext); _arguments.Resolve(parseContext); var typeExpression = _target as TypeExpression; if (typeExpression != null) { var indexers = typeExpression.Type .GetProperties(BindingFlags.Static | BindingFlags.Public) .Where(o => o.Name == "Item") .Select(o => o.GetGetMethod(false)) .Where(o => o.GetParameters().Length != 0) .ToArray(); if (indexers.Length == 0) { parseContext.ReportError( CompilerErrors.MissingIndexerValue, Span, typeExpression.GetSignatureForError()); return(null); // TODO } using (parseContext.Set(ParseContext.Options.InvokeSpecialName)) { return(new InvokeExpression( new MethodGroupExpression( indexers, typeExpression.Type, Span), _arguments).DoResolve(parseContext)); } } var propertyExpression = _target as PropertyExpression; if (propertyExpression != null) { var indexers = propertyExpression.Type .GetProperties(BindingFlags.Instance | BindingFlags.Public) .Where(o => o.Name == "Item") .Select(o => o.GetGetMethod(false)) .Where(o => o.GetParameters().Length != 0) .ToArray(); if (indexers.Length == 0) { parseContext.ReportError( CompilerErrors.MissingIndexerValue, Span, propertyExpression.Type.FullName); return(null); // TODO } using (parseContext.Set(ParseContext.Options.InvokeSpecialName)) { return(new InvokeExpression( new MethodGroupExpression( indexers, propertyExpression.Type, Span) { InstanceExpression = _target }, _arguments).DoResolve(parseContext)); } } _arguments.Resolve(parseContext); return(this); }