uio-jpt/pt-compiler — Issue #17: Bruk av tsuper.m() uten t-override av m
Author: eyvindwa
Created: 2012-02-24 10:40:17+00:00
State: open

Eksempel:

template T { class A { void m() { ... } } }

package P {
inst T;
class A adds {
void f() { tsuper.m(); }
}
}

Her må oversettelsen til Java gjøres på følgende måte:

* En ny metode med et internt navn m’ og samme signatur som m opprettes. Hele innholdet i m flyttes over i m’.
* I m legges det inn et kall på m’ hvor de formelle parameterne til m brukes som aktuelle parametere til m’, og dette kallet er den eneste kodelinjen som skal stå i kroppen til m.
* Alle kall på tsuper.m(…) gjøres om til kall på m’(…)

Et relatert tilfelle: dersom det finnes en t-override av en metode m(…), men ingen kall på tsuper.m(…), så kan hele den opprinnelige m slettes, og dermed bare erstattes av den nye definisjonen.