Fixed tables in script runtime functions breaking
This commit is contained in:
parent
65ae6f6f06
commit
ee36060dd6
|
@ -47,32 +47,41 @@ namespace Upsilon.BaseTypes.ScriptFunction
|
||||||
for (var index = 0; index < variables.Length; index++)
|
for (var index = 0; index < variables.Length; index++)
|
||||||
{
|
{
|
||||||
var parameter = option.Parameters[index];
|
var parameter = option.Parameters[index];
|
||||||
var parameterSymbol = ((UserDataVariableSymbol) parameter.VariableSymbol);
|
|
||||||
var v = variables[index];
|
var v = variables[index];
|
||||||
if (v == null)
|
if (v == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Type parameterType;
|
System.Type parameterType;
|
||||||
if (v is GenericUserData ud)
|
if (v is GenericUserData ud)
|
||||||
parameterType = ud.GetCSharpType();
|
parameterType = ud.GetCSharpType();
|
||||||
else
|
else
|
||||||
parameterType = v.GetType();
|
parameterType = v.GetType();
|
||||||
|
|
||||||
if (parameterSymbol.BoundTypeDefinition != null)
|
if (parameter.VariableSymbol is UserDataVariableSymbol parameterSymbol)
|
||||||
{
|
{
|
||||||
var validSymbol =
|
if (parameterSymbol.BoundTypeDefinition != null)
|
||||||
parameterSymbol.BoundTypeDefinition.ValidInternalTypes.Any(validType =>
|
{
|
||||||
|
var validSymbol =
|
||||||
|
parameterSymbol.BoundTypeDefinition.ValidInternalTypes.Any(validType =>
|
||||||
|
{
|
||||||
|
var b = validType.IsAssignableFrom(parameterType);
|
||||||
|
if (b) return true;
|
||||||
|
if (parameterType.IsGenericType &&
|
||||||
|
validType.IsAssignableFrom(parameterType.GetGenericTypeDefinition()))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
if (!validSymbol)
|
||||||
{
|
{
|
||||||
var b = validType.IsAssignableFrom(parameterType);
|
isCompatible = false;
|
||||||
if (b) return true;
|
break;
|
||||||
if (parameterType.IsGenericType &&
|
}
|
||||||
validType.IsAssignableFrom(parameterType.GetGenericTypeDefinition()))
|
}
|
||||||
return true;
|
}
|
||||||
return false;
|
else if (parameter.VariableSymbol is TableVariableSymbol tableVariableSymbol)
|
||||||
});
|
{
|
||||||
if (!validSymbol)
|
if (parameterType.GetScriptType() != BaseTypes.Type.Table)
|
||||||
{
|
{
|
||||||
isCompatible = false;
|
isCompatible = false;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue