Commit Graph

7601 Commits

Author SHA1 Message Date
Niko Matsakis
e712a47a81 create serialization lib and update serializer to use it 2012-02-10 20:48:29 -08:00
Niko Matsakis
0263039ca0 use absolute names when pretty-printing types 2012-02-10 20:48:28 -08:00
Niko Matsakis
fdddf8f9e1 put serializer into the build and encode full item paths 2012-02-10 20:48:28 -08:00
Niko Matsakis
dbcb54f4dc create serializer project which autogenerates serialization code 2012-02-10 20:48:28 -08:00
Niko Matsakis
5d57fa3403 update ebml interface 2012-02-10 20:48:28 -08:00
Niko Matsakis
efd393d613 Remove dead code 2012-02-10 20:48:28 -08:00
Ted Horst
9fde2a54f4 use task::spawn_sched to read stdout and stderr at the same time
Hopefully this addresses the root cause of the hangs when running make check on windows.
2012-02-10 19:42:32 -08:00
Ted Horst
a7a1152db5 put fflush back in 2012-02-10 19:42:32 -08:00
Ted Horst
9fd2fcc99c read stderr before stdout
tests all write to stderr, so read stderr first to keep from blocking while reading stdout
2012-02-10 19:42:32 -08:00
Ted Horst
36d5074f8f log to stderr instead of stdout
includes rustc diagnostics
runtest updated to check stderr for errors
2012-02-10 19:42:32 -08:00
Brian Anderson
17110fb28b test: Add tests for #1802 2012-02-10 15:43:35 -08:00
Brian Anderson
b9e0ee8e7e rt: Add docs to stack functions 2012-02-10 12:58:35 -08:00
Brian Anderson
3af4b2c998 rt: Call register/deregister_valgrind_stack from the stack con/destructors 2012-02-10 12:58:35 -08:00
Brian Anderson
3406da49d9 rt: Extract prepare_valgrind_stack from register_valgrind_stack 2012-02-10 12:58:35 -08:00
Brian Anderson
c42492e6aa rt: Rename config_valgrind_stack to register_valgrind_stack, etc 2012-02-10 12:58:35 -08:00
Brian Anderson
dd0ae80e63 rt: Account for the size of stack_canary in create_stack 2012-02-10 12:58:35 -08:00
Brian Anderson
fc028c30a0 rt: Move the addition of the stack canary into create_stack 2012-02-10 12:58:35 -08:00
Brian Anderson
8e55d3130a rt: Use 100k stacks for scheduler threads 2012-02-10 11:53:30 -08:00
Marijn Haverbeke
7f1ea3ef6a Don't allow binding patterns to bind keywords
Closes #1586
2012-02-10 15:54:47 +01:00
Marijn Haverbeke
fe8a31e569 Remove a vestige of return-by-reference 2012-02-10 14:33:36 +01:00
Marijn Haverbeke
107f827b53 Fix mistake in typechecker error refactor 2012-02-10 13:59:05 +01:00
Marijn Haverbeke
74d4e2a32e Add compile-fail tests for interfaces/impls
Closes #1475
2012-02-10 13:31:33 +01:00
Marijn Haverbeke
d01e7cd340 Represent boxed ifaces in a way similar to functions
They are now a (dictptr, box) pair, where box is a regular boxed
representation of the inner type. This cuts down on some special
case code.

Also removes some code from trans::base that was moved to shape but
then somehow restored in trans::base through a bad merge.

Starts on issue #1567
2012-02-10 12:36:57 +01:00
Marijn Haverbeke
b17348527e Complain about multiple methods in scope only once
Closes #1803
2012-02-10 09:53:05 +01:00
Marijn Haverbeke
a681628bd4 Output meaningful lexer error when no digits given for number
Closes #1802
2012-02-10 09:50:16 +01:00
Brian Anderson
d493438c98 rt: Disable some expensive asserts 2012-02-09 22:58:40 -08:00
Brian Anderson
d90a9d3da0 rt: Inline everything on the C-stack-switching path 2012-02-09 22:15:15 -08:00
Brian Anderson
dff256cd19 rt: Move valgrind stack configuration out of the hot path 2012-02-09 21:27:50 -08:00
Brian Anderson
81e1564a7d rt: Detach pthreads before exiting
Joinable pthreads need to be either joined or detached and we no
longer join with the scheduler threads.
2012-02-09 19:00:16 -08:00
Brian Anderson
5d8d591ffc rt: Remove sync::yield and sync::sleep 2012-02-09 19:00:16 -08:00
Brian Anderson
421c8db144 rt: Move rust_thread to its own files 2012-02-09 19:00:16 -08:00
Brian Anderson
8ad9cf8087 rt: Add more stack-switching commentary 2012-02-09 19:00:16 -08:00
Brian Anderson
5d2442d89c rt: Add upcall_call_shim_on_rust_stack 2012-02-09 19:00:16 -08:00
Brian Anderson
79b1563abb rt: Use rust_task_thread's C-stack pool for native calls 2012-02-09 19:00:16 -08:00
Brian Anderson
bfb80064d2 rt: Add methods to rust_task_thread for borrowing C stacks 2012-02-09 19:00:16 -08:00
Brian Anderson
8fe506bdca rt: Move more setup code into create_stack 2012-02-09 19:00:16 -08:00
Brian Anderson
ea76d3f454 rt: Add rust_task::call_on_c_stack 2012-02-09 19:00:16 -08:00
Brian Anderson
1e2fe4ab8f rt: Rename call_shim_on_c_stack to call_and_change_stacks 2012-02-09 19:00:15 -08:00
Brian Anderson
0667fb4e63 rt: Make rust_task::ref_count private 2012-02-09 19:00:15 -08:00
Brian Anderson
ae8ea4a78b rt: Add constructors and destructors for stacks 2012-02-09 19:00:15 -08:00
Brian Anderson
b98df86c09 rt: Move some stack manipulation functions into rust_task 2012-02-09 19:00:15 -08:00
Brian Anderson
4bd8f8d936 rt: Rename new_stack to next_stack, del_stack to prev_stack 2012-02-09 19:00:15 -08:00
Brian Anderson
889a783494 rt: Remove rust_task::rust_sp 2012-02-09 19:00:15 -08:00
Brian Anderson
d39ea47746 rt: Remove rust_task_user struct 2012-02-09 19:00:15 -08:00
Brian Anderson
1dad32c015 rt: Remove unused builtins 2012-02-09 19:00:15 -08:00
Brian Anderson
ae2968d10a core: Use rust_task_config_notify instead of twiddling rust_task's innards 2012-02-09 19:00:15 -08:00
Brian Anderson
d756b01619 rt: Add a function for configuring task notification 2012-02-09 19:00:15 -08:00
Brian Anderson
e0d5b92b84 rt: Begin moving stack-building functions to rust_stack.cpp 2012-02-09 19:00:15 -08:00
Brian Anderson
2983e77383 rt: Remove unused context functions 2012-02-09 19:00:15 -08:00
Jyun-Yan You
b778dac197 fix build on freebsd 2012-02-09 18:41:57 -08:00
Tim Chevalier
372cf4954c suppress warning 2012-02-09 14:39:23 -08:00
Tim Chevalier
503dec1d62 Further WIP on classes
Changes to resolve and typeck. Still nothning working yet.
2012-02-09 14:36:43 -08:00
Brian Anderson
9effae8413 Merge pull request #1794 from matricks/bugfix
fixed memmove. were using memcpy due to copy paste error
2012-02-09 13:47:55 -08:00
Brian Anderson
1ccbba3341 cargo: Disable system mode per discussion on #1760 2012-02-09 13:42:59 -08:00
Magnus Auvinen
a422cd7ddb fixed memmove. were using memcpy due to copy paste error 2012-02-09 21:47:12 +01:00
Tycho Sci
d846169b15 cargo: 2 modes -> 3 modes, and clarify them
* -g or --mode=user to create/use .cargo under $HOME
* -G or --mode=system to create/use .cargo under sysroot
* by default, `cargo` uses .cargo under current working directory
2012-02-09 12:15:30 -08:00
Tycho Sci
48e206ee81 cargo: Add local mode and use it by default 2012-02-09 12:15:30 -08:00
Marijn Haverbeke
0b4851cff6 Fix bug in decoding of method metadata 2012-02-09 17:08:54 +01:00
Marijn Haverbeke
02082be4a7 Fix various bugs in monomorphization
Enough to be able to compile librustc with --monomorphize.

Issue #1736
2012-02-09 15:30:48 +01:00
Marijn Haverbeke
52a741754c Remove some pointless imports 2012-02-09 15:30:27 +01:00
Marijn Haverbeke
50fb4c30ed Increase precedence of as operator
Closes #1717
2012-02-09 11:58:08 +01:00
Marijn Haverbeke
1dc5e1aa94 Monomorphize methods and bounded parameters
Issue #1736
2012-02-09 11:58:07 +01:00
Brian Anderson
149d1d4a6e core: Add a test for blocking in native code 2012-02-08 15:42:51 -08:00
Brian Anderson
35ba9715fa core: Add task::spawn_sched
This function creates a new scheduler with a specified number of threads and
immediately executes a task on it. The scheduler is configured to terminate
when the task dies. This is the minimum API necessary to enable blocking C
calls.
2012-02-08 15:42:51 -08:00
Brian Anderson
2f4e7c157e rt: Export a scheduler API 2012-02-08 15:42:51 -08:00
Brian Anderson
f2a1aa2649 rt: Hold schedulers in a map 2012-02-08 15:42:51 -08:00
Brian Anderson
028af5cb6c rt: Change the lifecycle of tasks and schedulers for various reasons
This is in preparation for giving schedulers their own life cycle separate
from the kernel.

Tasks must be deleted before their scheduler thread, so we can't let the
scheduler exit before all its tasks have been cleaned up. In this scheme,
the scheduler will unregister tasks with the kernel when they are reaped,
then drop their ref on the task (there may still be others). When the task
ref count hits zero, the task will request to be unregistered from the
scheduler, which is responsible for deleting the task.

Instead of having the kernel tell the scheduler to exit, let the scheduler
decide when to exit. For now it will exit when all of its tasks are
unregistered.
2012-02-08 15:42:51 -08:00
Brian Anderson
ebc3646c39 rt: Start schedulers immediately upon creation 2012-02-08 15:42:51 -08:00
Brian Anderson
7685e5de94 rt: Refactor the rust_kernel interface a bit 2012-02-08 15:42:47 -08:00
Brian Anderson
ad80823a6c rt: Introduce scheduler ids 2012-02-08 15:33:40 -08:00
Brian Anderson
c76b81cddf rt: Delete schedulers immediately upon release
This will be needed once we support dynamically changing schedulers.
2012-02-08 15:33:40 -08:00
Brian Anderson
f39e64d56a rt: Change the scheme used for terminating the kernel
Instead of joining on the scheduler threads, instead keep a count of active
schedulers. When there are no more schedulers raise a signal for the main
thread to continue.

This will be required once schedulers can be added and removed from the
running kernel.
2012-02-08 15:33:40 -08:00
Brian Anderson
6eafe5d772 rt: Remove is_running flag from rust_thread. Unused 2012-02-08 15:33:40 -08:00
Brian Anderson
fad3de5900 rt: Remove rust_scheduler::rval. Unused 2012-02-08 15:33:40 -08:00
Tim Chevalier
48769b57e0 A bit more WIP on classes, and some cleanup in resolve 2012-02-08 15:21:45 -08:00
Niko Matsakis
6e680e36a7 deprecate old style box shape strings 2012-02-08 13:10:20 -08:00
Niko Matsakis
a6dde7766e fix bug that causes premature pops from obstack
basically, the alignment step did not check if it walked off
the end of the buffer
2012-02-08 12:55:19 -08:00
Erick Tryzelaar
3a413aabd4 core: add str::as_bytes function
This pattern is used in a couple places, so it'd be nice
to abstract it away.
2012-02-08 10:18:36 -08:00
Niko Matsakis
526e73d7f8 make shape code use the tydesc found in the box, not the shape str 2012-02-08 09:14:59 -08:00
Graydon Hoare
3a1e33e134 Register new snapshots. 2012-02-08 07:58:42 -08:00
Marijn Haverbeke
8ffd6e4e8a Suppress warnings in compiletest 2012-02-08 10:45:50 +01:00
Marijn Haverbeke
0547d0cc5b Monomorphize resource and variant constructors
Issue #1736
2012-02-08 10:45:50 +01:00
Brian Anderson
7c8d128e1f bench: Add shootout-spectralnorm 2012-02-08 01:06:16 -08:00
Brian Anderson
708f7b927c core: Export floor functions 2012-02-07 22:02:55 -08:00
Brian Anderson
9b01620e8d rt: Don't ignore result of chdir. Fail hard for now with a FIXME
My gcc won't let the result of this function be ignored.
2012-02-07 20:28:57 -08:00
Brian Anderson
6cf40bd0c4 std: Use correct split function in generic_os::env 2012-02-07 20:20:58 -08:00
Graydon Hoare
93450abb4b Make process-spawning take environments and working directories, remove procsrv task from compiletest. 2012-02-07 19:57:03 -08:00
Tim Chevalier
5131216fa6 Restore a comment that got lost (comments only) 2012-02-07 17:08:03 -08:00
Brian Anderson
0c13ee22ad core: Use substr in extfmt instead of slice_bytes 2012-02-07 16:34:02 -08:00
Kevin Cantu
1aa23947a6 core: add str::splitn_char and fix str::splitn_char_iter 2012-02-07 16:25:35 -08:00
Kevin Cantu
2b0396c34a core: make str::substr use char positions (and replace other uses) 2012-02-07 16:25:35 -08:00
Kevin Cantu
a3f5626ad1 String split renaming:
* Renamed str::split -> str::split_byte
* Renamed str::splitn -> str::splitn_byte
* Renamed str::split_func -> str::split
* Renamed str::split_char -> str::split_char
* Renamed str::split_chars_iter -> str::split_char_iter
* Added u8::is_ascii
* Fixed the behavior of str::split_str, so that it matches split_chars
  and split (i.e. ["", "XXX", "YYY", ""] == split_str(".XXX.YYY.", "."))
* Fixed str::split_byte and str::splitn_byte so that they handle
  splitting UTF-8 strings on a given UTF-8/ASCII byte and also handle ""
  as the others do
2012-02-07 16:25:35 -08:00
Brian Anderson
159aebc28b core: Whitespace policia 2012-02-07 15:08:54 -08:00
Magnus Auvinen
a5fc0b08de added some documentation and made the memcpy and memmove unsafe 2012-02-07 15:08:54 -08:00
Magnus Auvinen
3e9859362b made leak an intrinsic to avoid a c-call. added memmove and memcpy intrinsics 2012-02-07 15:08:54 -08:00
Tim Chevalier
a63780afce Minor class-related tweaks to the AST 2012-02-07 12:15:59 -08:00
Marijn Haverbeke
47143ee24a Stop storing cmp glue in tydescs
There's no such thing anymore, we can simply call upcalls.cmp_type.
2012-02-07 14:37:10 +01:00
Marijn Haverbeke
b28a5552e3 Reuse monomorphized functions for different box types
The free glue for opaque boxes will pick the actual tydesc out of the
box, and call its glue.

Issue #1736
2012-02-07 14:36:02 +01:00
Brian Anderson
3bd0338c19 Revert "log to stderr instead of stdout"
This is causing mysterious hangs on windows. Issue #1769.

This reverts commit d65eabd5de.
2012-02-06 18:29:58 -08:00
Jyun-Yan You
5563eab227 change gcc_args to cc_args and make win32 use gcc 2012-02-06 17:57:22 -08:00
Jyun-Yan You
98bb5b73a5 use cc instead of gcc 2012-02-06 17:56:41 -08:00
Marijn Haverbeke
87a488048d Make keyword table in reference reflect reality more closely
And remove the part about reserved words.
2012-02-06 22:03:17 +01:00
Marijn Haverbeke
a08e589390 Handle built-in typenames in the resolve pass, rather than in parser
Closes #1728

Comments out a section of debuginfo.rs. This code was already broken
(only being called when --xg was passed, and only working on trivial
programs).
2012-02-06 17:06:19 +01:00
Marijn Haverbeke
8673c4f195 Make ty::t type self-sufficient
It is now no longer needed to have a ty::ctxt to get at the contents
of a ty::t. The straight-forward approach of doing this, simply making
ty::t a box type, unfortunately killed our compiler performance (~15%
slower) through refcounting cost. Thus, this patch now represents
ty::t as an unsafe pointer, assuming that the ty::ctxt, which holds
these boxes alive, outlives any uses of the ty::t values. In the
current compiler this trivially holds, but it is does of course add a
new potential pitfall.

ty::get takes a ty::t and returns a boxed representation of the type.
I've changed calls to ty::struct(X) to do ty::get(X).struct. Type
structs are full of vectors, and copying them every time we wanted to
access them was a bit of a cost.
2012-02-06 16:53:25 +01:00
Marijn Haverbeke
6ed8d03784 Make sure iface_methods are set before they are accessed
Closes #1761
2012-02-06 09:56:42 +01:00
Ian D. Bollinger
d1158ca333 Removed sendfn from badwords and made the precedence of XOR between that of OR and AND. 2012-02-06 09:56:41 +01:00
Marijn Haverbeke
91da710d86 Add monad iface test 2012-02-06 09:56:41 +01:00
Marijn Haverbeke
e0fa5cd2ed Self types for ifaces
This allows a 'Name:' to appear in front of an iface declaration's
name, which will cause 'Name' to refer to the self type (with the same
number of type parameters as the iface has) in the method signatures
of the iface. For example:

    iface F: functor<A> {
        fn fmap<B>(f: fn(A) -> B) -> F<B>;
    }

Issue #1718
2012-02-06 09:56:41 +01:00
Marijn Haverbeke
5c42e3df9c Allow non-semicolon-requiring expressions to be followed by .field
There is no valid expression that starts with a dot token (.5 is a number token),
so this introduces no ambiguities.

Issue #1716
2012-02-06 09:13:32 +01:00
Brian Anderson
da61e1ff15 test: Add test for issue #1460 2012-02-05 20:42:05 -08:00
Erick Tryzelaar
be35893834 core: Implement str::escape with str::chars_iter. 2012-02-05 19:42:56 -08:00
Erick Tryzelaar
1a7aa20eab vim: block is no longer a keyword. 2012-02-05 19:42:56 -08:00
Brian Anderson
1b3339df63 test: Issue #953, not #959 2012-02-05 18:29:07 -08:00
Brian Anderson
292f3e0958 test: Add an xfailed test for issue #959 2012-02-05 18:27:15 -08:00
Brian Anderson
cbeeb13dfd test: Add an xfailed test for issue #929 2012-02-05 18:24:17 -08:00
Brian Anderson
80cd6aa96e test: Update and un-xfail compile-fail/tag-that-dare-not... 2012-02-05 18:06:54 -08:00
Brian Anderson
0b43bf9782 test: Add test for #901. Closes #901 2012-02-05 17:54:52 -08:00
Brian Anderson
c04b897cb2 core: Resolve some FIXMEs 2012-02-05 17:30:47 -08:00
Brian Anderson
34aa956e68 test: Resolve some FIXMEs 2012-02-05 17:05:24 -08:00
Brian Anderson
67b1034989 rustdoc: Resolve some FIXMEs 2012-02-05 16:38:18 -08:00
Brian Anderson
fdf50e84b8 std: Use ctypes::c_int in path_is_dir 2012-02-05 16:21:52 -08:00
Kevin Atkinson
b7ec2488ff Fix macro backtraces.
In addition add information about the macro doing the expansion, and
move the printing of the expansion backtrace from codemap::span_to_str
to the diagnostic code.  The backtrace is now more verbose and
includes information on the macro doing the expansion, in addition to
the expansion site.
2012-02-05 15:38:27 -08:00
Kevin Atkinson
1d855ebc51 Remove support for $(...) form of quasi-quotes, use #ast{...} instead. 2012-02-05 15:38:27 -08:00
Brian Anderson
91b6dc5c8e Merge remote-tracking branch 'erickt/master'
Conflicts:
	src/libcore/vec.rs
	src/libstd/getopts.rs
2012-02-05 15:15:21 -08:00
Kevin Cantu
6be25c8a0c Adding str::reserve 2012-02-05 14:56:16 -08:00
Kevin Cantu
d3dfe8758d Making vec::reserve reserve precisely the size given (untested) 2012-02-05 14:56:16 -08:00
Niko Matsakis
9f0239ce9c add a test where mode inference ought to fail 2012-02-05 13:59:09 -08:00
Niko Matsakis
dd51031390 new test case 2012-02-05 10:37:07 -08:00
Niko Matsakis
966504c828 don't fail if inference is not complete 2012-02-05 10:06:27 -08:00
Niko Matsakis
daf0d63a59 new test showing off the improved inference 2012-02-05 09:56:18 -08:00
Niko Matsakis
7f12358656 resolve some merge failures 2012-02-05 09:56:10 -08:00
Niko Matsakis
77b06d24cd infer modes rather than overwriting with expected ty 2012-02-05 09:12:44 -08:00
Niko Matsakis
5163606d06 platform-specific valgrind suppression 2012-02-05 09:07:23 -08:00
Brian Anderson
30a671dc0c bench: Tweak threadring benchmark so it pretty-prints 2012-02-04 20:34:51 -08:00
Brian Anderson
b4e221bf90 bench: Add threadring shootout benchmark 2012-02-04 20:01:55 -08:00
Brian Anderson
5d4b372902 Revert "bench: Add threadring shootout benchmark"
This reverts commit cdb246f832.
2012-02-04 19:50:45 -08:00
Brian Anderson
cdb246f832 bench: Add threadring shootout benchmark 2012-02-04 18:00:59 -08:00
Brian Anderson
e818406072 rt: Expand rust_kernel::live_tasks to a uintptr_t 2012-02-04 01:15:00 -08:00
Brian Anderson
9fa950ec53 rt: Stop using atomic ops on rust_kernel::live_tasks
These ops are all done within spitting distance of a suitable lock,
so just protect it with the lock.
2012-02-04 00:31:43 -08:00
Brian Anderson
21d783c338 rt: Make isaac_init not a template 2012-02-03 23:48:12 -08:00
Brian Anderson
f7a727e861 rt: Remove some silly locks in rust_scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
c7777f4fd9 rt: Add sanity checks when we hit the max task/port id 2012-02-03 23:48:12 -08:00
Brian Anderson
12fa90888e rt: Clean up the way the kernel tracks tasks 2012-02-03 23:48:12 -08:00
Brian Anderson
e7f00b6493 rt: Do all task creation through a scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
bf250bec7c rt: Create new tasks through the current thread's scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
3d0e7a7af3 rt: Add a field to rust_task to hold its scheduler 2012-02-03 23:48:12 -08:00
Brian Anderson
8d881967a2 rt: Extract rust_scheduler from rust_task_thread 2012-02-03 23:48:12 -08:00
Brian Anderson
f94339cc1c rt: Rename rust_scheduler to rust_task_thread 2012-02-03 23:48:12 -08:00
Tim Chevalier
f3343b3571 Beginnings of front-end support for classes
Added class support to the parser, prettyprinter, fold, and visit.
(See Issue 1726.)

This is WIP -- the test case is xfailed, and attempting to compile
it will error out in resolve.
2012-02-03 22:47:35 -08:00
Ted Horst
d65eabd5de log to stderr instead of stdout
includes rustc diagnostics
runtest updated to check stderr for errors
2012-02-03 20:55:53 -08:00
Ted Horst
9b46e875cc add third arg for output path, default to no output 2012-02-03 20:49:14 -08:00
Ted Horst
63ae16f752 fix formatting 2012-02-03 20:49:14 -08:00
Ted Horst
e7738ca38b add mandelbrot image generator from shootout 2012-02-03 20:49:13 -08:00
Graydon Hoare
8fc624bc08 Fix various drift issues in the qq branch. 2012-02-03 20:54:18 -07:00
Kevin Atkinson
dbb13883f7 Additional testcase. 2012-02-03 20:54:18 -07:00
Kevin Atkinson
3604f36938 Implement folding of ast::ty. 2012-02-03 20:54:17 -07:00
Kevin Atkinson
42e25b2bb9 Type anti-quotes now work, add test case. 2012-02-03 20:54:17 -07:00
Kevin Atkinson
5f6a1159bb Fix q-q so that non-expression q-q actually work when there is embed anti-q. 2012-02-03 20:54:00 -07:00
Kevin Atkinson
a2dde9a692 Allow anti-quotes to also be ast::ty rather than just ast::expr. 2012-02-03 20:41:49 -07:00
Kevin Atkinson
f7fab77102 Add testcase. 2012-02-03 20:41:49 -07:00
Kevin Atkinson
6dcd12dc22 Implement quasi-quoting of multiple syntatic categories. 2012-02-03 20:41:49 -07:00
Kevin Atkinson
35a199c036 Formatting cleanups. 2012-02-03 20:41:49 -07:00
Kevin Atkinson
9090a5c03b Store info about file "substr".
That is when a string that is part of a file needs to be parsed for a
reason, record that the string is a substr of the file rather than
using "<anon>" or "-" as the file name.  This will eventually allow
pointing to the right location, for now it just uses a more
meaningful string for the filename.
2012-02-03 20:41:49 -07:00
Kevin Atkinson
4d71285c93 Implement quasi-quotes in more macro form: #ast{...}.
The #(...) form is still supported for now.
2012-02-03 20:41:49 -07:00
Kevin Atkinson
1c91fb4d91 Don't rely on filename to get a file from the filemap
as there may be more than one filemap with the same filename (in the
case of stdin for instance).  This involved storing a pointer to the
filemap rather than the filename in location info such as
codemap::pos.
2012-02-03 20:41:49 -07:00
Kevin Atkinson
4616117f17 Bug fix in lookup_byte_offset. 2012-02-03 20:41:49 -07:00
Kevin Atkinson
da74a7f9ca Make macro arg optional in syntax, again untested. 2012-02-03 20:41:48 -07:00
Kevin Atkinson
5ea04c65c1 Add support for recognizing macro body, completely untested. 2012-02-03 20:41:48 -07:00
Kevin Atkinson
e76fdeb3a6 Change the type for the macro body to also store the span.
Note: the body is the part of the macro syntax between the {}.
2012-02-03 20:41:48 -07:00
Kevin Atkinson
099290bc73 When replacing $(...) with $0 preserve spacing for better error messages.
That is:
  x + $(foo) + y
becomes:
  x + $0     + y
not:
  x + $0 + y
2012-02-03 20:41:37 -07:00
Kevin Atkinson
c0f9073557 Expand result of quasi-quote. 2012-02-03 20:39:00 -07:00
Kevin Atkinson
67e961c17f Implement anti-quotes. 2012-02-03 20:38:44 -07:00
Kevin Atkinson
477714f08e Implement "replace" function. 2012-02-03 20:28:12 -07:00
Kevin Atkinson
485e489ba2 Implement basic quasi-quoter. No anti-quotes yet. 2012-02-03 20:28:11 -07:00
Kevin Atkinson
98450d0dad Rename AST builders to use uniform naming scheme. Also add a few more. 2012-02-03 20:28:11 -07:00
Kevin Atkinson
5ef53382ae Add support for parsing quasi-quotes, doesn't do anything useful yet. 2012-02-03 20:23:49 -07:00
Kevin Atkinson
75edd9ff69 Move useful ast building functions into their own module. 2012-02-03 17:48:17 -08:00
Kevin Atkinson
9dcb674525 Add function to get a code snippet from a span,
and also to get the byte offset within a string from a span chpos.
2012-02-03 17:48:17 -08:00
Kevin Atkinson
e127bf680f Fix byte_len in char_len_range to be what it is advertised. 2012-02-03 17:48:16 -08:00
Niko Matsakis
33f4a98388 correct to use enum keyword 2012-02-03 13:58:50 -08:00
Marijn Haverbeke
61367e3c27 Fix prefixing of logging paths with crate name 2012-02-03 22:12:09 +01:00
Brian Anderson
a57c15bf88 rustdoc: Add various sorting passes 2012-02-03 12:00:49 -08:00
Marijn Haverbeke
c976b7c623 Fix tests for str::le patch 2012-02-03 14:32:23 +01:00
Tom Lee
31b0d1b4bd core: rename str::lteq to str::le 2012-02-03 14:09:44 +01:00
Marijn Haverbeke
633e4502e7 Clean up and update trans::ty_ctxt type definition
It had been messed up by the pretty-printer at some point, and was
partially out of date.
2012-02-03 14:09:16 +01:00
Marijn Haverbeke
3bcd4fe6fa Start on in-crate monomorphizing
Adds a --monomorpize flag to rustc to turn it on. You probably don't
want to use it yet, since it's broken in a whole bunch of ways, but it
successfully monomorphizes simple generic functions called from within
the crate.

Issue #1736
2012-02-03 14:07:35 +01:00
Tom Lee
a02f332602 std: rename sort::lteq to sort::le. 2012-02-03 12:02:57 +01:00
Marijn Haverbeke
43ce38375d Store item paths in ast_map, get rid of trans::local_ctxt
The direct motivation for this was that the monomorphizer needs to be
able to generate sane symbols for random items. The typechecker can
probably also use this in the future to provide more useful error
messages.
2012-02-03 11:34:12 +01:00
Marijn Haverbeke
c1b075d042 Remove experimental GC code
It's been sitting unused long enough to have bitrotted completely.
2012-02-03 11:34:12 +01:00
Brian Anderson
1ea184285e rt: Change the win32 event object to an auto-reset event
The way I read the docs, having this be a manual reset event means
that after the first time it's signalled it stays that way until reset,
and we never, ever reset it.
2012-02-02 18:30:06 -08:00
Brian Anderson
3b4dd26ff1 rt: Remove lock_and_signal::signal_all 2012-02-02 18:29:03 -08:00
Brian Anderson
9c33f2c561 rt: Remove lock_and_signal::timed_wait 2012-02-02 18:25:49 -08:00
Brian Anderson
cd774fc5fa rt: Stop waking up the scheduler on a timer 2012-02-02 18:23:01 -08:00
Brian Anderson
b1a090c7c4 rt: Remove unused arguments in rust_scheduler 2012-02-02 18:17:33 -08:00
Brian Anderson
6c632c71c6 rt: Simplify reap_dead_tasks 2012-02-02 18:10:24 -08:00
Brian Anderson
f719ea552b rt: Remove rust_scheduler::interrupt_flag. Unused 2012-02-02 18:10:24 -08:00
Brian Anderson
aee83d2ff1 rt: Only wake up all schedulers when no tasks are left
At the moment there's not really any reason to be raising this signal,
since they schedulers wake up periodically anyway, but once we remove
the timer this will be how the schedulers know to exit.
2012-02-02 18:10:24 -08:00
Brian Anderson
5c3c8d454d rt: Do all signalling while holding a lock
This will matter once the scheduler is changed to not wake up on a timer
2012-02-02 18:10:24 -08:00
Brian Anderson
5449b886d3 rt: Remove bogus task reaping from the scheduler 2012-02-02 18:10:24 -08:00
Brian Anderson
3978fbff8b rt: Remove rust_task::can_schedule. Does nothing 2012-02-02 18:10:24 -08:00
Brian Anderson
ed3a5ad5ad rt: Remove running_on flag. Does nothing 2012-02-02 18:10:24 -08:00
Brian Anderson
57cad61353 rt: Remove task pinning. Does nothing 2012-02-02 18:10:24 -08:00
Brian Anderson
18de0f2aeb rt: Rename task_sleep intrinsic to task_yield. Remove usec param 2012-02-02 18:10:24 -08:00
Brian Anderson
8693fcc2d7 rt: Remove yield timers 2012-02-02 18:10:24 -08:00
Brian Anderson
7f2980b749 rt: Remove bitrotted tests 2012-02-02 18:10:24 -08:00
Brian Anderson
65f4b0587a rt: Generate intrinsics 2012-02-02 18:10:23 -08:00
Brian Anderson
bda40e2e4a rt: Fix intrinsics bustage
intrinsics.cpp and the file to generate the ll had bitrotted.
2012-02-02 18:10:23 -08:00
Graydon Hoare
c485301d21 Update libuv. 2012-02-02 17:39:47 -08:00
Graydon Hoare
6784b18303 Win32 warning police. 2012-02-02 11:35:07 -08:00
Marijn Haverbeke
6a7de641da Add test case for issue #1733 2012-02-02 10:30:07 +01:00
Marijn Haverbeke
743c62e1ce Fix assumption in mut.rs that op overloading breaks
Closes #1733
2012-02-02 08:11:20 +01:00
Brian Anderson
2b67de06c8 rustdoc: Add support for type items 2012-02-01 22:41:54 -08:00
Kevin Cantu
ae0d49aa06 Rename str::char_slice -> str::slice 2012-02-01 21:56:53 -08:00
Kevin Cantu
fc9169f09c Make the tests work, too 2012-02-01 21:56:53 -08:00
Kevin Cantu
8f367ebfeb Rename (again) str::unsafe::slice -> str::unsafe::slice_bytes and
str::unsafe::safe_slice -> str::unsafe::slice_bytes_safe_range
2012-02-01 21:56:53 -08:00
Kevin Cantu
01c01f68af Stop exporting str::slice and str::safe_slice (use unsafe instead) 2012-02-01 21:56:53 -08:00
Kevin Cantu
c71667d9d2 Propagating unsafe::slice 4 2012-02-01 21:56:53 -08:00
Kevin Cantu
fceec03da0 Propagating unsafe::slice 3 2012-02-01 21:56:53 -08:00
Kevin Cantu
6156bc56cb Propagating unsafe::slice 2 2012-02-01 21:56:53 -08:00
Kevin Cantu
47c57a17dc Propagating unsafe::slice 1 2012-02-01 21:56:53 -08:00
Kevin Cantu
4e406d7fdd Make it work 1 2012-02-01 21:56:53 -08:00
Kevin Cantu
cccf9e5389 Copy str::slice -> str::unsafe::slice (and unsafe_slice) 2012-02-01 21:56:53 -08:00
Kevin Cantu
5a19bafeea Actually export the str::unsafe module for now 2012-02-01 21:56:53 -08:00
Niko Matsakis
af2dd9b3b7 register new snapshot, revert USE_SNAPSHOT_RUNTIME setting 2012-02-01 21:02:19 -08:00
Niko Matsakis
196d69beb2 make boxes self-describing (fixes #1493)" (take 2)
this will be used to generate a new snapshot.
2012-02-01 18:52:08 -08:00
Niko Matsakis
3116643806 Revert "make boxes self-describing (fixes #1493)" until a new
snapshot is prepared.
2012-02-01 18:50:19 -08:00
Niko Matsakis
c36207bfb8 make boxes self-describing (fixes #1493) 2012-02-01 18:18:07 -08:00
Tim Chevalier
49cb3fc7df Remove remaining references to option::t outside option itself 2012-02-01 16:49:57 -08:00
Brian Anderson
4eb92d4177 rt: Don't access fields on null supervisor task 2012-02-01 16:46:11 -08:00
Brian Anderson
f76e6c39f6 rt: Fix lock_held_by_current_thread
This simplifies the check for thread ownership by removing the _locked flag
and just comparing against the thread ID of the last thread to take the lock.
If the running thread took the lock _holding_thread will be equal to
pthread_self(); if _holding_thread is some other value then the running thread
does not have the lock.

Setting a pthread_t to 0 like this is not portable but should work on every
platform we are likely to care about for the near future.
2012-02-01 16:06:58 -08:00
Brian Anderson
6b5f7865be rt: Remove unused variable from lock_and_signal 2012-02-01 16:06:21 -08:00
Brian Anderson
f954ce5ef1 rt: Remove calls to signal the kernel lock
Nobody ever waits for it
2012-02-01 16:05:17 -08:00
Brian Anderson
5c89938544 rt: Remove rust_timer. Unused 2012-02-01 16:05:17 -08:00
Brian Anderson
d24eb58a09 core: Ignore should_fail tests on win32 2012-02-01 15:35:59 -08:00
Marijn Haverbeke
694de53d28 Make vec::pop efficient 2012-02-01 12:23:13 +01:00
Marijn Haverbeke
2dbaa05af8 Remove support for native types
Issue #1673
2012-02-01 12:23:13 +01:00
Marijn Haverbeke
856a544d0c Remove native types from stdlib 2012-02-01 12:23:13 +01:00
Marijn Haverbeke
c6aead7281 Get rid of native types in LLVM module
Code is still somewhat kludgy because we don't have 32-bit enums.

Issue #1673
2012-02-01 12:23:13 +01:00
Brian Anderson
f6f3d518e6 rustdoc: Split the pruning of undocumented branches into two passes
prune_undoc_details_pass strips arguments and return values that are
undocumented. prune_undoc_items_pass prunes entire items.
2012-01-31 21:54:16 -08:00
Tim Chevalier
e204aa281d Merge branch 'master' into register-snapshots 2012-01-31 21:08:53 -08:00
Brian Anderson
e8a5d81b24 rustdoc: Add impl docs to demo mod 2012-01-31 20:59:42 -08:00
Brian Anderson
77824cf2ed rustdoc: Write markdown for impls 2012-01-31 20:54:46 -08:00
Tim Chevalier
11ecec1b71 register snapshots 2012-01-31 20:49:00 -08:00
Brian Anderson
f9f9388874 rustdoc: Apply string ops to impl docs 2012-01-31 20:42:06 -08:00
Brian Anderson
3f1534ad72 rustdoc: Promote impl descriptions to brief descriptions 2012-01-31 20:31:52 -08:00
Brian Anderson
d7a2837c55 rustdoc: Prune undocumented impls 2012-01-31 20:24:31 -08:00
Brian Anderson
fee9037765 rustdoc: Refactor tests 2012-01-31 19:32:27 -08:00
Brian Anderson
496205c85f rustdoc: Pull impl docs out of attributes 2012-01-31 19:32:27 -08:00
Brian Anderson
23042a3566 rustdoc: Gather types of impls 2012-01-31 19:32:27 -08:00
Brian Anderson
b7108d71a5 rustdoc: Rename impldoc.for_ty to self_ty 2012-01-31 19:32:27 -08:00