Fixes for binding
This commit is contained in:
parent
599c535ddd
commit
07043e1ab4
|
@ -289,7 +289,8 @@ namespace Upsilon.Binder
|
|||
{
|
||||
if (udSymbol.Parent != null )
|
||||
{
|
||||
if (udSymbol.Parent.Properties.TryGetValue(resolved.Name, out var ubProperty) && ubProperty is UserDataBoundMethod ubMethod)
|
||||
if (udSymbol.Parent.Properties.TryGetValue(resolved.Name.ToLowerInvariant(),
|
||||
out var ubProperty) && ubProperty is UserDataBoundMethod ubMethod)
|
||||
{
|
||||
returnType = ubMethod.ResultType;
|
||||
var (isValid, error, wrongParameter) = ubMethod.ValidateParameters(parameters.ToImmutable());
|
||||
|
|
|
@ -9,17 +9,19 @@ namespace Upsilon.Binder.VariableSymbols
|
|||
{
|
||||
public class InternalFunctionParameter
|
||||
{
|
||||
public InternalFunctionParameter(Type type, bool isOptional)
|
||||
public InternalFunctionParameter(string name, Type type, bool isOptional)
|
||||
{
|
||||
ValidTypes = type;
|
||||
IsOptional = isOptional;
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public string Name { get; }
|
||||
public Type ValidTypes { get; }
|
||||
public bool IsOptional { get; }
|
||||
}
|
||||
|
||||
private InternalFunctionParameter[] FunctionParameters { get; }
|
||||
public InternalFunctionParameter[] FunctionParameters { get; }
|
||||
private int MinimalParametersRequired { get; }
|
||||
|
||||
public InternalFunctionVariableSymbol(string name, bool local, Type resultType, InternalFunctionParameter[] functionParameters)
|
||||
|
|
|
@ -63,7 +63,7 @@ namespace Upsilon.StandardLibraries
|
|||
func.Value.MethodInfoFunction.GetParameterInfo().Select(typeInfo =>
|
||||
{
|
||||
var derivedType = DeriveValidTypes(typeInfo.Type);
|
||||
return new InternalFunctionVariableSymbol.InternalFunctionParameter(derivedType,
|
||||
return new InternalFunctionVariableSymbol.InternalFunctionParameter(func.Key, derivedType,
|
||||
typeInfo.IsOptional);
|
||||
}).ToArray())
|
||||
{
|
||||
|
@ -123,7 +123,7 @@ namespace Upsilon.StandardLibraries
|
|||
for (var i = 0; i < genericParameters.Length - 1; i++)
|
||||
{
|
||||
var t = DeriveValidTypes(genericParameters[i]);
|
||||
parameters.Add(new InternalFunctionVariableSymbol.InternalFunctionParameter(t, false));
|
||||
parameters.Add(new InternalFunctionVariableSymbol.InternalFunctionParameter(name, t, false));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ namespace Upsilon.StandardLibraries
|
|||
var genericParameters = type.GetGenericArguments();
|
||||
return new InternalFunctionVariableSymbol(name, true, Type.Nil,
|
||||
genericParameters.Select(DeriveValidTypes).Select(t =>
|
||||
new InternalFunctionVariableSymbol.InternalFunctionParameter(t, false)).ToArray());
|
||||
new InternalFunctionVariableSymbol.InternalFunctionParameter(name, t, false)).ToArray());
|
||||
}
|
||||
|
||||
public static Type DeriveValidTypes(System.Type type)
|
||||
|
|
Loading…
Reference in New Issue