public override bool VisitAlias(TypeAliasAST alias) { var other = _other as TypeAliasAST; if (other == null) { return(false); } return(other.TypeId == alias.TypeId && other.AliasToWho == alias.AliasToWho); }
public override bool VisitAlias(TypeAliasAST alias) { //se asume que no habra problema alias.ReturnType = TigerType.GetType <NoType>(); //la clase base verifica q el id del type sea valido //aqui si se ve q el return true hace falta if (VisitTypeDeclaration(alias)) { TigerType tt; //se verifica que exista el tipo del cual se esta creando un alias if (_scope.HasType(alias.AliasToWho, out tt) != ScopeLocation.NotDeclared) { //se anade una nueva entrada del mismo type, lo q con otro id _scope.AddAlias(alias.TypeId, alias.AliasToWho); return(true); } int savedErrorPos = _errorListener.Count; //manejador de evento _scope.TypeAdded += (sender, args) => { if (args.TypeName == alias.AliasToWho) { _scope.AddType(alias.TypeId, args.NewType); } }; //manejador de evento _scope.FinalizeScope += (sender, args) => { if (sender.HasType(alias.AliasToWho) == ScopeLocation.NotDeclared) { _errorListener.Insert(savedErrorPos, AnalysisError.TypeIsNotDefined(alias, alias.AliasToWho)); alias.ReturnType = TigerType.GetType <ErrorType>(); } }; return(true); } return(false); }
public abstract T VisitAlias(TypeAliasAST alias);
public override Unit VisitAlias(TypeAliasAST alias) { throw new System.NotImplementedException(); }