Сегодня налетел на такое:
program nested_exception_class;
{$APPTYPE CONSOLE}
{$R *.res}
uses
SysUtils;
Type
EUnitException = Class(Exception);
//
TMyRec = Record
Type
Exception = Class(EUnitException);
EOtherException = Class(Exception);
End;
//
begin
// ожидается: TMyRec.Exception, в действительности: Exception
WriteLn(TMyRec.EOtherException.ClassParent.ClassName);
// утверждение должно быть истинным, но нарушается
Assert(TMyRec.EOtherException.ClassParent = TMyRec.Exception);
end.
Компилятор выбрал неправильного родителя для моего класса (EOtherException), хотя в редакторе, если кликнуть (Ctrl+Click) по, родителю (Class(Exception)) переход происходит к “правильному” классу (TMyRec.Exception). Баг воспроизводится в Delphi 2006, Delphi XE2 Update 2, промежуточные не проверял, но думаю и там воспроизведется.
4 комментария:
QC Report #101641.
Я уже отрепортил http://qc.embarcadero.com/wc/qcmain.aspx?d=101545. Нужно было мне сразу об этом написать.
Я искал на QC перед отправкой своего отчёта, но поиск ничего не нашёл. Видимо, первый отчёт не проиндексировался.
Отправить комментарий