Ejemplo n.º 1
0
        public static string GetId(this Parameter parameter, ParametersMember member)
        {
            var id = new StringBuilder();

            id.AppendFormat("{0}#", member.GetId());
            id.Append(Array.IndexOf(member.Parameters, parameter));
            return(id.ToString());
        }
Ejemplo n.º 2
0
		IEnumerable<DataType> CalcImportsForExternBlock(ParametersMember func)
		{
		    var ret = new List<DataType> {func.DeclaringType};
		    ret.AddRange(CalcImportsForExternBlock(func.ReturnType));
			foreach (var arg in func.Parameters)
				if (arg.Type.IsGenericParameterization)
					foreach (var genericParam in arg.Type.GenericArguments)
						ret.AddRange(CalcImportsForExternBlock(genericParam));
			return ret;
		}
Ejemplo n.º 3
0
        void ValidateMethod(ParametersMember f, IEssentials essentials)
        {
            if (f.Parameters.Any(x => x.Type.IsGenericType))
            {
                throw new Exception("Foreign Code Limitation: The compiler cannot currently convert generics arguments to a Java types.\nFound in: " + f.FullName);
            }
            if (f.ReturnType.IsGenericType)
            {
                throw new Exception("Foreign Code Limitation: The compiler cannot currently handle generics return types.\nFound in: " + f.FullName);
            }

            foreach (var p in f.Parameters)
            {
                if ((p.Type.IsEnum ? p.Type.Base : p.Type) == _essentials.Byte)
                {
                    throw new Exception("Foreign Code Limitation: Method '" + f.FullName + "' has an argument '" + p.UnoName + "' of type byte. Java does not support byte. It does however support sbyte.");
                }
            }

            if ((f.ReturnType.IsEnum ? f.ReturnType.Base : f.ReturnType) == _essentials.Byte)
            {
                throw new Exception("Foreign Code Limitation: Method '" + f.FullName + "' has a return type of byte. Java does not support byte. It does however support sbyte.");
            }
        }