Войти
ФлеймФорумПроЭкты

Ü (Programmiersprache) (76 стр)

Страницы: 171 72 73 74 75 76
#1125
19:37, 27 фев 2022

Запретил от греха подальше специальным методам быть не public. В них входят конструкторы, деструкторы, операторы присваивания, сравнения.
Ситуация аналогична запрету этим же методам быть unsafe. Ибо не понятно, как при генерации методов звать не public методы.

#1126
18:42, 2 мар 2022

Panzerschrek[CN]
> Но если имя объявлено в более чем одном предке, не понятно, какое из них
> предпочтительнее.
Элементарно - при декларации подобного D потребовать явно продекларировать, что D::I в нём будет или такой-то, или что никакой не будет.

#1127
9:34, 7 мар 2022

Запилил в языке указание нестандартных соглашений о вызове
Теперь можно писать так:

fn Foo() call_conv("C") : i32;
fn Bar() call_conv("default") : i32;
fn Baz() call_conv("Ü") : i32;
fn Lol() call_conv("fast") : i32;
fn Kek() call_conv("cold") : i32;
fn Wtf() call_conv("system") : i32;

C, default, Ü - это всё одно и то же соглашение о вызове. fast/cold напрямую соответствуют таковым соглашениям в llvm. system это псевдоним для default соглашения, за исключением 32-битной Windows, где используется stdcall.
Соглашения о вызове можно указывать (естественно) и для nomangle функций. Но нельзя использовать соглашения, отличные от default, в thiscall методах классов и операторах, но можно в статических методах.

#1128
9:46, 7 мар 2022

Выпилил из языка опережающие объявления классов.
Смысла в них стало мало с тех пор, как была реализована порядконезависимость глобальных объявлений. Других применений у них можно считать, что и не было. Ибо в Ü класс без тела толком нельзя было использовать - передать по ссылке или положить ссылку в структуру/класс.

#1129
22:06, 7 мар 2022

Sbtrn. Devil
> Элементарно - при декларации подобного D потребовать явно продекларировать, что
> D::I в нём будет или такой-то, или что никакой не будет.
Один из вариантов.
Сейчас у меня для всего кроме функций есть специальный код, который делает выборку имён из родительских классов. Можно, думаю, в этом месте какую-нибудь проверку добавить, что если какое-то имя в более чем одном предке встретилось, то это ошибка и пусть программист делает выборку с указанием конкретного класса.

#1130
22:13, 7 мар 2022

Подумываю тут над тем, чтобы сделать private глобальные символы.
Это может быть полезно, например, для шаблонных классов. Символы (функции, классы, переменные и т. д.), нужные для реализации шаблонного класса, можно объявить как private. При import-е эти символы будут не видны. Можно также сделать private import, чтобы импортированные символы далее не были видны.

Встаёт вопрос, каким же образом помечать private символы? Я не хочу делать как в Rust, где всё изначально private, а что надо, поэлементно помечается как pub. Хочется, чтобы умолчательная видимость была public. Не хочется, чтобы надо было помечать как private каждый символ, хотелось бы какой-то группировки.
Под такие требования подходит вариант с private/public метками, аналогично тому, как они используются в классах в C++. Можно ещё придумать что-то вроде public/private блоков в пространствах имён.
Не понятно также, делать ли возможность сами пространства имён помечать как private. Может это излишне, а может и есть в этом смысл.

Страницы: 171 72 73 74 75 76
ФлеймФорумПроЭкты