f41be80e5f
Use a growable buffer for globals.
...
Also allows more than 256.
2014-04-06 16:16:15 -07:00
9a8f2edda4
List.addAll().
2014-04-06 08:37:37 -07:00
2da8025cd4
Fiber.create -> new Fiber
2014-04-04 18:24:55 -07:00
f5a9f39568
Check argument type in new Fn.
2014-04-04 18:13:13 -07:00
4a8cf3a7bf
Move newline handling down into parser.
...
This lets us make it a grammar feature and not a lexer trick.
Newlines are explicitly ignored in some parts of the grammar. This
lets, for example, things like "|" ignore the newline when used as
an operator, but not when used as a parameter delimiter in a block
argument.
2014-04-04 07:51:18 -07:00
da4cadf16b
Unify body handling.
...
Blocks, functions, and methods now have the same code for handling
their bodies.
This means that single-line methods work like single-line functions:
they return the result of their expression.
2014-04-03 07:48:19 -07:00
d146018559
Convert all fns to block arg syntax.
2014-04-02 19:41:53 -07:00
a550d6cea4
Change how new operators are compiled.
...
Instead of an instruction that always instantiates an instance,
the "new" is compiled to a method call on the class, followed by a
method call on the (presumably) new instance.
The former lets built-in types like Fn do special stuff instead of
allocating an instance. In particular, it means:
new Fn { ... }
can just return the block argument.
2014-04-02 17:42:30 -07:00
cc56ac4da7
Convert fiber tests to use block arguments.
2014-04-02 17:31:58 -07:00
9a959c9eb9
Error if argument to new is not a class.
2014-03-06 06:51:16 -08:00
44e68a5db9
Fix #31 . Bitwise operators on numbers.
2014-02-24 07:27:43 -08:00
df4c1fa6b2
Changed phrasing, fixed and added a test.
2014-02-23 21:53:49 -06:00
d25504eb4e
Put custom bitwise operator tests into existing operators test file.
2014-02-16 19:42:49 -06:00
c43dbe96d3
Make custom bitwise operators work, add tests
2014-02-16 12:01:40 -06:00
f8a9d7f321
Make Sequence base class.
...
This lets us share functionality between List and Range (and
other user-defined sequence types).
2014-02-16 09:20:31 -08:00
e535d7a9e7
Conditional operator.
2014-02-15 11:36:01 -08:00
4728687ca5
Merge branch 'feature/list-where' of git://github.com/zeckalpha/wren into zeckalpha-feature/list-where
...
Conflicts:
builtin/core.wren
src/wren_core.c
2014-02-15 11:21:24 -08:00
3409d588e5
Added List.where method and tests.
2014-02-15 00:42:14 -06:00
1d31c95872
Cleanups for merging map method
2014-02-15 00:34:30 -06:00
83ea5aaf45
Add List.map method and test
2014-02-14 23:06:29 -06:00
b1bae8fc6c
Fix #17 .
2014-02-14 20:15:49 -08:00
ea3cfa05bd
Allow [0..-1] and [0...0] to work on empty lists.
2014-02-14 20:10:41 -08:00
ca7ff222fe
Fix iterating over an empty list.
2014-02-14 17:24:06 -08:00
e519ecbc49
Third try. ;) Concat operator, tests. Now [1,2,3] + (4..6) works! Inlined helper functions to keep core lib small.
2014-02-14 11:16:57 -06:00
edd360a934
More fiber tests.
2014-02-14 07:16:56 -08:00
ca4f4d6660
Test "this" in static methods.
2014-02-14 06:37:37 -08:00
59bb7eec7a
Remove some outdated TODOs.
...
They’re TODONE!
2014-02-13 08:38:44 -08:00
756fe0d920
Make "this" the implicit receiver!
2014-02-12 17:33:35 -08:00
ec7e159017
Fix shrinking list capacity.
2014-02-10 07:55:14 -08:00
7726ee5131
Handle extra and missing arguments to fn.call.
2014-02-04 09:34:05 -08:00
ac7cb594f4
Handle invalid string literals.
2014-02-02 10:31:46 -08:00
66f0b57bf3
Allow ranges in list subscript operator.
2014-01-30 09:12:44 -08:00
5c2cf641ae
Make classes know their name.
2014-01-28 15:31:11 -08:00
ce6ec301cf
Check that RHS of "is" is a class.
2014-01-21 07:52:03 -08:00
635d695083
Validate number comparison operand types.
2014-01-21 07:44:11 -08:00
90d1ed6aa6
Make null falsey.
2014-01-20 18:12:55 -08:00
46c1ba9249
Fix #2 . Finish implementing Range.
...
Covers error and edge cases and fully tested now.
2014-01-20 13:20:22 -08:00
97bf314f4b
Make Range a native object type.
...
Still need to implement better semantics, but this is an
important first step. It's much faster now too, which is good.
2014-01-20 08:45:15 -08:00
83b5968340
Get static methods fully working.
...
They are compiled as local variables defined in an implicit
scope surrounding the class. This has the right semantics and,
better, means that there's no VM support needed for them.
They're purely syntax sugar.
2014-01-19 13:01:51 -08:00
e8791b6bab
Don't inherit metaclasses.
...
Also disallow super() in static methods. It won't do anything
useful (it always just delegates to Class) anyway.
2014-01-17 17:29:10 -08:00
e493ac7cf4
Check for number of field overflow.
2014-01-15 07:59:10 -08:00
eb1c0284dd
Handle references to fields with inheritance in closures.
2014-01-15 07:03:24 -08:00
4b8b676ffe
Handle errors with fiber usage.
2014-01-13 06:58:27 -08:00
8e8bb4b9b9
Allow returns without an explicit value.
2014-01-12 19:37:11 -08:00
f3a1f7e677
Fibers!
...
Still have some edge cases to implement but the basics are in
place and working now.
2014-01-12 11:02:07 -08:00
a8b51f6c8b
Fill in some more mathematical functions.
2014-01-08 07:47:14 -08:00
3be059a137
Fix scoping and break statements.
...
Variables declared in the loop were not properly disposed of
when you broke out of the loop.
2014-01-06 08:01:04 -08:00
b979272305
Clean up text handling a bit:
...
- Rename IO.write -> IO.print.
- Make IO.write not print a newline.
- Support \u Unicode escapes in strings.
2014-01-05 12:27:12 -08:00
870f3b8b93
Allow more than 256 methods and constants.
...
Class symbol tables now grow on demand, and the relevant
instructions take 16-bit arguments. There's a small perf hit
for this, but only a few percent, which is good.
2014-01-04 11:08:31 -08:00
058c2606b0
Better argument validation for core methods.
2014-01-03 10:47:26 -08:00