Commit Graph

349 Commits

Author SHA1 Message Date
Graydon Hoare
62c224ffe4 Drop slots on block exits even when blocks have no statements. Part way to fixing bind leakage in rustc. 2010-09-30 16:10:30 -07:00
Peter Hull
f6e3e6903b Initial check-in of 99 Bottles Of Beer
using different methods (simple, iterator, tail-call, pattern match)
2010-09-30 13:50:25 -07:00
Or Brostovski
4a3404803b implemented break for while-loop case
ast.ml - added break and cont statements
item.ml - added break and cont statements
lexer.mll - added break and cont statements
token.ml - added break and cont statements
trans.ml - implemented the break statement for the while-loop case
         - replaced hash table accesses with get_stmt_depth where needed
type.ml = added break and cont statements
typestate.ml - implemented the break statement for the while-loop case
             - added shorthand filter_live_block_slots
walk.ml - added break and cont statements
while-with-break.rs - code for testing while loops
2010-09-30 13:45:57 -07:00
Or Brostovski
74cb9508cd Closed issue 154 - prevents compiler from compiliing a line to zero statements 2010-09-30 13:40:34 -07:00
Graydon Hoare
e0f682e5fb Add some basic string functions: index, rindes, find, substr, split, concat, connect. 2010-09-22 15:27:40 -07:00
Graydon Hoare
fc6f307787 Fix linear for loops on strings to not hit trailing null. 2010-09-22 15:27:35 -07:00
Graydon Hoare
9f0a6c21b2 Implement preliminary form of structured compare. No boxes, vectors or strings yet. 2010-09-21 11:47:10 -07:00
Graydon Hoare
c5f4789d5b Bind pattern slots with ?, drop parens from 0-ary tag constructors, translate 0-ary constructors as constants. Rustc loses ~300kb. 2010-09-20 23:56:43 -07:00
Roy Frostig
dda16f807c Add issue #163 testcase to str-append testcase. 2010-09-20 17:42:14 -07:00
Patrick Walton
bc03c82c79 Check for infinitely sized tags. Un-XFAIL test/compile-fail/infinite-tag-type-recursion.rs. 2010-09-16 16:24:19 -07:00
Graydon Hoare
cd1a765c6f Add Peter Hull's contributed translation of the fasta shootout benchmark (integer-only version). 2010-09-15 18:22:10 -07:00
Graydon Hoare
6cfeac162d Translate const uses via runtime expression evaluation. 2010-09-14 11:44:25 -07:00
Graydon Hoare
7287d3aaa0 Teach front-end about simple, first-cut version of const items. 2010-09-14 10:52:32 -07:00
Graydon Hoare
bc646d01c5 Fix leaking arg slots on tail calls. Closes #160. 2010-09-13 13:37:24 -07:00
Graydon Hoare
67aa39e1ef Fix a leak when box types are used via type descriptors. 2010-09-12 01:05:56 -07:00
Graydon Hoare
a9e2327a18 Switch tags to purely nominal, removing TY_iso and TY_idx. Seems to mostly work, possibly a little bumpy. Changes a lot. 2010-09-09 15:59:29 -07:00
Michael Bebenita
7f6d8b95bd Fixed race in the rust kernel. 2010-09-07 23:37:51 -07:00
Michael Bebenita
79e3856d7d Small updates to test cases. 2010-09-07 18:41:07 -07:00
Roy Frostig
ca1475382e Add hashmap tests exercising strings as keys and values. No longer leaks on linux. 2010-09-07 01:21:18 -07:00
Roy Frostig
974092c526 Test multi-ref'ed vec growth more seriously than before. 2010-09-03 16:25:56 -07:00
Roy Frostig
47e86a05ae Fix rust_vec constructor assertion failure caused by slow path of upcall_vec_grow. Add testcase. 2010-08-31 13:01:57 -07:00
Roy Frostig
0d15ae4f7a Modify alt-pattern-drop.rs to also insure the slot bound in the pattern doesn't also get dropped (again) at the end of the block containing the alt. 2010-08-27 13:48:45 -07:00
Roy Frostig
ecb7fc2038 Tiny change to tighten up alt-pattern-drop.rs test. 2010-08-27 13:29:53 -07:00
Roy Frostig
5e77e784f0 Have alt-pattern drop the slots it initializes when binding slot patterns. Add a testcase for this as well. 2010-08-27 13:29:53 -07:00
Roy Frostig
927b2f7ef4 Comment out hashmap tests exercising maps with str as key or value type, as they appear to cause leaks. 2010-08-27 11:16:49 -07:00
Roy Frostig
4c1c8460f9 Add simple hashmap tests exercising maps with str as key type, value type, and both. 2010-08-27 11:01:51 -07:00
Roy Frostig
1035ad93dd Pinching myself for certainty. ;p 2010-08-26 20:02:07 -07:00
Roy Frostig
66b5b9567c Test the hashmap more, exercising hash collision, element removal, and a forced rehashing that actually causes elements to change buckets. In the process, find a bug in hashmap's remove() and fix it. 2010-08-26 19:44:38 -07:00
Graydon Hoare
7cfa7bdd23 Make vreg constrs per-quad, regfence on nontrivial constrs, back out workaround to _uint, add regression test. Closes #152. 2010-08-26 16:27:47 -07:00
Patrick Walton
a7eeeb596a Add automatic parameter instantiation. Closes #45. 2010-08-26 14:47:18 -07:00
Roy Frostig
8559a85cca When copying function values, null out the destination's binding iff the source's binding is null. 2010-08-26 14:44:11 -07:00
Roy Frostig
5cf83dcc1a Test the hashmap for growth and rehashing. 2010-08-26 13:03:28 -07:00
Roy Frostig
c3c5e6c773 Workaround issue #152 in _uint.next_power_of_two 2010-08-26 11:57:48 -07:00
Roy Frostig
6b053f24c7 Insure bools remain 0x1 or 0x0 by having boolean-NOT not just be a simple bit-NOT. 2010-08-25 17:17:14 -07:00
Graydon Hoare
91d640f90f Merge obj-drop and closure-drop code, handles freeing bound exteriors now. 2010-08-25 16:21:50 -07:00
Graydon Hoare
c2b6c27d65 Fix edge case in uint->string conversion. 2010-08-25 13:54:27 -07:00
Graydon Hoare
af6e1d2c2b Fix ghastly typestate bug breaking nested functions. 2010-08-25 12:08:05 -07:00
Michael Bebenita
64ff82ecf9 Implemented an lock free queue based on this paper http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf, the "lock free queue" we had before wasn't lock free at all. 2010-08-24 21:07:14 -07:00
Graydon Hoare
2dc3a37f93 First successful hashmap lookups. Yay. 2010-08-24 17:38:04 -07:00
Graydon Hoare
e846643d23 Fix mod-bug in std.map, work around bug in closure typaram capture, enable insert-tests in lib-map.rs. 2010-08-24 17:23:09 -07:00
Graydon Hoare
14262c7311 Rename lib tests, enable lib-int.rs using _str.eq for now. 2010-08-24 09:09:04 -07:00
Graydon Hoare
6e3a77c3a3 Merge remote branch 'tohava/master'
Conflicts:
	src/boot/fe/ast.ml
2010-08-23 18:19:42 -07:00
Or Brostovski
0830b5bf24 Modified parser to handle alt type andadded a few tests
ast.ml - modified arm types for easier polymorphism
       - fixed a bug in fmt_type_arm
dead.ml - modified arm types for easier polymorphism
common.ml - added 'either'
          - added some useful auxiliary functions
item.ml - modified arm code to be more polymorphic and handle both alt-tag and alt-type, also fixed the problematic case in bad-alt.rs
Makefile - added XFAIL for new alt-type test
bad-alt.rs - added test for invalid alt syntax
alt-type-simple.rs - added simple test for alt type
2010-08-21 02:41:43 +03:00
Roy Frostig
2da4fecacd Test the buffered reader and writer in _io. 2010-08-20 12:57:38 -07:00
Graydon Hoare
ddd8feea31 Support single-element append on vec, str. Closes #44. 2010-08-20 09:58:22 -07:00
Graydon Hoare
b34cb1b631 Fix a bunch of typestate bugs in handling if and while statement wirings. 2010-08-19 18:42:32 -07:00
Michael Bebenita
14f5b5750d Un-xfailed working tests. 2010-08-16 15:05:57 -07:00
Roy Frostig
abe307cf45 Uncomment recently-no-longer-failing std.deque tests. Add a few arbitrary-access checks. 2010-08-13 11:55:25 -07:00
Roy Frostig
73ee16b1a4 A little tidy-up that should have gone in with 4e376852e7. 2010-08-12 19:20:29 -07:00
Roy Frostig
4e376852e7 Fix max_sz bug that ended up causing us to index incorrectly into a vec of tag types. Add a testcase. 2010-08-12 16:21:08 -07:00
Michael Bebenita
988695a96c Added support for task sleeping in the scheduler. 2010-08-11 21:24:04 -07:00
Michael Bebenita
74e12fcef6 Ignore upcall_flush for channels that are disassociated from ports. This makes task-comm-10 break a little less hard, but it still leaks because messages pending in the channel are never freed. 2010-08-11 16:08:45 -07:00
Michael Bebenita
8ac15c6844 Added test cases. 2010-08-11 16:08:45 -07:00
Roy Frostig
f307688bf4 Add native vec[u8] to str converter. Put in workaround for leak in str to vec[u8] converter. Add testcase exercising both. Drive-by fix a potential array-out-of-bounds write on rust_str buffers. 2010-08-11 16:06:45 -07:00
Graydon Hoare
9f6dec9e13 Always bounce mul/div/mod ops. Closes #131 harder. 2010-08-10 16:03:58 -07:00
Michael Bebenita
d647c163fd Updated/added test cases. 2010-08-09 06:53:37 -07:00
Jeffrey Yasskin
3f6e8ffe64 Implement _str.len() to return the number of bytes, rename it to byte_len(),
and add a test.
2010-08-06 17:29:21 -07:00
Jeffrey Yasskin
581a95a804 Add an int->str conversion function.
The test currently fails because string equality isn't implemented.
2010-08-06 17:25:27 -07:00
Jeffrey Yasskin
987589e946 Change the destructor-ordering test to use channels instead of a shared mutable object.
This test used to take advantage of a hole in the type system that allows
objects with destructors to refer to stateful objects.
2010-08-06 17:17:04 -07:00
Graydon Hoare
29987b56e1 Move 'as' precedence up to just above relational; support indexing str and vec by all integral types. Closes #94. 2010-08-05 10:04:11 -07:00
Roy Frostig
718c0b5963 Add to std._io some formatter/type-specific-writer mechanism. Make a few type-specific buffered writers as wrappers of buf_writer. 2010-08-04 23:09:33 -07:00
Graydon Hoare
815424c2ec Fix pexp parser to do left-associativity, not right. Closes #130. 2010-08-04 13:44:22 -07:00
Graydon Hoare
7595aca5e3 Kill the preallocator, install a sane replacement. Closes #131. And probably a lot of others. 2010-08-04 00:27:36 -07:00
Roy Frostig
6277b462e9 More stdlib hashmap work. Add a simple test and XFAIL it due to a valgrind-spotted UMR. 2010-08-03 18:43:57 -07:00
Roy Frostig
5b2451c231 Address _vec.map allocation FIXME. Add test. 2010-08-03 18:18:19 -07:00
Graydon Hoare
a1ecdb103d Fix some naughtiness of handling newlines in bracequotes and multi-line comments. Closes #142. 2010-08-03 16:28:50 -07:00
Graydon Hoare
1fc4e9fcc6 Add tests and fix pexp bug. Closes #141. 2010-08-03 12:20:29 -07:00
Michael Bebenita
74a79fff3a Add a bunch of comm tests. 2010-07-28 20:30:30 -07:00
Roy Frostig
dfcf21ca82 Another deque test commented out. 2010-07-28 18:14:33 -07:00
Roy Frostig
c489af8e1a Test the deque some more. 2010-07-28 17:31:41 -07:00
Roy Frostig
237b9d4a64 Test the deque more and fix uncovered off-by-one bug. 2010-07-28 16:34:22 -07:00
Roy Frostig
f282c5ccc0 Get slots in trans_tag using Semant tables. Closes #133. 2010-07-28 15:04:58 -07:00
Roy Frostig
596d19e2ea Test the deque a bit. Give it a get-by-index method. Fix two uncovered state-calculation bugs --- one decently, the other with an ugly hack. Bug on the latter coming right up. 2010-07-28 14:00:44 -07:00
Graydon Hoare
8030757624 Switch machine-type lexemes to use suffixes. Remove support for foo(bar) as a cast notation. Closes #129. 2010-07-27 19:21:51 -07:00
Graydon Hoare
4d31cf1dc5 Distill semantics of use-def maps to fewer and more-obvious words.
- Remove redundant uses of 'resolve' and 'referent' in semant.
- Use defn, defn_id, lval, lval_base more consistently.
- Make associated query functions more consistent.
- Closes #127.
2010-07-27 11:19:43 -07:00
Roy Frostig
1a61fb8eb7 Adjust testcase to cover issue #91, which was actually fixed back in commit f02f9cbf29. Closes #91. 2010-07-26 15:52:59 -07:00
Patrick Walton
4b97b4e79d Move the test suite to the "as" form for casts. XFAIL a few tests for LLVM. 2010-07-26 15:22:21 -07:00
Roy Frostig
5b6e714d05 Expose an RNG (the one used by our runtime) to Rust via std. 2010-07-25 21:45:09 -07:00
Graydon Hoare
44e2dc2789 Improve mutability checking. Closes #118. 2010-07-23 15:29:17 -07:00
Graydon Hoare
8bd8413906 Add test for writing-through-uninit bug (reported on IRC by jrmuizel), plus fix in typestate system. 2010-07-23 13:52:46 -07:00
Graydon Hoare
fe82978980 Modify testcase to match new syntax and un-XFAIL mutable-vec-drop.rs. 2010-07-23 12:32:12 -07:00
Graydon Hoare
b5e46ac2a0 Two more testcases for overwriting already-live box-like fields in structures, without leaking. 2010-07-23 12:22:31 -07:00
Roy Frostig
1730d2e037 Notify copy glue of dst-initialization and fix _vec.alloc issues in lib and runtime. Closes #109. 2010-07-22 17:47:32 -07:00
Graydon Hoare
ede42cf931 A certain incomplete quantity of wrestling with "INIT" statements that don't actually initialize. Should probably rename them to MAKE. Anyway, WIP, but two steps forward (and one back). More later. 2010-07-22 17:05:45 -07:00
Graydon Hoare
0f220ecae9 Beat up on the preempt test a bit more, as it keeps hanging under valgrind. 2010-07-22 15:05:35 -07:00
Roy Frostig
3708865906 Re-introduce bits of vec-lib test that blocked on now-fixed issue #108. 2010-07-22 12:49:11 -07:00
Graydon Hoare
eaa35611dc Add XFAIL'ed test for return-in-iter, call unimpl when we find it. Closes #100. 2010-07-22 12:24:55 -07:00
Graydon Hoare
c96634af4b Fix mem op= mem bug in trans.ml (via not terribly good fix). Closes #111. 2010-07-22 12:11:39 -07:00
Roy Frostig
c69ec53dc5 Remove explicit deref workaround in dtor-order test. No longer necessary. 2010-07-20 09:15:23 -07:00
Roy Frostig
ae515c017c ctxt_auto_deref_lval decides whether to autoderef the entire lval, not its base. 2010-07-19 19:06:55 -07:00
Roy Frostig
fde9ca0937 Autoderef objects when passing them as implicit (indirect) arg upon vtbl-dispatch. Add testcase and XFAIL it on LLVM. Closes #112. 2010-07-19 18:25:26 -07:00
Michael Bebenita
c80483d582 Fixed circular buffer resizing bug. 2010-07-19 17:33:50 -07:00
Michael Bebenita
00d1465d13 Added a message passing system based on lock free queues for inter-thread communication. Channels now buffer on the sending side, and no longer require blocking when sending. Lots of other refactoring and bug fixes. 2010-07-19 14:05:18 -07:00
Graydon Hoare
1f0656d908 Add a test for an obvious-seeming (but not actually legal) kind of cast attempted in issue #115, downgrade bug to an err in type.ml so you get a better message. 2010-07-19 13:25:04 -07:00
Graydon Hoare
f1db420317 Fix over-optimistic resolution of self-methods within obj scopes. There is no such feature in the language at present. Add test to prevent regression. Closes #114. 2010-07-19 12:03:58 -07:00
Graydon Hoare
bacb8e6b79 Missing semicolon in type.ml, plus test to catch regression. Closes #113. 2010-07-19 11:50:41 -07:00
Jeffrey Yasskin
c3c425e9f1 Work around auto-dereference crash in rustboot. 2010-07-18 14:25:18 +08:00
Patrick Walton
1ac01e16cf Ensure that functions that should return a value do; issue 41 2010-07-16 15:34:25 -07:00
Patrick Walton
8b00ab1a48 Feed the correct return type to the typechecker when typechecking objects, and add a testcase. 2010-07-16 14:54:47 -07:00
Graydon Hoare
de8a7dc7dc Merge branch 'contrib' 2010-07-15 23:58:13 -07:00
Jason Orendorff
7671828d45 Support nested for-each loops. Closes #79. 2010-07-16 14:53:49 +08:00
Graydon Hoare
f300ca4ed7 XFAIL the new destructor tests; collided with new typechecker; add test for issue #109. 2010-07-15 18:57:21 -07:00
Patrick Walton
c96f0bf738 Implement the "simple typechecker", which avoids HM inference 2010-07-15 18:27:09 -07:00
Patrick Walton
91b4cae8da Remove log-type-error; everything is loggable. 2010-07-15 18:18:58 -07:00
Jeffrey Yasskin
b3ca7522bb More destruction ordering tests. 2010-07-16 08:13:08 +08:00
Jeffrey Yasskin
7dd464fdb5 Initial test that the compiler runs destructors in the right order. 2010-07-16 08:13:08 +08:00
Jeffrey Yasskin
765a2b3ecf Add a _vec.slice function that'll hold us over until .(a,b) syntax is
implemented.  This could actually replace .(a,b) syntax if the language grows
optional function parameters.
2010-07-16 08:13:08 +08:00
Jeffrey Yasskin
c866672a99 Add a test for std._vec.init_elt, and an XFAILed test for std._vec.init_fn. 2010-07-16 08:13:08 +08:00
Graydon Hoare
c218d06601 Merge branch 'contrib' 2010-07-15 16:49:02 -07:00
Adam Bozanich
b096b0e308 permit use before import. closes #48 2010-07-16 07:19:14 +08:00
Patrick Walton
0b675a021a Make mutability no longer a type constructor 2010-07-15 15:20:04 -07:00
Graydon Hoare
0fdad302b8 Fix ret/put mis-identification in typechecker. Closes #87. 2010-07-14 09:41:08 -07:00
Graydon Hoare
2eba370aa2 Fix the next typo in mlist-cycle.rs; still doesn't work. 2010-07-13 14:27:23 -07:00
Graydon Hoare
b3cf793bd9 Fix post-stmt drop calculations. Closes #106. 2010-07-11 22:31:56 -07:00
Graydon Hoare
ab3921f27e Catch cyclic imports harder. Add 2 tests to confirm. 2010-07-09 11:59:00 -07:00
Matt Brubeck
244ea68082 Issue 66: Multi-line comments 2010-07-08 22:43:15 +08:00
Graydon Hoare
115e14a32c Some more typestate tests. 2010-07-08 07:33:25 -07:00
Graydon Hoare
e813388df8 Numerous bug fixes to typestate algorithm. 2010-07-06 23:18:29 -07:00
Graydon Hoare
3175c83ff0 Un-XFAIL mutable-alias-vec.rs. Was only failing due to a typo, but a more thorough test revealed more bugs. 2010-07-05 14:43:02 -07:00
Graydon Hoare
f360d222c8 Uint-ify various bits of _str and _vec, enrich _vec a bit. 2010-07-05 14:42:12 -07:00
Graydon Hoare
6014384a5d Log completion on the many.rs test. 2010-07-04 22:41:57 -07:00
Graydon Hoare
cae60cbaba Fix compile-fail/log-type-error.rs. 2010-07-04 16:02:12 -07:00
Graydon Hoare
8660ce50a1 Merge branch 'master' of git@github.com:graydon/rust into exterior_and_mutable_types 2010-07-02 16:27:39 -07:00
Graydon Hoare
4d00333b1e New test of explicit deref operator. 2010-07-02 12:55:12 -07:00
Graydon Hoare
74775eff7e Box the args entering the vec-drop test. 2010-07-02 12:32:28 -07:00
Graydon Hoare
60c6ae3ad5 Box arguments that are supposed to be boxed. 2010-07-01 23:50:58 -07:00
Graydon Hoare
f72774db7a Correct existing reliance on auto-box / unbox behavior in tests. 2010-07-01 18:37:30 -07:00
Graydon Hoare
792d96474e Box the integer passed to the handle in obj-drop.rs. No more implicit arg-boxing. 2010-07-01 18:04:21 -07:00
Graydon Hoare
6a0b06e562 Rename 'exterior' to 'box' and 'interior' to 'local' (at least wrt. slots; keep MEM_interior for describing interior-parts-of-allocations) 2010-06-30 22:45:54 -07:00
Graydon Hoare
8b8186db87 No more "transplant" behavior in "let @x = y", gotta box explicitly. 2010-06-30 21:17:45 -07:00
Graydon Hoare
8e4a10790f rewrite 'mutable &' as '& mutable', corresponding to grammar shift. 2010-06-30 02:30:17 -07:00
Roy Frostig
e692ccfb0c Add (XFAILed) testcase for typechecker issue where fns-in-mods appear to lose their type parameters over the course of the typechecking pass. 2010-06-29 16:13:26 -07:00
Roy Frostig
0d6aaec493 Work-around and un-XFAIL generic-obj.rs test. The problem uncovered in the original XFAIL is more generally that of issue #92. 2010-06-29 00:48:49 -07:00
Roy Frostig
d5ff6e133c Add to generic-obj.rs testcase a method that takes an argument of the object type-param type. XFAIL the test since it no longer passes. 2010-06-28 21:45:48 -07:00
Roy Frostig
5b5b334c24 Testcase (XFAILed) for fn item given as lval. 2010-06-28 21:18:09 -07:00
Roy Frostig
a27cbd4ee8 Testcase (XFAILed) for mutable alias vec weirdness. 2010-06-28 16:36:24 -07:00
Graydon Hoare
1316312c0c Only translate or dwarf-emit items or stubs locally defined or used. Avoids instantiating O(sizeof(standard-library)) worth of imports stubs on each 'use std'. Closes issue 13. 2010-06-27 20:48:28 -07:00
Graydon Hoare
7ea416f4c3 Add callable gc method exposed to user code, use it in mlist-cycle.rs test (still not quite working; some memory corruption in the recursive tag constructors, not the GC) 2010-06-25 23:57:30 -07:00
Graydon Hoare
c06ea8f944 Add test of recursive object types (ha, work by default) and fix effect-walker bug revealed by it. 2010-06-25 12:15:40 -07:00
Roy Frostig
85a701c8f6 Add testcases for item name conflict at the same path level. 2010-06-25 01:26:44 -07:00
Roy Frostig
241305caab Resolve and typecheck patterns in pattern alt redux. This time featuring way more correctness. 2010-06-25 00:47:23 -07:00
Graydon Hoare
1c60be2f32 Fix bad output-slot logic in tag constructors. 2010-06-24 18:25:10 -07:00
Graydon Hoare
bcf29b882a A couple new tests for broken parts of the typechecker, XFAILed. 2010-06-24 16:57:00 -07:00
Graydon Hoare
24d5ff75c3 Fix output-slot handling for real. It's been broken for a long time. 2010-06-24 16:19:55 -07:00
Graydon Hoare
af44ec2856 Issue 24, drop output slot when not initializing. Un-XFAIL generic-tag.rs. Add test for output slot modes with several broken cases. 2010-06-24 13:32:59 -07:00
Graydon Hoare
0364a801bb Clean up trans_alt_tag to use slots, not assume interior words. Also remove record-based destructuring (hard on eyes). Add execution parts to generic-tag-alt.rs and un-XFAIL it. 2010-06-24 11:15:22 -07:00
Graydon Hoare
935442babc Fix hg dependency in testsuite. 2010-06-24 08:44:14 -07:00
Roy Frostig
bc286c7f2c Resolve and typecheck patterns in pattern alt. 2010-06-24 08:13:32 -07:00
Graydon Hoare
d6b7c96c3e Populate tree. 2010-06-23 21:03:09 -07:00