private static void ResolveFunctionParamIndex(Function function, YamlBindingTransform item) { var mappedParam = (from p in function.Parameters where p.Name == item.Name select p ).SingleOrDefault( ); if (mappedParam == null) { Diagnostics.Error("Function {0} does not contain a parameter named '{1}' declared in map", function, item.Name); return; } item.ParameterIndex = mappedParam.Index; }
private void ResolveFunctionTypeParamIndex(IReadOnlyDictionary <string, FunctionType> functionPointerMap, YamlBindingTransform item) { if (!functionPointerMap.TryGetValue(item.Name, out FunctionType signature)) { Diagnostics.Error("Function {0} declared in map does not exist in source as a function or delegate", Name); } else { var mappedParam = (from p in signature.Parameters where p.Name == item.Name select p ).SingleOrDefault( ); if (mappedParam == null) { Diagnostics.Error("Function {0} does not contain a parameter named '{1}' declared in map", Name, item.Name); } item.ParameterIndex = mappedParam.Index; } }
private void ResolveParamIndex(ASTContext context, IReadOnlyDictionary <string, FunctionType> functionPointerMap, YamlBindingTransform item) { if (!item.ParameterIndex.HasValue) { var function = context.FindFunction(Name).SingleOrDefault( ); if (function != null) { ResolveFunctionParamIndex(function, item); } else { ResolveFunctionTypeParamIndex(functionPointerMap, item); } } }