Changeset

13857:fc6495c887f6

util.smqueue: Clean up syntax errors and warnings from Teal 0.24 New version broke old syntax and got a lot pickier
author Kim Alvefur <zash@zash.se>
date Sat, 30 Nov 2024 16:03:37 +0100
parents 13856:14c1d6c7ac2d
children 13858:f20c1c2c73c7
files teal-src/prosody/util/smqueue.tl
diffstat 1 files changed, 10 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/teal-src/prosody/util/smqueue.tl	Sun Oct 13 12:59:34 2024 +0200
+++ b/teal-src/prosody/util/smqueue.tl	Sat Nov 30 16:03:37 2024 +0100
@@ -12,12 +12,11 @@
 			"head"
 			"pop"
 		end
-		push : function (smqueue, T)
-		ack : function (smqueue, integer) : { T }, ack_errors
+		push : function (smqueue<T>, T)
+		ack : function (smqueue<T>, integer) : { T }, ack_errors
 		resumable : function (smqueue<T>) : boolean
 		resume : function (smqueue<T>)  : queue.queue.iterator, any, integer
-		type consume_iter = function (smqueue<T>) : T
-		consume : function (smqueue<T>) : consume_iter
+		consume : function (smqueue<T>) : function() : T
 
 		table : function (smqueue<T>) : { T }
 	end
@@ -26,13 +25,13 @@
 
 local type smqueue = lib.smqueue;
 
-function smqueue:push(v)
+function smqueue:push(v : T)
 	self._head = self._head + 1;
 	-- Wraps instead of errors
 	assert(self._queue:push(v));
 end
 
-function smqueue:ack(h : integer) : { any }, smqueue.ack_errors
+function smqueue:ack(h : integer) : { T }, smqueue.ack_errors
 	if h < self._tail then
 		return nil, "tail";
 	elseif h > self._head then
@@ -66,13 +65,13 @@
 	return self._queue:items();
 end
 
-function smqueue:consume() : queue.queue.consume_iter
-	return self._queue:consume()
+function smqueue:consume() : (function() : T)
+	return self._queue:consume() as (function() : T)
 end
 
 -- Compatibility layer, plain ol' table
-function smqueue:table() : { any }
-	local t : { any } = {};
+function smqueue:table() : { T }
+	local t : { T } = {};
 	for i, v in self:resume() do
 		t[i] = v;
 	end
@@ -91,7 +90,7 @@
 	__freeze = freeze;
 }
 
-function lib.new<T>(size : integer) : queue.queue<T>
+function lib.new<T>(size : integer) : smqueue<T>
 	assert(size>0);
 	return setmetatable({ _head = 0; _tail = 0; _queue = queue.new(size, true) }, queue_mt);
 end