public static ITypeInfo InferType(TypeNode node, SemanticContext context) { var inference = new TypeInference(context); node.Accept(inference); return(inference._type); }
/// <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); }