bug fix #478
This commit is contained in:
parent
fd05a1ebd0
commit
f2341f845c
|
|
@ -444,206 +444,206 @@ namespace CodeCompletion
|
|||
|
||||
eval_stack.Push(res);
|
||||
}
|
||||
|
||||
public void EvalMult()
|
||||
{
|
||||
RetValue right = eval_stack.Pop();
|
||||
RetValue left = eval_stack.Pop();
|
||||
RetValue res = new RetValue();
|
||||
if (left.prim_val != null && right.prim_val != null)
|
||||
{
|
||||
TypeCode lcode = Type.GetTypeCode(left.prim_val.GetType());
|
||||
TypeCode rcode = Type.GetTypeCode(right.prim_val.GetType());
|
||||
switch (lcode)
|
||||
{
|
||||
case TypeCode.Int32:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (int)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (int)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (int)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (int)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((int)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (int)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (int)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (int)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (int)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)((int)left.prim_val) * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (int)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Double:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (double)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (double)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (double)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (double)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((double)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (double)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (double)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (double)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (double)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (double)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (double)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Byte:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (byte)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (byte)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (byte)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (byte)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((byte)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (byte)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (byte)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (byte)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (byte)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (byte)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (byte)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Int16:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.Int16)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.Int16)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.Int16)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.Int16)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Int16)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.Int16)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.Int16)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.Int16)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.Int16)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)((System.Int16)left.prim_val) * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.Int16)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Int64:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.Int64)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.Int64)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.Int64)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.Int64)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Int64)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.Int64)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.Int64)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.Int64)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.Int64)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.Int64)left.prim_val * (System.Int64)((System.UInt64)right.prim_val); break;
|
||||
case TypeCode.Single : res.prim_val = (System.Int64)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case TypeCode.SByte:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.SByte)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.SByte)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.SByte)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.SByte)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.SByte)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.SByte)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.SByte)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.SByte)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.SByte)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)((System.SByte)left.prim_val) * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.SByte)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt16:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.UInt16)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.UInt16)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.UInt16)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.UInt16)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt16)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.UInt16)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.UInt16)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.UInt16)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.UInt16)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt16)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.UInt16)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt32:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.UInt32)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.UInt32)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.UInt32)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.UInt32)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt32)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.UInt32)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.UInt32)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.UInt32)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.UInt32)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt32)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.UInt32)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt64:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.UInt64)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)((int)right.prim_val); break;
|
||||
case TypeCode.Double : res.prim_val = (System.UInt64)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (long)((System.UInt64)left.prim_val) * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt64)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)((System.Int16)right.prim_val); break;
|
||||
case TypeCode.SByte : res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)((sbyte)right.prim_val); break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.UInt64)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.UInt64)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.UInt64)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Single:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.Single)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.Single)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.Single)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.Single)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Single)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.Single)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.Single)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.Single)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.Single)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.Single)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.Single)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
eval_stack.Push(res);
|
||||
}
|
||||
|
||||
public void EvalMult()
|
||||
{
|
||||
RetValue right = eval_stack.Pop();
|
||||
RetValue left = eval_stack.Pop();
|
||||
RetValue res = new RetValue();
|
||||
if (left.prim_val != null && right.prim_val != null)
|
||||
{
|
||||
TypeCode lcode = Type.GetTypeCode(left.prim_val.GetType());
|
||||
TypeCode rcode = Type.GetTypeCode(right.prim_val.GetType());
|
||||
switch (lcode)
|
||||
{
|
||||
case TypeCode.Int32:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (int)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (int)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (int)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (int)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((int)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (int)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (int)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (int)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (int)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.UInt64)((int)left.prim_val) * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (int)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Double:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (double)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (double)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (double)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (double)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((double)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (double)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (double)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (double)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (double)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (double)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (double)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Byte:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (byte)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (byte)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (byte)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (byte)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((byte)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (byte)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (byte)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (byte)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (byte)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (byte)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (byte)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Int16:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.Int16)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.Int16)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (System.Int16)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (System.Int16)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Int16)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.Int16)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (System.Int16)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.Int16)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.Int16)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.UInt64)((System.Int16)left.prim_val) * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (System.Int16)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Int64:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.Int64)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.Int64)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (System.Int64)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (System.Int64)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Int64)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.Int64)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (System.Int64)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.Int64)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.Int64)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.Int64)left.prim_val * (System.Int64)((System.UInt64)right.prim_val); break;
|
||||
case TypeCode.Single: res.prim_val = (System.Int64)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case TypeCode.SByte:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.SByte)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.SByte)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (System.SByte)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (System.SByte)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.SByte)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.SByte)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (System.SByte)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.SByte)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.SByte)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.UInt64)((System.SByte)left.prim_val) * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (System.SByte)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt16:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.UInt16)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.UInt16)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (System.UInt16)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (System.UInt16)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt16)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.UInt16)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (System.UInt16)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.UInt16)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.UInt16)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.UInt16)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (System.UInt16)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt32:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.UInt32)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.UInt32)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (System.UInt32)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (System.UInt32)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt32)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.UInt32)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (System.UInt32)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.UInt32)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.UInt32)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.UInt32)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (System.UInt32)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt64:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.UInt64)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)((int)right.prim_val); break;
|
||||
case TypeCode.Double: res.prim_val = (System.UInt64)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (long)((System.UInt64)left.prim_val) * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt64)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)((System.Int16)right.prim_val); break;
|
||||
case TypeCode.SByte: res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)((sbyte)right.prim_val); break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.UInt64)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.UInt64)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.UInt64)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (System.UInt64)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Single:
|
||||
{
|
||||
switch (rcode)
|
||||
{
|
||||
case TypeCode.Byte: res.prim_val = (System.Single)left.prim_val * (byte)right.prim_val; break;
|
||||
case TypeCode.Int32: res.prim_val = (System.Single)left.prim_val * (int)right.prim_val; break;
|
||||
case TypeCode.Double: res.prim_val = (System.Single)left.prim_val * (double)right.prim_val; break;
|
||||
case TypeCode.Int64: res.prim_val = (System.Single)left.prim_val * (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Single)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16: res.prim_val = (System.Single)left.prim_val * (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte: res.prim_val = (System.Single)left.prim_val * (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16: res.prim_val = (System.Single)left.prim_val * (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32: res.prim_val = (System.Single)left.prim_val * (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64: res.prim_val = (System.Single)left.prim_val * (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single: res.prim_val = (System.Single)left.prim_val * (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
eval_stack.Push(res);
|
||||
}
|
||||
|
||||
public void EvalDiv()
|
||||
{
|
||||
|
|
@ -652,192 +652,7 @@ namespace CodeCompletion
|
|||
RetValue res = new RetValue();
|
||||
if (left.prim_val != null && right.prim_val != null)
|
||||
{
|
||||
TypeCode lcode = Type.GetTypeCode(left.prim_val.GetType());
|
||||
TypeCode rcode = Type.GetTypeCode(right.prim_val.GetType());
|
||||
switch (lcode)
|
||||
{
|
||||
case TypeCode.Int32:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (int)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (int)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (int)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (int)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((int)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (int)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (int)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (int)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (int)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)((int)left.prim_val) / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (int)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Double:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (double)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (double)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (double)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (double)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((double)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (double)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (double)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (double)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (double)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (double)left.prim_val / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (double)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Byte:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (byte)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (byte)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (byte)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (byte)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((byte)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (byte)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (byte)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (byte)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (byte)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (byte)left.prim_val / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (byte)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Int16:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.Int16)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.Int16)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.Int16)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.Int16)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Int16)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.Int16)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.Int16)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.Int16)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.Int16)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)((System.Int16)left.prim_val) / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.Int16)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Int64:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.Int64)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.Int64)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.Int64)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.Int64)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Int64)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.Int64)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.Int64)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.Int64)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.Int64)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.Int64)left.prim_val / (System.Int64)((System.UInt64)right.prim_val); break;
|
||||
case TypeCode.Single : res.prim_val = (System.Int64)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case TypeCode.SByte:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.SByte)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.SByte)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.SByte)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.SByte)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.SByte)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.SByte)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.SByte)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.SByte)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.SByte)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)((System.SByte)left.prim_val) / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.SByte)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt16:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.UInt16)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.UInt16)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.UInt16)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.UInt16)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt16)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.UInt16)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.UInt16)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.UInt16)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.UInt16)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt16)left.prim_val / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.UInt16)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt32:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.UInt32)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.UInt32)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.UInt32)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.UInt32)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt32)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.UInt32)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.UInt32)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.UInt32)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.UInt32)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt32)left.prim_val / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.UInt32)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.UInt64:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.UInt64)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.UInt64)left.prim_val / (System.UInt64)((int)right.prim_val); break;
|
||||
case TypeCode.Double : res.prim_val = (System.UInt64)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (long)((System.UInt64)left.prim_val) / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.UInt64)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.UInt64)left.prim_val / (System.UInt64)((System.Int16)right.prim_val); break;
|
||||
case TypeCode.SByte : res.prim_val = (System.UInt64)left.prim_val / (System.UInt64)((sbyte)right.prim_val); break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.UInt64)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.UInt64)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.UInt64)left.prim_val / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.UInt64)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TypeCode.Single:
|
||||
{
|
||||
switch(rcode)
|
||||
{
|
||||
case TypeCode.Byte : res.prim_val = (System.Single)left.prim_val / (byte)right.prim_val; break;
|
||||
case TypeCode.Int32 : res.prim_val = (System.Single)left.prim_val / (int)right.prim_val; break;
|
||||
case TypeCode.Double : res.prim_val = (System.Single)left.prim_val / (double)right.prim_val; break;
|
||||
case TypeCode.Int64 : res.prim_val = (System.Single)left.prim_val / (long)right.prim_val; break;
|
||||
//case TypeCode.String : res.prim_val = ((System.Single)left.prim_val).ToString() + (string)right.prim_val; break;
|
||||
case TypeCode.Int16 : res.prim_val = (System.Single)left.prim_val / (System.Int16)right.prim_val; break;
|
||||
case TypeCode.SByte : res.prim_val = (System.Single)left.prim_val / (sbyte)right.prim_val; break;
|
||||
case TypeCode.UInt16 : res.prim_val = (System.Single)left.prim_val / (System.UInt16)right.prim_val; break;
|
||||
case TypeCode.UInt32 : res.prim_val = (System.Single)left.prim_val / (System.UInt32)right.prim_val; break;
|
||||
case TypeCode.UInt64 : res.prim_val = (System.Single)left.prim_val / (System.UInt64)right.prim_val; break;
|
||||
case TypeCode.Single : res.prim_val = (System.Single)left.prim_val / (System.Single)right.prim_val; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
res.prim_val = Convert.ToDouble(left.prim_val) / Convert.ToDouble(right.prim_val);
|
||||
eval_stack.Push(res);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5124,6 +5124,10 @@ namespace CodeCompletion
|
|||
|
||||
if (this.ctn.IsSubclassOf(cs.ctn))
|
||||
return true;
|
||||
if (implemented_interfaces != null)
|
||||
foreach (TypeScope interf in implemented_interfaces)
|
||||
if (interf.IsEqual(ts))
|
||||
return true;
|
||||
TypeCode code1 = Type.GetTypeCode(this.ctn);
|
||||
TypeCode code2 = Type.GetTypeCode(cs.ctn);
|
||||
bool left = false;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,8 @@ namespace CodeCompletion
|
|||
private static ProcScope char_smeq;
|
||||
private static ProcScope char_gr;
|
||||
private static ProcScope char_greq;
|
||||
|
||||
private static ProcScope char_plus;
|
||||
|
||||
private static ProcScope string_plus;
|
||||
private static ProcScope string_eq;
|
||||
private static ProcScope string_noteq;
|
||||
|
|
@ -798,7 +799,7 @@ namespace CodeCompletion
|
|||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.plus_name, int64_plus);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.minus_name, int64_minus);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.mul_name, int64_mul);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.div_name, int64_div);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.idiv_name, int64_div);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.mod_name, int64_mod);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.shl_name, int64_shl);
|
||||
int_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.shr_name, int64_shr);
|
||||
|
|
@ -968,6 +969,23 @@ namespace CodeCompletion
|
|||
ps.AddParameter(right);
|
||||
char_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.gr_name, ps);
|
||||
|
||||
ps = new ProcScope(PascalABCCompiler.TreeConverter.compiler_string_consts.plus_name, char_type);
|
||||
char_plus = ps;
|
||||
left = new ElementScope(new SymInfo("", SymbolKind.Parameter, ""), char_type, char_type);
|
||||
right = new ElementScope(new SymInfo("", SymbolKind.Parameter, ""), char_type, char_type);
|
||||
ps.return_type = string_type;
|
||||
ps.AddParameter(left);
|
||||
ps.AddParameter(right);
|
||||
char_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.plus_name, ps);
|
||||
|
||||
ps = new ProcScope(PascalABCCompiler.TreeConverter.compiler_string_consts.plus_name, char_type);
|
||||
left = new ElementScope(new SymInfo("", SymbolKind.Parameter, ""), char_type, char_type);
|
||||
right = new ElementScope(new SymInfo("", SymbolKind.Parameter, ""), string_type, char_type);
|
||||
ps.return_type = string_type;
|
||||
ps.AddParameter(left);
|
||||
ps.AddParameter(right);
|
||||
char_type.AddName(PascalABCCompiler.TreeConverter.compiler_string_consts.plus_name, ps);
|
||||
|
||||
//string type
|
||||
ps = new ProcScope(PascalABCCompiler.TreeConverter.compiler_string_consts.plus_name, string_type);
|
||||
string_plus = ps;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
type TRec = record
|
||||
end;
|
||||
|
||||
type
|
||||
myint{@type myint = integer@} = integer;
|
||||
myptr{@type myptr = ^real@} = ^real;
|
||||
|
|
@ -5,6 +8,7 @@ type
|
|||
myset{@type myset = set of char@} = set of char;
|
||||
myarr{@type myarr = array of (integer,integer)@} = array of (integer, integer);
|
||||
myarr2{@type myarr2 = array[,] of List<string>@} = array[,] of List<string>;
|
||||
myrec = TRec;
|
||||
|
||||
begin
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,16 @@ begin
|
|||
var a7{@var a7: string[5];@}: string[5];
|
||||
var a8{@var a8: List<integer>;@} := new List<integer>;
|
||||
var a9{@var a9: real;@} := 2+3.4;
|
||||
var a10{@var a10: List<integer>;@} := a8+2;
|
||||
var a10{@var a10: sequence of integer;@} := a8+2;
|
||||
var a11{@var a11: integer;@} := a8[2];
|
||||
var a12 := sin{@function Sin(x: real): real;@}(2);
|
||||
var a14{@var a14: real;@} := 5/5;
|
||||
var a15{@var a15: integer;@} := 5 div 5;
|
||||
var a16{@var a16: int64;@} := int64(5) div 5;
|
||||
var a17{@var a17: string;@} := 'a'+'b';
|
||||
var a18{@var a18: string;@} := a3+a2;
|
||||
var a19{@var a19: string;@} := a2+a3;
|
||||
var a20{@var a20: List<integer>;@} := a8 + a8;
|
||||
var a21{@var a21: boolean;@} := 2 in a8;
|
||||
writeln(a1{@var a1: integer;@}+a4);
|
||||
end.
|
||||
Loading…
Reference in a new issue