Example #1
0
		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);
		}
Example #3
0
		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);
		}