Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Исправление процесса сериализации типов объектов (ObjectType) #2

Merged
merged 11 commits into from
Aug 4, 2022

Conversation

Stepami
Copy link
Owner

@Stepami Stepami commented Jun 13, 2022

В рамках разработки системы типов возникла проблема с типами объектов. Дело в том, что они могут быть рекурсивными (односвязный список, например). Соответственно, наивные алгоритмы обработки такой структуры данных не работают, поскольку сваливаются в StackOverflowException. На данный момент решена проблема со сравнением. В качестве временного решения при сериализации "словарного" типа используется генерируемый хэшкод, поскольку в текущей реализации он гарантирует уникальность и также с его реализацией решена проблема рекурсии. Однако, в дальнейшем при печати интерпретатором сообщений об ошибках семантического анализа, хотелось бы избежать высокого уровня нечитабельности ошибки.

@Stepami
Copy link
Owner Author

Stepami commented Jun 13, 2022

Вдохновление для первой итерации доработки подчерпнуто отсюда

@Stepami
Copy link
Owner Author

Stepami commented Jul 28, 2022

Эту проблему может решить #4

* Скелет исправления бага через паттерн "Посетитель"

* Реализация некоторых посещений, удаление неактуального функционала, доработка тестов

* Доработка функционала:
- если мы определяем посещение компонента виртуальным методом, то переопределять его надо только в том наследнике компонента, для которого существует специальная логика посещения
- доработка тестов
@github-actions
Copy link

github-actions bot commented Aug 4, 2022

File Coverage Branches Missing
All files 28% 26%
Interpreter.Lib.Semantic.Types.ArrayType 69% 66% 25-31
Interpreter.Lib.Semantic.Types.FunctionType 37% 40% 32-55
Interpreter.Lib.Semantic.Types.NullableType 58% 50% 20-23 29 36
Interpreter.Lib.Semantic.Types.ObjectType 90% 90% 62-64
Interpreter.Lib.Semantic.Types.Type 92% 100% 33 41
Interpreter.Lib.Semantic.Types.Visitors.ObjectTypePrinter 70% 58% 51-57
Interpreter.Lib.Semantic.Types.Visitors.ReferenceResolver 69% 64% 38 45 55 63-67

Minimum allowed coverage is 20%

Generated by 🐒 cobertura-action against 208ca41

@Stepami Stepami merged commit bef5575 into master Aug 4, 2022
@Stepami Stepami deleted the bugfix/object-type-to-string branch August 4, 2022 14:32
@Stepami Stepami added Bug Something isn't working IR Working on intermediate representation of the interpreter labels Dec 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working IR Working on intermediate representation of the interpreter
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant