RX0031

Dominio: Motor

Mensaje de error

se ofreció a una referencia una coordenada que %s no posee

En el mensaje, %s marca un valor que el motor completa cuando lanza el error.

La historia

Una referencia apuntó a un lugar donde no hay nada, y el motor lo detectó. En rush, un verbo de ejecución no lleva datos dentro: guarda una referencia, una coordenada que dice dónde mirar. Pero una coordenada que no nombra a nadie no es una referencia: es un campo con forma de puntero y una palabra escrita encima. Por eso, cuando se guarda una referencia, el motor va a la población que sería su dueña y busca esa coordenada. Si esa población nunca colocó nada allí, la rechaza. La búsqueda es lo que permite comprobarlo: si el motor solo hiciera aritmética de direcciones, aceptaría cualquier dirección dentro del rango y la llamaría inquilino. Hay una regla extra: una referencia hacia el ExecHeap solo puede apuntar a un inquilino anterior. Gracias a eso, las referencias entre subexpresiones forman un grafo sin ciclos, y no hay que vigilar autorreferencias. El mensaje nombra a la población. Qué hacer: construye siempre la referencia a partir de una coordenada que esa población te dio. Una dirección inventada no abre ninguna puerta.

Texto del catálogo de errores del motor de Rush.