Ошибки компилятора PascalABC.Net

Вы уже второй человек, заявляющий, что я люблю Фортран. Так вот, на Фортране я писал последний раз программу примерно так в 1982 году. Фортран - это мощнейший инструмент для расчетов. А делать подобные серьезные расчеты мне не приходилось более 30 лет.

Хотя бы пообщались. :slight_smile: И то хорошо, узнали мнение каждого кто привнес вклад в эту беседу. Опрос принимает очень интересный оборот - да и нет имеют равное количество голосов, а нейтральной точки зрения придерживается большинство.

1 - за, 1 - против, 2 - воздержались? :man_facepalming: Это называется нерепрезентативная выборка. Лучше такие вопросы решать на троих и не голосованием… :grinning:

Кто бежит в магазин?

2 лайка

Мнуточку!.. Щас запустим голосование…

3 лайка

Не запустите… @MrFresnel уже спать пошел наверно.

Зато я нет)) Я ведь тоже умею нажимать на значок шестерёнки над окном ответа. Правда я тоже спать пожалуй, не програмится уже как то))

Да все умеют, но не все нажимают))

1 лайк

“Болталка” есть, а где тут раздел “Буфет”? Похоже, пора создавать… Вход только с 21+

Уже тут.

Можно исправить.

Вот что значит “Упомянуть к ночи” :smile:

И Вам добрый вечер. :slight_smile:

@Gleb, может перенесете в Болталку беседы на свободные темы?

@Admin, @ibond я иногда получаю внутреннюю ошибку, при компиляции File tests.pas из IDE: 0.rar (15,4 КБ)

Но не каждый раз. Более того, если компилировать несколько раз подряд - эта ошибка не появляется. Вот текст ошибки:

() : Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.ArgumentException: Переданная локальная переменная не принадлежит данному ILGenerator.
Имя параметра: local
   в System.Reflection.Emit.ILGenerator.Emit(OpCode opcode, LocalBuilder local)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(ILocalBlockVariableReferenceNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.InitializeUnsizedArray(ILGenerator il, TypeInfo ti, ITypeNode _arr_type, IExpressionNode[] exprs, Int32 rank)
   в PascalABCCompiler.NETGenerator.ILConverter.GenerateStandardFuncCall(ICommonNamespaceFunctionCallNode value, ILGenerator il)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonNamespaceFunctionCallNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(IBasicFunctionCallNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.EmitArguments(IParameterNode[] parameters, IExpressionNode[] real_parameters)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonConstructorCall value)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(IThrowNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.ConvertStatement(IStatementNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(IStatementsListNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.ConvertStatement(IStatementNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(IStatementsListNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.ConvertBody(IStatementNode body)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonMethodNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonTypeNode value)
   в PascalABCCompiler.NETGenerator.ILConverter.ConvertTypeImplementations(ICommonTypeNode[] types)
   в PascalABCCompiler.NETGenerator.ILConverter.ConvertFromTree(IProgramNode p, String TargetFileName, String SourceFileName, CompilerOptions options, String[] ResourceFiles)
   в PascalABCCompiler.Compiler.Compile()'

Как искать причину этой ошибки?

А в интерфейсе может быть конструктор?

Нет, не может. Впрочем, то же самое и к деструкторам относится.

type
  I1 = interface
    constructor();
  end;

begin
end.

выдаст при компиляции:

Program1.pas(3) : Интерфейс не может содержать конструкторы