Uso qui il termine "riferimento" come nel mondo C ++, non come in C # (per esempio). Uso la sintassi non C ++ di proposito - questa è una domanda generale, non riguardo questa particolare implementazione.
Avvio di qualcosa come C ++ di nuovo mi piacerebbe fare regole e convalida per evitare un caso in cui il riferimento sopravvive alla sua origine. Ad esempio questo sembra un utilizzo valido:
def foo(x ref int) ref int
return x;
end
Ma questo è sbagliato:
def bar() ref int
x int = 5;
return x;
end
perché in bar
esempio x
è messo in pila e quando viene restituito un riferimento ad esso lo stack è già andato.
Finora non ho trovato la descrizione dell'algoritmo di analisi, ecco perché mi sto chiedendo: cosa consentire (ad esempio, definire i parametri come riferimenti) e come controllare quando l'uso viene abusato creando riferimenti ciondolanti?