Commit Graph

166 Commits

Author SHA1 Message Date
be0032cc40 Merge branch 'segfault_on_top_level_super_with_no_args' of git://github.com/zeckalpha/wren into zeckalpha-segfault_on_top_level_super_with_no_args 2015-01-11 19:42:26 -08:00
bc29e0929e Rename a couple of files and tweak some docs. 2015-01-11 19:13:15 -08:00
7557c91b3c Adds some common methods to strings. 2015-01-11 16:06:56 -08:00
c376d88e61 super at top level: Allow the compiler to continue compilation after erroring. Added two more tests. 2015-01-11 17:44:10 -06:00
3490c8d2f3 Segfault when calling super at top-level with no arguments.
If enclosingClass is null, we can't proceed with compilation since we don't have its name.
2015-01-09 15:14:06 -06:00
3116bf97de Use correct buffer size in string subscript operator. 2015-01-09 07:12:25 -08:00
bcf052436f Merge pull request #94 from edsrzf/fix-neg-number
Don't treat negative numbers as literals
2015-01-09 07:00:12 -08:00
75d28c083c Don't treat negative numbers as literals
Fixes #93.

Previously, "1 -1" was lexed as two number tokens: a positive literal and
a negative literal. This caused problems when it came to parsing.

Now the '-' and the second number are separate tokens.

Note this is a breaking change, since `-16.sqrt` is now parsed as `-(16.sqrt)`,
as opposed to `(-16).sqrt`.

There is a small bit of overhead to doing it this way, but it might be possible
to optimize that out in the compiler at some point in the future.
2015-01-09 20:17:40 +13:00
a9f1d52ef7 Merge branch 'improve-debugging' of git://github.com/gsmaverick/wren into gsmaverick-improve-debugging 2015-01-08 21:49:20 -08:00
15b0d8777c Handle toString not returning a string in IO.print and IO.write.
Fix #67.
2015-01-08 07:53:37 -08:00
09bb28735c Merge branch 'feature-shebang-support' of git://github.com/mauvm/wren into mauvm-feature-shebang-support 2015-01-04 13:02:42 -08:00
a9bb2387a1 Handle empty (or comment-only) files. Fix #57. 2015-01-04 13:00:53 -08:00
7f90485cff Let the user know the arity of a missing method in the error message. 2015-01-04 14:42:11 -05:00
4200f18f83 Rename test for invalid shebang. 2015-01-04 20:09:33 +01:00
6c549e0cc5 Use lexError() and add test for invalid shebang. 2015-01-04 19:56:16 +01:00
8a54ef9919 Add tests. 2015-01-03 20:53:17 +01:00
c25cfca18b Eliminate semicolons entirely. 2015-01-03 10:02:45 -08:00
c967439ead Add Fiber.abort() method. 2015-01-01 10:40:14 -08:00
a94dfdac10 Add test for too many constants in one function. 2014-12-06 16:39:39 -08:00
f6cbb6ad75 Add Fiber.try(). 2014-10-15 06:36:42 -07:00
feb9f7cb53 Fix crash bug in closure capturing. 2014-04-24 17:52:53 -07:00
80a4eb8c9c Better error message on too many inherited fields. 2014-04-22 07:06:26 -07:00
3087daaece Add a closure test. 2014-04-19 17:48:06 -07:00
09c707e16a More tests for super calls. 2014-04-19 11:51:36 -07:00
48dab5323d A few small cleanups. 2014-04-19 11:44:51 -07:00
05717e763d Move tests to right directory. 2014-04-19 11:41:21 -07:00
f03895b17e Symmetric coroutines! 2014-04-14 07:23:05 -07:00
7393e12555 Allow multiple arguments to IO.print(). 2014-04-09 07:48:35 -07:00
b2941cbbb6 Docs for operators and some other stuff. 2014-04-08 21:18:17 -07:00
3a55acfe1a Test string concatenation. 2014-04-08 21:17:49 -07:00
dca58ff747 Require parentheses around operator and setter arguments. 2014-04-08 17:54:37 -07:00
f6dd88937b Support "new" on lists. 2014-04-08 07:31:23 -07:00
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