コード例 #1
0
        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;
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
 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);
         }
     }
 }