Ошибка Program142.pas(7) : proc не объявлен в типе b
type
b = class;
a = class
function proc(): b;
begin
//new
writeln(result.proc);
end;
end;
b = class
public
function proc(): a;
begin
end;
end;
begin
end.
type
b = class;
a = class
function proc(): b;
end;
b = class
public function proc(): a;
begin
end;
end;
function a.proc(): b;
begin
//new
writeln(result.proc);
end;
begin
end.
unit some_name;
interface
type
a = class;
b = class;
a = class
public function proc(): b;
end;
b = class
public function proc(): a;
end;
implementation
function a.proc(): b;
begin
//new
writeln(result.proc);
end;
function b.proc(): b;
begin
end;
end.
Это не баг и вам уже выше об этом написали. В паскале все имена должны описываться до использования. Исключение: методы класса, которые реализуются прямо в описании класса.
А наезды по поводу отсутствия тестирования мягко говоря необоснованные. Все тесты есть в папке TestSuite и прогоняются перед каждым коммитом.
Этот проект бесплатный и с открытым кодом, нанять профессиональных тестеров денег никто не выделит. Расчёт тут на то что тестерами будут те кому надо, те кто пользуются.
Почему при попытке переименовать TFunction получаю:
TFunction = function(TFunction
?
type
TFunction = function(x: real): real;
function Integrate(a, b: real; c: integer; func: TFunction): real;
begin
var s := (b - a) / c;
for var i := 0 to c - 1 do
Result += Abs(func(a + i * s));
Result *= s;
end;
begin
Writeln(Integrate(-1, 1, 100, Sin));
end.
Прошу исправить этот баг. Мешает работать. И еще, когда вставляешь код иногда сворачивание кода не работает. Только после внесения какого либо изменения начинает работать.
Кстати, почему Intellisence плохо работает? Иногда вообще не работает даже на однострочных программах.