other symbol for reference types, any references in reference type

This commit is contained in:
ProgramSnail 2023-08-13 12:55:53 +03:00
parent 17a67d2361
commit f94edb035c
2 changed files with 6 additions and 6 deletions

View file

@ -149,13 +149,13 @@ bubble_sort_2 'arr : ref Array['A] = {
};
}
: example of ^ and generics. ^ used to denote that this object allocated on heap
: example of <> and generics. <> (in type definition) used to denote that this object allocated on heap
: object allocated by unique reference by default
^TreeNode 'Key 'Value =
<> TreeNode 'Key 'Value =
& @key Key
& @value Value
& @left ^TreeNode['Key 'Value]
& @right ^TreeNode['Key 'Value];
& @left <> TreeNode['Key 'Value]
& @right <> TreeNode['Key 'Value];
.new = do_something; // static methods

View file

@ -66,7 +66,7 @@ module.exports = grammar({
type_definition: $ => seq(
optional($.definition_info),
repeat($.annotation_info), // for datatypes only
optional('^'),
optional('<>'),
field('name', choice($.simple_type_identifier, $.typeclass_identifier)),
optional(seq('[', repeat($.typeclass_identifier), ']')), // parametric typeclasses ??
repeat($.argument_type_identifier), // for datatypes only
@ -232,7 +232,7 @@ module.exports = grammar({
// same to Array[...]
array_type: $ => seq('[[', $._type, ']]'),
reference_type: $ => prec(-1, seq('^', $._scoped_type)),
reference_type: $ => prec(-1, seq($._reference, $._scoped_type)),
// same to Optional[...] or Result[...]
modified_type: $ => seq($._scoped_type, $._optional_or_result),