diff --git a/core/task.rbs b/core/task.rbs new file mode 100644 index 0000000..5a45285 --- /dev/null +++ b/core/task.rbs @@ -0,0 +1,48 @@ +class Task < Object + def self.get: () -> Task + | (String name) -> Task? + + alias self.current self.get + + def self.list: () -> Array[Task] + + def self.name_list: () -> Array[String] + + def name: () -> String + def self.name: () -> String + + def name=: (String name) -> String + def self.name=: (String name) -> String + + def priority: () -> Integer + def self.priority: () -> Integer + + def priority=: (Integer priority) -> Integer + def self.priority=: (Integer priority) -> Integer + + def status: () -> String + + def suspend: () -> void + def self.suspend: () -> void + + def resume: () -> void + + def terminate: () -> void + def self.terminate: () -> void + + # TODO: Exception + def raise: () -> void + # | (Exception exception) + + def join: () -> Task + + def value: () -> untyped + + def pass: () -> void + + def self.create: (String byte_code, ?Integer regs_size) -> Task + + def run: () -> void + + def rewind: () -> void +end diff --git a/test/task.rb b/test/task.rb new file mode 100644 index 0000000..86bf834 --- /dev/null +++ b/test/task.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +task = Task.current + +Task.get +Task.get 'name' + +Task.current +Task.current '' + +Task.list + +Task.name_list + +task.name +Task.name + +task.name = '' +Task.name = '' + +task.priority +Task.priority + +task.priority = 0 +Task.priority = 0 + +task.status + +task.suspend +Task.suspend + +task.resume + +task.terminate +Task.terminate + +task.raise + +task.join + +task.value + +task.pass + +Task.create '' +Task.create '', 4 + +task.run + +task.rewind + +# rubocop:enable all