From f94edb035c6840e83c979c41a33641305de78250 Mon Sep 17 00:00:00 2001 From: ProgramSnail Date: Sun, 13 Aug 2023 12:55:53 +0300 Subject: [PATCH] other symbol for reference types, any references in reference type --- corpus/test.langexp | 8 ++++---- grammar.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/corpus/test.langexp b/corpus/test.langexp index 6556b6c..91494a2 100644 --- a/corpus/test.langexp +++ b/corpus/test.langexp @@ -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 diff --git a/grammar.js b/grammar.js index 60b0bdf..9c74322 100644 --- a/grammar.js +++ b/grammar.js @@ -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),