protected override TypeExpression DoResolveAsTypeStep(ParseContext parseContext) { if (ExpressionClass != ExpressionClass.Invalid) { return(this); } ExpressionClass = ExpressionClass.Type; if (!_typeArguments.Resolve(parseContext)) { return(null); } _resolvedTypeParameters = _openType.GetGenericArguments(); var resolvedTypes = _typeArguments.ResolvedTypes; if (resolvedTypes.Length != _resolvedTypeParameters.Length) { parseContext.ReportError( CompilerErrors.InvalidNumberOfTypeArguments, Span, TypeManager.GetCSharpName(_openType), TypeManager.GetNumberOfTypeArguments(_openType)); return(null); } // Now bind the parameters Type = _openType.MakeGenericType(resolvedTypes); return(this); }
public override Expression DoResolve(ParseContext parseContext) { var targetResolved = Target.Resolve( parseContext, ResolveFlags.VariableOrValue | ResolveFlags.MethodGroup); if (targetResolved == null) { return(null); } Target = targetResolved; var arguments = Arguments; if (arguments != null) { _arguments.Resolve(parseContext); } _typeArguments.Resolve(parseContext); return(this); }