Ошибки PascalABC.NET


#923
procedure p1(b: byte);
type
  t1 = record
    procedure wr := writeln(b);
  end;
begin
end;

begin
end.

Неизвестное имя 'b' Это ошибка?


#924

Я недавно перевёл свой модуль для математики в нормальный вид, то есть с разделом описания и реализации и заметил что в разделе реализации её показывает 2 раза:

Очень вероятно что только у меня так глючит, так что проверьте кто то у себя.


#925
() : Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.FormatException: Слишком много байт в типе, который должен быть в 7-разрядной кодировке Int32.
   в System.IO.BinaryReader.Read7BitEncodedInt()
   в System.IO.BinaryReader.ReadString()
   в PascalABCCompiler.PCU.PCUReader.ReadGenericParams(common_namespace_node cur_nn)
   в PascalABCCompiler.PCU.PCUReader.ReadGenericFunctionInformation(common_function_node func)
   в PascalABCCompiler.PCU.PCUReader.CreateInterfaceNamespaceFunction(String name, Int32 offset)
   в PascalABCCompiler.PCU.PCUReader.CreateInterfaceInClassMember(Int32 offset, String name)
   в PascalABCCompiler.TreeRealization.BasePCUReader.RestoreSymbols(SymbolInfo si, wrapped_definition_node wdn, String name)
   в PascalABCCompiler.TreeRealization.BasePCUReader.RestoreSymbols(SymbolInfoList sil, String name, Int32 index)
   в SymbolTable.ClassScope.FindOnlyInType(String name, Scope CurrentScope)
   в PascalABCCompiler.PCU.wrapped_common_type_node.find_in_type(String name, Scope CurrentScope, Boolean no_search_in_extension_methods)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.find_operator(String name, expression_node left, expression_node right, location loc, Boolean no_search_in_extension_methods)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
   в PascalABCCompiler.TreeConverter.returner.visit(expression expr)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
   в PascalABCCompiler.TreeConverter.returner.visit(expression expr)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(var_def_statement _var_def_statement)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(var_statement node)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(statement_list _statement_list)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_program_code(statement_list program_code)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_class_member_realizations(class_body_list _class_body)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(class_body_list _class_body)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(class_definition _class_definition)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(type_declaration _type_declaration)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(type_declarations _type_declarations)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(declarations _subprogram_definitions)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(interface_node _interface_node)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(unit_module _unit_module)
   в PascalABCCompiler.TreeConverter.SyntaxTreeToSemanticTreeConverter.CompileInterface(compilation_unit SyntaxUnit, unit_node_list UsedUnits, List`1 ErrorsList, List`1 WarningsList, SyntaxError parser_error, Hashtable bad_nodes, using_namespace_list namespaces, Dictionary`2 docs, Boolean debug, Boolean debugging)
   в PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
   в PascalABCCompiler.Compiler.Compile()'

У меня несколько имён были изменены или удалены, но вместо того чтоб показывать где неизвестное имя оно выдавало внутреннюю ошибку компилятора, при этом если удалить все psu то покажет 1 место где не хватает имени и при следующей компиляции снова сломается. Вот исходники (40,3 КБ).

P.S. После того как исправил все от имена компилятор продолжил вылетать из за:

() : Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException".
   в System.Text.StringBuilder..ctor(String value, Int32 startIndex, Int32 length, Int32 capacity)
   в System.Text.StringBuilderCache.Acquire(Int32 capacity)
   в System.IO.BinaryReader.ReadString()
   в PascalABCCompiler.PCU.PCUReader.ReadGenericParams(common_namespace_node cur_nn)
   в PascalABCCompiler.PCU.PCUReader.ReadGenericFunctionInformation(common_function_node func)
   в PascalABCCompiler.PCU.PCUReader.CreateInterfaceNamespaceFunction(String name, Int32 offset)
   в PascalABCCompiler.PCU.PCUReader.CreateInterfaceInClassMember(Int32 offset, String name)
   в PascalABCCompiler.TreeRealization.BasePCUReader.RestoreSymbols(SymbolInfo si, wrapped_definition_node wdn, String name)
   в PascalABCCompiler.TreeRealization.BasePCUReader.RestoreSymbols(SymbolInfoList sil, String name, Int32 index)
   в SymbolTable.ClassScope.FindOnlyInType(String name, Scope CurrentScope)
   в PascalABCCompiler.PCU.wrapped_common_type_node.find_in_type(String name, Scope CurrentScope, Boolean no_search_in_extension_methods)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.find_operator(String name, expression_node left, expression_node right, location loc, Boolean no_search_in_extension_methods)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
   в PascalABCCompiler.TreeConverter.returner.visit(expression expr)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
   в PascalABCCompiler.TreeConverter.returner.visit(expression expr)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(var_def_statement _var_def_statement)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(var_statement node)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(statement_list _statement_list)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_program_code(statement_list program_code)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_class_member_realizations(class_body_list _class_body)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(class_body_list _class_body)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(class_definition _class_definition)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(type_declaration _type_declaration)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(type_declarations _type_declarations)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(declarations _subprogram_definitions)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(interface_node _interface_node)
   в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(unit_module _unit_module)
   в PascalABCCompiler.TreeConverter.SyntaxTreeToSemanticTreeConverter.CompileInterface(compilation_unit SyntaxUnit, unit_node_list UsedUnits, List`1 ErrorsList, List`1 WarningsList, SyntaxError parser_error, Hashtable bad_nodes, using_namespace_list namespaces, Dictionary`2 docs, Boolean debug, Boolean debugging)
   в PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
   в PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
   в PascalABCCompiler.Compiler.Compile()'

И опять же помогает удаление всех psu файлов… Есть какое то временное решение?

P.P.S временным решением оказалось удалять 1 из файлов psu и компилировать дальше только находясь на файле основной программы, а если попробовать откомпилировать от модуля(после пкм на основном файле и сделать активным) то снова вылазит эта ошибка и надо удалять psu.


#926

Столкнулся с такой проблемой: при объявлении перечисления (enum), его имена становятся глобальными константами, то есть использовать эти имена больше нигде нельзя. Вот пример перечисления из моей библиотеки цветовых пространств:

Type ColorSpace=(RGB, LAB, XYZ, CMYK);


#927

В С++ так же, если не использовать enum class


#928

это атавизмы из древности. придется терпеть.


#929

баг пофиксили. обновление будет на неделе. временное решение: {$savepcu false}


#930

нет.


#931

А исправить это никак нельзя?:confused:


#932

Долго не исправляете, дайте какое то временное решение пожалуйста.


#933
System.InvalidOperationException: cannot perform Undo/Redo while undo group is open
   в ICSharpCode.TextEditor.Undo.UndoStack.Undo()
   в ICSharpCode.TextEditor.TextEditorControl.Undo()
   в VisualPascalABC.Form1.ExecUndo()
   в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   в System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
   в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   в System.Windows.Forms.ToolStripMenuItem.ProcessCmdKey(Message& m, Keys keyData)
   в System.Windows.Forms.ToolStripManager.ProcessShortcut(Message& m, Keys shortcut)
   в System.Windows.Forms.Form.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Form.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.ContainerControl.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
   в System.Windows.Forms.Control.PreProcessMessage(Message& msg)
   в System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
   в System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

После этого страница файла полностью сломалась, курсора нет, редактировать ничего не даёт.


#934

Это известная ошибка редактора - сделать ничего не можем, иногда возникает


#935

Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.Exception: Invalid constant value in IClassConstantDefinitionNode'

Начало возникать после добавления класса TSeg в модуле RData. Я попробовал убрать - без него снова работает нормально.

GA.rar (54,9 КБ)

И желательно ещё временное решение подкинуть…


#936

Нет, так не годится. Пожалуйста, пример из одного или двух файлов


#937
type
  t1 = class
    
    private const c1 = 0;
    
    public procedure p1;
    begin
      var p: procedure := ()->begin writeln(c1) end;
    end;
  
  end;

begin end.

test.pas(8) : В данной версии компилятора не поддерживается замыкание данного типа символов

А когда будет? И есть ли где то список всех ваших заглушек, я сомневаюсь что можно удержать их все в голове…


#938
begin
  var b:byte := 137;
  writeln(b shl 7 shr 7);
end.

Выписывает 137 а не 1, потому что shl и shr меняет тип на integer, так задумано или это ошибка?


#939

Так задумано. Все операции с целыми расширяют тип до integer


#940
begin
   Write(:);
end.

#941

Постарайтесь в следующий раз давать описание проблемы, и если это 100% не фича - писать в issue на гитхабе, вот так:

Там разработчикам будет удобнее увидеть ошибку.


#945

Что это может быть тогда, если у вас, @ibond, нормально работает, а у меня так: