Commit Graph

155 Commits

Author SHA1 Message Date
kyren ba183b0119 Fix quadratic behavior in bind 2017-10-23 14:50:47 -04:00
kyren 4b7a3403bc Cleanups of userdata handling, particularly around callbacks
First, make sure that `add_methods` cannot trigger another userdata registry
insert, causing an unintended panic.  Second, remove `RefCell` surrounding
userdata hashmap, as this change makes it no longer needed.  Third, add a
`RefCell` around `Callback` because FnMut means that callbacks cannot recurse
into themselves, and panic appropriately when this happens.  This should
eventually be turned into an error.
2017-10-14 18:26:09 -04:00
kyren c5a4dfd7eb more reorganization, move simple type defines to types.rs module 2017-09-30 01:27:18 -04:00
kyren 8324d9e648 move userdata tests into userdata.rs 2017-09-30 01:13:58 -04:00
kyren 7a45490aca crudely move LightUserData/UserData/AnyUserData to their own module 2017-09-30 01:08:08 -04:00
kyren cf764fbabe move table tests to table.rs 2017-09-30 00:53:28 -04:00
kyren f785180a77 Merge pull request #45 from jonas-schievink/string
Extend String API
2017-09-30 00:43:19 -04:00
kyren cc502379c1 Print CallbackError in a better way
CallbackError now, instead of displaying the cause description, instead prints
"callback error: <traceback>".  Since the cause is already in the cause chain of
the error, this avoids repeatedly printing the cause of callback errors along
the chain, and also actually prints the callback when using Display on each
error in the chain.
2017-09-26 11:36:50 -04:00
kyren 61dc2823a6 Merge pull request #47 from jonas-schievink/base--
Don't load the base library into the "base" global
2017-09-16 21:09:33 -04:00
Jonas Schievink a7a080b50a Don't load the base library into the "base" global
The stock Lua interpreter doesn't do this either. AFAIK the "base" library is supposed to be loaded into "_G" only as it contains functions like `assert` and `error`.
2017-09-17 00:07:19 +02:00
Jonas Schievink a5b6d8fc85 Add String::as_bytes_with_nul
This cannot be accomplished without using unsafe code, which justifies this addition in my opinion.

Also changes "null" to "nul" to be in sync with `std::ffi` docs. Naming is derived from `CStr::to_bytes_with_nul`, using `as_*` instead of `to_*` since this isn't doing any computation.
2017-09-15 23:33:28 +02:00
Jonas Schievink 0e4414fc0b Impl AsRef<[u8]> and generic PartialEq for String
Tests are also moved to the new string.rs file to ensure related functionality is in one place.
2017-09-15 23:10:53 +02:00
Jonas Schievink 823dd39e5d Move string and table wrappers into own files 2017-09-15 22:03:14 +02:00
Jonas Schievink 14d8b4a0a2 Fix links in Variadic docs 2017-09-15 20:56:46 +02:00
Jonas Schievink 22cbed0240 More documentation work 2017-09-14 22:59:59 +02:00
kyren d862c0f08e Add methods to get/set metatables on Table
Also make Table::raw_get actually use raw get function instead of lua_gettable!
2017-09-10 19:14:51 -04:00
kyren 13dc68c36d Rename 'lua lifetimes to actually be 'lua 2017-09-09 21:29:22 -04:00
kyren 5bf228fbd0 Fixup grammar error in doc comments. 2017-08-03 17:07:54 -04:00
kyren 50436d3463 autoformatting 2017-08-03 02:03:28 -04:00
kyren ffc9b032e7 Riiight, doctests don't even *show* warnings by default, this flag is important. 2017-08-02 17:12:34 -04:00
kyren b03397137b deny(warnings) on doctests I don't think is necessary anymore? 2017-08-02 16:37:55 -04:00
kyren 7c32ace204 Whoops, was testing removing that and placed it back in the wrong place 2017-08-02 16:37:30 -04:00
kyren 2553623b65 Provide custom allocators that ensure that OOM results in an abort
(closes unsafety hole)
2017-08-02 16:33:48 -04:00
kyren 16f57d18e5 Merge pull request #34 from jonas-schievink/better-error
[WIP] Enhanced errors
2017-08-02 16:00:08 -04:00
kyren c3c7d8c093 setmetatable should return the table 2017-08-02 15:56:16 -04:00
Jonas Schievink dd1d335cee Handle LUA_ERRERR 2017-08-02 21:41:35 +02:00
kyren 9c34d4b99f Fix soundness problems with rlua
setmetatable now wraps a __gc method in a cclosure that aborts on error, also
'debug' library is no longer provided.  We could provide just the subset of the
debug library that is sound, though.
2017-08-02 14:36:54 -04:00
kyren 820c38e806 Rename Active / Dead to better reflect their behavior 2017-08-02 13:05:26 -04:00
kyren f9f3d05804 Fix argument bugs with pcall / xpcall, add tests for it 2017-08-02 10:42:18 -04:00
Jonas Schievink 70f05ac068 Remove ErrorError 2017-08-02 14:01:00 +02:00
Jonas Schievink a43bfd8f63 Remove expected field from FromLuaConversionError 2017-08-02 13:56:28 +02:00
kyren f6cefca916 Remove stray 'for<'a>' of unused 'a lifetime 2017-08-01 18:35:09 -04:00
Jonas Schievink a1626399c4 Fix compilation 2017-08-01 23:43:51 +02:00
Jonas Schievink cb61d53ba5 Fix error message and shorten code 2017-08-01 23:42:42 +02:00
Jonas Schievink ed6e7ed5e7 Don't dispose whole traceback when it's not utf-8 2017-08-01 23:38:12 +02:00
Jonas Schievink 38a13c906e Remove "lua" prefix from error messages
Since this is `rlua::Error`, it should be clear that it refers to
Lua-related errors. Downstream crates want to define their own error
enums, which can add a prefix like "lua error:" to disambiguate.
2017-08-01 23:23:31 +02:00
Jonas Schievink bf76e41487 Merge IncompleteStatement into SyntaxError
Both are a form of syntax error, this reflects that better. No
functionality is lost, incomplete inputs are moved to a bool field of
SyntaxError.
2017-08-01 23:23:31 +02:00
Jonas Schievink ed0565c176 Fix handling of CallbackError
Previously, the traceback would be printed, but not the actual error.

I've removed traceback printing completely, not sure if that's a good
idea. A `Display` impl that outputs multiple lines feels weird.
2017-08-01 23:23:31 +02:00
Jonas Schievink 7e250dacce Enhance error messages 2017-08-01 23:23:31 +02:00
kyren f44917ff83 Replace _: () with () everywhere 2017-08-01 14:09:47 -04:00
kyren 8e9c93b9d1 Formatting, only implement tuple conversion up to 12 2017-08-01 13:57:51 -04:00
kyren 48bf35dc5b Fix references to hlists in documentation, improve? Variadic usability
Also rename to/from/pack/unpack to pack/unpack/pack_multi/unpack_multi, I don't
know if this makes their usage clearer, and it IS a bit confusing that I'm
changing the meaning of the words 'pack' and 'unpack'
2017-08-01 13:55:08 -04:00
kyren c1abc18066 Merge remote-tracking branch 'origin/master' into tuples 2017-08-01 13:02:58 -04:00
kyren 721ffc462d Callbacks should be 'static again, fix #33
Every time I do lifetime transmutation, I get it wrong.
2017-08-01 12:11:28 -04:00
kyren d02e32a80a Remove the rest of the uses of pack / unpack 2017-07-31 01:27:35 -04:00
kyren 4549abbb85 Two major API changes to start with:
* Callbacks have generic argument and return types
* All variadics are done with tuples
2017-07-31 01:21:41 -04:00
kyren 8ba3886c96 Merge pull request #31 from jonas-schievink/clone-userdata
Relax requirements for UserData to impl FromLua
2017-07-30 14:57:35 -04:00
Jonas Schievink acabc3ec18 Relax requirements for UserData to impl FromLua
This was only allowed for `UserData` implementors that are also `Copy`.
This relaxes the requirement to be `Clone` instead.

While `Copy` makes sense to prevent allocations and other potentially
costly operations, other `FromLua` impls already do pretty expensive
stuff, so this seems worth it.
2017-07-29 15:53:37 +02:00
kyren ac37b2a0d4 Small typo fix 2017-07-28 10:57:19 -04:00
Jonas Schievink ad6cf21921 Document Error
I didn't yet document *everything* there is to say (in particular, how
exactly custom Rust errors can be passed through Lua), but I've some
changes to this type in mind that I'll do next.
2017-07-28 12:50:30 +02:00