protected override void VisitCastSyntax(CastSyntax pNode) { base.VisitCastSyntax(pNode); if (!pNode.FromType.IsAssignableFrom(pNode.Type) && (!IsStandard(pNode.FromType) || !IsStandard(pNode.Type))) { switch (_unit.CastExists(pNode.FromType, pNode.Type, out MethodDefinition d)) { case Compiler.FindResult.Found: pNode.SetMethod(d); break; case Compiler.FindResult.NotFound: CompilerErrors.CastDoesNotExist(pNode.FromType, pNode.Type, pNode.Span); break; case Compiler.FindResult.IncorrectScope: CompilerErrors.CastNotIsScope(pNode.FromType, pNode.Type, pNode.Span); break; } } }