Object's self field becomes first argument of the function

I am using oop. I made a class but it’s object’s self becomes whatever I send to the function
for example:

Inside random script

v:GetVector3(5.5)

Inside module

function Vertex:GetVector3(y: number)
	print(self) -- returns 5.5
	return Vector3.new(self["x"], y, self["y"])
end

Vertex module


local Vertex = {}
Vertex.__index = Vertex

local sss = game:GetService("ServerScriptService")

local types = require(sss.Types) 

function Vertex.new(x: number,y: number): types.Vertex -- big triangle coordinates.
	local skeleton = {
		["x"] = x,
		["y"] = y,
		["halfedges"] = {}
	}
	setmetatable(skeleton, Vertex)
	print(skeleton)
	return skeleton
end

function Vertex:AddHalfEdge(halfedge)
	table.insert(self.halfedges,halfedge)
end

function Vertex:RemoveHalfEdge(halfedge)
	for i,v in ipairs(self.halfedges) do
		if v == halfedge then
			table.remove(self.halfedges,i)
			break
		end
	end
end

function Vertex:__add(v2)
	return Vertex.new(self.x + v2.x, self.y + v2.y)
end
function Vertex:__sub(v2)
	return Vertex.new(self.x - v2.x, self.y - v2.y)
end

function Vertex:GetVector3(y: number)
	print(self)
	return Vector3.new(self["x"], y, self["y"])
end

function Vertex:Magnitude(Vertex2)
	return math.sqrt(math.pow(Vertex2.x - self.x,2) + math.pow(Vertex2.y - self.y,2))
end

function Vertex:MidPoint(v2)
	return Vertex.new((self.x + v2.x)/2, (self.y + v2.y)/2)
end

function Vertex:Show(t,y)
	coroutine.wrap(function()
		local part = Instance.new("Part")
		part.Size = Vector3.new(1,1,1)
		part.Position = Vector3.new(self.x,y,self.y)
		part.Anchored = true
		part.Parent = workspace
		part.Material = Enum.Material.Neon
		part.Color = Color3.new(0.666667, 0, 1)
		part.CanCollide = false
		task.wait(t)
		part:Destroy()
	end)()
end


return Vertex


I think the issue doesn’t lie inside the module.


I made a brand new file and put there the module and random script.
AND EVERYTHING IS FINE.

So somehow something outside the module is setting it’s self to the argument of the function.

image
image

I thank this kind individual that found that I have

v.v2.GetVector3() 

instead of

v.v2:GetVector3()