protected override void VisitTypeSyntax(TypeSyntax pNode) { //TODO i need to have <T> after methods so we can define our generic types and propagate them foreach (var a in pNode.GenericArguments) { Visit(a); } var result = _unit.FromString(pNode, out SmallType type); switch (result) { //case Compiler.FindResult.NotFound: // CompilerErrors.UndeclaredType(name, pNode.Span); // break; case Compiler.FindResult.IncorrectScope: CompilerErrors.TypeNotInScope(SyntaxHelper.GetFullTypeName(pNode), pNode.Span); break; } if (type.IsGenericType) { type = _unit.MakeConcreteType(type, SyntaxHelper.SelectNodeTypes(pNode.GenericArguments)); } pNode.SetType(type); if (pNode.Namespace != null && !_unit.HasReference(pNode.Namespace.Value)) { CompilerErrors.NamespaceNotDefined(pNode.Namespace, pNode.Span); } }