Expression MakePointerAccess (EmitContext ec, Type t) { if (Arguments.Count != 1){ Error (196, "A pointer must be indexed by only one value"); return null; } Expression p = new PointerArithmetic (Binary.Operator.Addition, Expr, ((Argument) Arguments [0]).Expr, t, loc).Resolve (ec); if (p == null) return null; return new Indirection (p, loc).Resolve (ec); }
Expression MakePointerAccess (ResolveContext ec, Type t) { if (Arguments.Count != 1){ ec.Report.Error (196, loc, "A pointer must be indexed by only one value"); return null; } if (Arguments [0] is NamedArgument) Error_NamedArgument ((NamedArgument) Arguments[0], ec.Report); Expression p = new PointerArithmetic (Binary.Operator.Addition, Expr, Arguments [0].Expr.Resolve (ec), t, loc); return new Indirection (p, loc).Resolve (ec); }
Expression MakePointerAccess () { Type t = Expr.Type; if (t == TypeManager.void_ptr_type){ Error ( 242, "The array index operation is not valid for void pointers"); return null; } if (Arguments.Count != 1){ Error ( 196, "A pointer must be indexed by a single value"); return null; } Expression p = new PointerArithmetic (true, Expr, ((Argument)Arguments [0]).Expr, t, loc); return new Indirection (p, loc); }