This website requires JavaScript.
Explore
Mail
Help
Register
Sign In
Mirror
/
wren
Watch
1
Star
0
Fork
1
You've already forked wren
mirror of
https://github.com/wren-lang/wren.git
synced
2026-01-18 13:49:59 +01:00
Code
Issues
Packages
Projects
Releases
Wiki
Activity
Files
edb1f9d37b83a1a1eaafe151723270d1e1bf222e
wren
/
test
/
language
/
nonlocal
/
use_in_function.wren
6 lines
82 B
Plaintext
Raw
Normal View
History
Unescape
Escape
Add support for "nonlocal" (capitalized) names, and change how variable lookup works. Inside a method, all local variable lookup stops at the method boundary. In other words, methods, do not close over outer local variables. If a name is not found inside a method and is lowercase, it's a method on this. If it's capitalized, it's a global variable.
2015-01-13 21:36:42 -08:00
var Global = "global"
Get closures working! In the process, I had to change the grammar. There is now a strong separation between statements and expressions. The code was just wrong before when it popped locals at the end of a block scope because there could be temporaries on the stack if the block was in expression position. This fixes that. Still need to implement closing over `this`.
2013-12-04 07:43:50 -08:00
Make constructors just methods. * Eliminate "new" reserved word. * Allow "this" before a method definition to define a constructor. * Only create a default constructor for classes that don't define one.
2015-07-10 09:18:22 -07:00
Fn.new {
"IO" -> "System". Get rid of the separate opt-in IO class and replace it with a core System class. - Remove wren_io.c, wren_io.h, and io.wren. - Remove the flags that disable it. - Remove the overloads for print() with different arity. (It was an experiment, but I don't think it's that useful.) - Remove IO.read(). That will reappear using libuv in the CLI at some point. - Remove IO.time. Doesn't seem to have been used. - Update all of the tests, docs, etc. I'm sorry for all the breakage this causes, but I think "System" is a better name for this class (it makes it natural to add things like "System.gc()") and frees up "IO" for referring to the CLI's IO module.
2015-09-15 07:46:09 -07:00
System.print(Global) // expect: global
Allow empty argument list methods. - Compile them as calls and definitions. - Use them for call(), clear(), run(), try(), and yield(). - Update the docs.
2015-02-26 23:08:36 -08:00
}.call()
Reference in New Issue
Copy Permalink