Как заставить Delphi выполнять еще более строгую проверка типов?

Напрмер - я создаю пользовательский тип, унаследованный от double и могу передавать его любым функциям, принимающим параметр типа double. Как заставить компилятор проводить более строгую проверку типов и выдавать предупреждение в таких случаях?
type TStrongType = type Double;
type TWeakType = Double;

procedure AddWeakType(var d : TWeakType);
begin
        d := d + 1;
end;

procedure AddStrongType(var d : TStrongType);
begin
        d := d + 1;
end;

procedure AddDoubleType(var d : Double);
begin
        d := d + 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
        d : Double;
        s : TStrongType;
        w : TWeakType;
begin
        AddDoubleType(d); {compiles fine}
        AddDoubleType(w); {compiles fine}
        AddDoubleType(s); {<- compile error}
        AddDoubleType(double(s)); {compiles fine}
        AddWeakType(d); {compiles fine}
        AddWeakType(w); {compiles fine}
        AddWeakType(s); {<- compile error}
        AddWeakType(TWeakType(s)); {compiles fine}
        AddStrongType(d); {<- compile error}
        AddStrongType(TStrongType(d)); {compiles fine}
        AddStrongType(w); {<- compile error}
        AddStrongType(TStrongType(w)); {compiles fine}
        AddStrongType(s); {compiles fine}
end;