public static List<Error> Resolve(Assignment ass) { var errors = new List<Error>(); IType type, exprType; errors.AddRange(IdentifierResolver.ResloveIdentifierType(ass, ass.Variable, out type)); errors.AddRange(ass.Expr != null ? ExpressionResolver.ResloveExpression(ass, ass.Expr, out exprType) : FunctionInvokeResolver.Resolve(ass, ass.Invoke, out exprType)); if (type.ToString() != exprType.ToString()) errors.Add(new Error(ass.GetSourceIdentifier(), ass.Variable.First(), string.Format(ErrorMessages.TypeMismatch, type.ToString(), exprType.ToString()))); return errors; }
private static void EmitAssignment(Assignment st) { if (st.Invoke == null) Source += string.Join(".", st.Variable.Select(x => x.Text)) + "=" + MakeString(st.Expr) + ";\n"; else { Source += string.Join(".", st.Variable.Select(x => x.Text)) + "="; EmitInvoke(st.Invoke); } }
private static void EmitAssignment(MethodBuilder mb, Assignment ass) { var il = mb.GetILGenerator(); il.Emit(OpCodes.Ret); }