string JavaMethodArgs(IParametersEntity f, bool types = true) { if (types) { var args = string.Join(",", f.Parameters.Select(_convert.Param.UnoToJavaParameter)); if (!f.IsStatic) { if (f.Parameters.Length > 0) { args = "final UnoObject _this, " + args; } else { args = "final UnoObject _this"; } } return(args); } else { var args = string.Join(",", f.Parameters.Select(x => x.UnoName)); if (!f.IsStatic) { if (f.Parameters.Length > 0) { args = "_this, " + args; } else { args = "_this"; } } return(args); } }
void VerifyArguments(Source src, IParametersEntity member, params Expression[] args) { if (args.Length != member.Parameters.Length) { Log.Error(src, ErrorCode.I4042, "Arguments do not match method signature. " + member.Quote() + " requires " + member.Parameters.Length + ", but " + args.Length + " were given"); } else { for (int i = 0; i < args.Length; i++) { if (args[i] is AddressOf && (args[i] as AddressOf).AddressType == AddressType.Ref && member.Parameters[i].Modifier != ParameterModifier.Ref) { Log.Error(src, ErrorCode.I0000, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " was unexpectedly passed using 'ref' modifier"); } else if (args[i] is AddressOf && (args[i] as AddressOf).AddressType == AddressType.Out && member.Parameters[i].Modifier != ParameterModifier.Out) { Log.Error(src, ErrorCode.I0000, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " was unexpectedly passed using 'out' modifier"); } else if (args[i] is AddressOf && !member.Parameters[i].IsReference) { Log.Error(src, ErrorCode.I0000, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " was unexpectedly passed as reference"); } else if (member.Parameters[i].Modifier == ParameterModifier.Ref && !(args[i] is AddressOf && (args[i] as AddressOf).AddressType == AddressType.Ref)) { Log.Error(src, ErrorCode.I0000, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " was not passed using required 'ref' modifier"); } else if (member.Parameters[i].Modifier == ParameterModifier.Out && !(args[i] is AddressOf && (args[i] as AddressOf).AddressType == AddressType.Out)) { Log.Error(src, ErrorCode.I0000, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " was not passed using required 'out' modifier"); } else if (member.Parameters[i].IsReference && !(args[i] is AddressOf)) { Log.Error(src, ErrorCode.I0000, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " was not passed as reference"); } else if (!args[i].ReturnType.Equals(member.Parameters[i].Type)) { Log.Error(src, ErrorCode.I4043, "Arguments do not match method signature. Argument #" + (i + 1) + " to " + member.Quote() + " has an incompatible type " + args[i].ReturnType.Quote() + "."); } } } }
public static bool CompareParametersEqualOrSubclassOf(this IParametersEntity a, IParametersEntity b) { return(CompareParametersEqualOrSubclassOf(a.Parameters, b.Parameters)); }
public static bool CompareParameters(this IParametersEntity a, IParametersEntity b) { return(CompareParameters(a.Parameters, b.Parameters)); }
public void WriteParameters(IParametersEntity entity, bool p = false, char left = '(', char right = ')') { WriteParameters(entity.Source, entity.Parameters, p, left, right); }
public void WriteArguments(IParametersEntity entity, Expression[] args, bool p = false, char left = '(', char right = ')') { WriteArguments(entity.Parameters, args, p, left, right); }