luciotato / LiteScript

Compile-to-js and compile-to-c language, highly readable, keep it simple philosophy
GNU Affero General Public License v3.0
147 stars 7 forks source link

global doesn't apply to import #11

Open desm opened 9 years ago

desm commented 9 years ago

Hi, I get the following error when trying to run the sample LiteScript blog-example-dns.lite.md:

$ git clone git@github.com:luciotato/LiteScript.git
$ cd LiteScript/doc
$ lite -es6 blog-example-dns.lite.md
LiteScript-to-js v0.8.9 Build Date Thu Oct 23 2014 07:54:38 GMT-0300 (ART)
compiler options: {"verboseLevel":1,"warningLevel":1,"comments":1,"target":"js","outDir":"generated/js","perf":0,"generateSourceMap":true,"defines":[],"includeDirs":[],"projectDir":".","mainModuleName":"blog-example-dns.lite.md","storeMessages":false,"now":"2015-01-11T06:15:13.193Z","es6":true}
cwd: /data/projects/LiteScript/doc
compile : blog-example-dns.lite.md
Project Dir: /data/projects/LiteScript/doc
Main Module: blog-example-dns
Out Dir: /data/projects/LiteScript/doc/generated/js
preprocessor #defined [ 'ENV_JS', 'ENV_NODE', 'TARGET_JS' ]
Compiling blog-example-dns
 ERROR: /data/projects/LiteScript/doc/blog-example-dns.lite.md:7:5. 'global' can only apply to declare|class|namespace|function|var not to 'import' 
 /data/projects/LiteScript/doc/blog-example-dns.lite.md:7:5. 'global' can only apply to declare|class|namespace|function|var not to 'import' 

Commit hash: '5767d7' LiteScript version: LiteScript-to-js v0.8.9 Build Date Thu Oct 23 2014 07:54:38 GMT-0300 (ART)

desm commented 9 years ago

When I remove the 'global' keyword, then the error message becomes:

$ lite -es6 blog-example-dns.lite.md
LiteScript-to-js v0.8.9 Build Date Thu Oct 23 2014 07:54:38 GMT-0300 (ART)
compiler options: {"verboseLevel":1,"warningLevel":1,"comments":1,"target":"js","outDir":"generated/js","perf":0,"generateSourceMap":true,"defines":[],"includeDirs":[],"projectDir":".","mainModuleName":"blog-example-dns.lite.md","storeMessages":false,"now":"2015-01-11T06:53:34.231Z","es6":true}
cwd: /data/projects/LiteScript/doc
compile : blog-example-dns.lite.md
Project Dir: /data/projects/LiteScript/doc
Main Module: blog-example-dns
Out Dir: /data/projects/LiteScript/doc/generated/js
preprocessor #defined [ 'ENV_JS', 'ENV_NODE', 'TARGET_JS' ]
Compiling blog-example-dns
 /data/projects/LiteScript/doc/blog-example-dns.lite.md:7:1 Module not found:
Searched 'dns' at:
/data/projects/LiteScript/doc
/data/projects/LiteScript/doc/lib
/data/projects/LiteScript/doc/interfaces
/data/projects/LiteScript/lib
/data/projects/LiteScript/interfaces
   with extensions (.lite.md|.md|.interface.md|.js) 
desm commented 9 years ago

Using the 'lite -s' flag, code generation is successful:

$ lite -es6 -s blog-example-dns.lite.md
LiteScript-to-js v0.8.9 Build Date Thu Oct 23 2014 07:54:38 GMT-0300 (ART)
compiler options: {"verboseLevel":1,"warningLevel":1,"comments":1,"target":"js","outDir":"generated/js","perf":0,"generateSourceMap":true,"single":true,"defines":[],"includeDirs":[],"projectDir":".","mainModuleName":"blog-example-dns.lite.md","storeMessages":false,"now":"2015-01-11T08:02:53.500Z","es6":true}
cwd: /data/projects/LiteScript/doc
compile : blog-example-dns.lite.md
Project Dir: /data/projects/LiteScript/doc
Main Module: blog-example-dns
Out Dir: /data/projects/LiteScript/doc/generated/js
preprocessor #defined [ 'ENV_JS', 'ENV_NODE', 'TARGET_JS' ]
Compiling blog-example-dns
 WARNING: /data/projects/LiteScript/doc/blog-example-dns.lite.md:15:47. No member named 'resolve' on 'dns:any' 
 WARNING: /data/projects/LiteScript/doc/blog-example-dns.lite.md:7:12 declaration is here 
 WARNING: /data/projects/LiteScript/doc/blog-example-dns.lite.md:17:56. No member named 'reverse' on 'dns:any' 
 WARNING: /data/projects/LiteScript/doc/blog-example-dns.lite.md:7:12 declaration is here 
Producing js
Generated .js files (1) at /data/projects/LiteScript/doc/generated/js
0 errors, 4 warnings.
desm commented 9 years ago

Then, when I try to run it, I get the following error:

$ /usr/local/bin/node -v
v0.13.0-pre

$ /usr/local/bin/node --harmony generated/js/blog-example-dns.js 
/data/projects/LiteScript/doc/generated/js/blog-example-dns.js:17
      nicegen.run(this, resolveAndParallelReverse_generator, arguments);
              ^
TypeError: undefined is not a function
    at resolveAndParallelReverse (/data/projects/LiteScript/doc/generated/js/blog-example-dns.js:17:15)
    at Object.<anonymous> (/data/projects/LiteScript/doc/generated/js/blog-example-dns.js:55:5)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:124:16)
    at node.js:811:3

This is because the 'run' method is no longer used. So simply removing ".run" from that line of code does the trick. Note that one needs to use a version of node >= 0.11 and that the '--harmony' flag is required.

$ /usr/local/bin/node --harmony generated/js/blog-example-dns.js 
74.125.226.104 reverse: yyz08s13-in-f8.1e100.net
74.125.226.99 reverse: yyz08s13-in-f3.1e100.net
74.125.226.105 reverse: yyz08s13-in-f9.1e100.net
74.125.226.110 reverse: yyz08s13-in-f14.1e100.net
74.125.226.100 reverse: yyz08s13-in-f4.1e100.net
74.125.226.96 reverse: yyz08s13-in-f0.1e100.net
74.125.226.97 reverse: yyz08s13-in-f1.1e100.net
74.125.226.103 reverse: yyz08s13-in-f7.1e100.net
74.125.226.101 reverse: yyz08s13-in-f5.1e100.net
74.125.226.98 reverse: yyz08s13-in-f2.1e100.net
74.125.226.102 reverse: yyz08s13-in-f6.1e100.net
luciotato commented 9 years ago

I'm sorry for that. The nice+parallel example got neglected while I was focusing on the compile-to-c feature.

_Now the example is fixed, please try it_

Thanks for the detailed report.

The problem was:

The solution:

I've used the mkInterface utility, to automatically create an .interface.md file from require('dns')

cd ~/LiteScript/devel/source/v0.8/utility 
lite -run mkInterface dns >dns.interface.md

After some tweaking, the interface for dns is now included in LiteScript/lib/interfaces

By fixing the import problem, also the correct "nicegen" is now imported.

desm commented 8 months ago

Hi @luciotato , I'm sorry I never saw your reply until now. I have practically no recollection of this discussion. You can close the issue if you'd like.

0xcrypto commented 8 months ago

@desm same here, I dont remember why I am subscribed to this issue 😂