nelua-lang icon indicating copy to clipboard operation
nelua-lang copied to clipboard

Can't namespace generics

Open Andre-LA opened this issue 2 years ago • 1 comments

Bug description

If you define a working generic type inside a record (being used as a namespace), it throws an assertion error.

Code example

## local make_something = generalize(function(T)
  local MyGeneric = @record{
    value: #[T]#
  }

  function MyGeneric:get_value()
    return self.value
  end

  ## return MyGeneric
## end)

local Something = #[make_something]#

local MyNamespace = @record{}
local MyNamespace.Something = @Something

---
-- local GenericNum = @Something(integer) -- works
local GenericNum = @MyNamespace.Something(integer) -- assertion failed

local num: GenericNum = { 5 }

print(num:get_value())

Expected behavior

The same behavior when using the generic directly

Workaround

Just alias to the generic and use it directly:

local SomethingAlias = @MyNamespace.Something
local GenericNum = @SomethingAlias(integer) -- works

Environment

  • Nelua version: 0.2.0-dev.1535+5fea7336
  • Platform: Linux (Pop!_OS)
  • Architecture: x86_64

Andre-LA avatar Dec 13 '22 20:12 Andre-LA

It's something I've been aware, it's a limitation for now, will take a look at this eventually.

edubart avatar Dec 13 '22 21:12 edubart