From 1456f4493e7b7fae8739df111d49d3a0aa5a1b09 Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Mon, 25 Mar 2024 20:09:41 +1100 Subject: [PATCH] refactor(class): remove support for class.init --- imports/class/shared.lua | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/imports/class/shared.lua b/imports/class/shared.lua index 6c9b8d0..6336d68 100644 --- a/imports/class/shared.lua +++ b/imports/class/shared.lua @@ -55,25 +55,12 @@ local function void() return '' end ---@return T function mixins.new(class, ...) local constructor = getConstructor(class) - local obj = { + + local obj = setmetatable({ private = {} - } + }, class) - if not constructor and table.type(...) == 'hash' then - lib.print.warn(([[Creating instance of %s with a table and no constructor. -This behaviour is deprecated and will not be supported in the future.]]) - :format(class.__name)) - - obj = ... - - if obj.private then - assertType('private', obj.private, 'table') - end - end - - setmetatable(obj, class) - - if constructor and obj ~= ... then + if constructor then local parent = class function obj:super(...) @@ -84,13 +71,6 @@ This behaviour is deprecated and will not be supported in the future.]]) end constructor(obj, ...) - ---@diagnostic disable-next-line: undefined-field - elseif class.init then - lib.print.warn(([[Calling %s:init() is deprecated and will not be supported in the future. -Use %s:constructor(...args) and assign properties in the constructor.]]) - :format(class.__name, class.__name)) - - obj:init() end obj.super = nil @@ -113,7 +93,7 @@ Use %s:constructor(...args) and assign properties in the constructor.]]) local di = getinfo(2, 'n') if di.namewhat ~= 'method' then - error(("cannot set values on private field '%s'"):format(index), 2) + error(("cannot set value of private field '%s'"):format(index), 2) end private[index] = value