Singleton type turns into a built-in type after passing through a function?

I have a function that returns the received value without modifying anything. But when it receives a value of type "HI" (singleton), it converts it to a type string (built-in), which is different from "HI"!

--!strict

local function get(a)
	return a
end

local v: "HI" = get("HI") -- TypeError: Type 'string' could not be converted into '"HI"'

I need to get rid of this error. Is this a bug, or am I missing something?

Tried setting types explicitly, getting the same result:

--!strict

local function get<t>(a: t): t
	return a
end

local v: "HI" = get("HI") -- TypeError: Type 'string' could not be converted into '"HI"'

If you’re curious why is this neccessary, here’s the original issue that comes from this weird behavior.

nevermind, found an answer on luau’s repo: [New Solver] Passing a string literal into a function reduces it to a `string` type · Issue #1790 · luau-lang/luau · GitHub