teal-language / cyan

The Teal build system and project manager
MIT License
62 stars 6 forks source link

cyan attempts to compile lua files as if they were teal files. #43

Open vlaaad opened 1 month ago

vlaaad commented 1 month ago

See repro: cyan-lua-compilation-repro.zip

When I have a following file structure:

Screenshot 2024-07-15 at 15 29 51

And tlconfg.lua set to:

return {
    build_dir = "build",
    include_dir = {"src"},
    source_dir = "src"
}

Then cyan build fails:

$ cyan build
     Error 2 type errors in src/test.lua
       ... src/test.lua 3:7
       ...    3 | local a
       ...      |       ^
       ...      | variable 'a' has no type or initial value
       ... 
       ... src/test.lua 4:7
       ...    4 | local b
       ...      |       ^
       ...      | variable 'b' has no type or initial value
      Info Type checked src/main.tl

It looks like cyan tries to typecheck a lua file as if it was a teal file (even though there is a corresponding .d.tl file!).

euclidianAce commented 1 month ago

Cyan doesn't currently handle this use case too well. An awkward solution would be to move the lua file into the build directory and use the dont_prune config.

return {
   build_dir = "build",
   include_dir = {"src"},
   source_dir = "src",
   dont_prune = { "build/test.lua" },
}

Or keep your lua sources in a different directory and use a build script to copy them over.

But this use case seems reasonable enough to be supported by default.

hishamhm commented 5 days ago

@euclidianAce I think I'm hitting the same issue when trying to use Cyan with the teal branch of LuaRocks.

Right now I have two kinds of Lua files under src, and I want to ignore both: