示例#1
0
        public static ITypeInfo InferType(TypeNode node, SemanticContext context)
        {
            var inference = new TypeInference(context);

            node.Accept(inference);
            return(inference._type);
        }
示例#2
0
 /// <summary>
 /// Maps the given type.
 /// </summary>
 /// <param name="typeNode">The type node to map.</param>
 /// <returns>The mapped type entry.</returns>
 private Type MapType(TypeNode typeNode)
 {
     if (typeNode == null)
     {
         throw new ArgumentNullException(nameof(typeNode));
     }
     if (!mapping.TryGetValue(typeNode, out Type entry))
     {
         var visitor = new TypeVisitor(this);
         typeNode.Accept(visitor);
         entry = mapping[typeNode];
     }
     return(entry);
 }
 public void Visit(TypeNode node)
 {
     node.Accept(_visitor);
 }