Rafael Ávila de Espíndola
dd6fc607a4
Enable more optimizations.
2011-04-12 15:33:39 -04:00
Brian Anderson
73eecbd0ca
Factor out creation of calls into ExtFmt.RT
2011-04-11 21:55:03 -04:00
Brian Anderson
bba245f3e6
Add support for bool, char to extfmt.
...
XFAIL syntax-extension-fmt in rustboot.
2011-04-11 21:54:03 -04:00
Brian Anderson
37f87161cc
Move ExtFmt compile-time functions into their own module
2011-04-11 21:51:23 -04:00
Brian Anderson
ce85b9eb7b
Make ExtFmt call its own functions instead of others defined in std
2011-04-11 21:51:23 -04:00
Brian Anderson
d4d0144bcf
Move extfmt parsing into standard library
2011-04-11 21:51:23 -04:00
Brian Anderson
5a36786634
Move the extfmt data model into the standard library.
2011-04-11 21:51:23 -04:00
Patrick Walton
9d9790c7f5
rustc: Add a uint hash function
2011-04-11 16:54:05 -07:00
Patrick Walton
e0faf57313
rustc: Factor out expr_ty() into expr_ann() and expr_ty()
2011-04-11 15:05:39 -07:00
Rafael Ávila de Espíndola
cca6335c26
Implement the "attempted dynamic environment-capture" error in rustc.
2011-04-11 15:35:01 -04:00
Patrick Walton
3efb7f5459
rustc: Push down types for all expressions; add logic for recv and send
2011-04-08 18:14:31 -07:00
Graydon Hoare
35573144c5
Remove silly legacy glue-offset encoding, predicate runtime adjustments by ABI. LLVM should inline most glue now.
2011-04-09 00:54:46 +00:00
Marijn Haverbeke
c0d0b717ee
Fix codemap.lookup_pos
...
Previously, it would place every single location in the first
file of the crate that was parsed.
2011-04-09 01:57:48 +02:00
Patrick Walton
129c8392af
rustc: Rename "demand" to "pushdown" in the typechecker and explain more clearly what it's for
2011-04-08 16:22:03 -07:00
Marijn Haverbeke
1af3174fe3
Move to single-uint file-position representation.
...
This makes passing them around cheaper. There is now a table (see
front/codemap.rs) that is needed to transform such an uint into an
actual filename/line/col location.
Also cleans up the span building in the parser a bit.
2011-04-09 01:05:18 +02:00
Marijn Haverbeke
094d31f5e4
Make lexer buffer the whole file
...
This way, it won't have to go through a bunch of calls for each
byte fetched.
2011-04-09 01:05:18 +02:00
Patrick Walton
573bc5ad01
rustc: Resolve ty_locals
2011-04-08 15:41:08 -07:00
Patrick Walton
5355811859
rustc: Add the ability to fold over annotations
2011-04-08 15:21:49 -07:00
Rafael Ávila de Espíndola
ad7aff8203
Remove unused function.
2011-04-08 16:03:35 -04:00
Rafael Ávila de Espíndola
70bc63a3af
Remove unused function.
2011-04-08 15:14:26 -04:00
Tim Chevalier
97d0f76c63
fix long lines
2011-04-08 17:46:46 +00:00
Tim Chevalier
9c001af07c
Implemented computing prestates and poststates for a few expression forms.
...
The typestate checker (if it's uncommented) now correctly rejects a
trivial example program that has an uninitialized variable.
2011-04-08 17:46:46 +00:00
Brian Anderson
d2d42fd4c7
Make block results work for generic types
...
I think just about every type can be used as a block result now. There's quite
a proliferation of tests here, but they all test slightly different things and
some are split out to remain XFAILed. The tests of generic vectors are still
XFAILed because generic aliased boxes still don't work in general.
2011-04-07 21:58:36 -04:00
Patrick Walton
f28a9d8f52
rustc: Pointer cast when crossing a box boundary for statically-sized elements in trans_index()
2011-04-07 18:02:01 -07:00
Marijn Haverbeke
32e62d0151
add a -parse-only option to rustc
...
(undocumented, only used for profiling the parser)
2011-04-08 00:46:41 +02:00
Patrick Walton
6dcf6218b1
rustc: Pointer cast when autodereferencing boxed tag types
2011-04-07 15:12:48 -07:00
Patrick Walton
9b35051143
rustc: Use the name "opaque_tag", not "tag", for opaque tags
2011-04-07 15:12:48 -07:00
Lindsey Kuper
1092bbfff0
Support for self-calls that take arguments.
...
Nicer parsing of self-calls (expr_self_method nodes inside expr_call
nodes, rather than a separate expr_call_self) makes typechecking
tractable. We can now write self-calls that take arguments and return
values (see: test/run-pass/obj-self-*.rs).
2011-04-07 14:26:34 -07:00
Marijn Haverbeke
39774e88b4
Add a very basic crate-dump utility
...
'rustc -ls [cratelib]' will now dump out a list of symbols defined by
the crate, as well as a short description of what they are.
2011-04-07 14:19:19 -07:00
Marijn Haverbeke
d678dad434
Fix problem in metadata writer
...
It was creating non-multiple-of-four section sizes, which, for some
reason, presumably by LLVM, were clipped, rather than padded, to be a
multiple of four.
2011-04-07 14:19:17 -07:00
Marijn Haverbeke
ac3026412b
Revise EBML reader API
...
New one is less stateful, easier to work with.
2011-04-07 14:19:16 -07:00
Patrick Walton
0f5f467dc0
rustc: Remove useless call to type_of() in trans_rec()
2011-04-07 13:55:02 -07:00
Patrick Walton
015c0d0d59
rustc: Allow dereference expressions to be used as lvalues. Add a test case.
2011-04-07 12:51:27 -07:00
Rafael Ávila de Espíndola
b4422cca21
Add a -O option and change the Makefile to use it.
2011-04-07 15:42:06 -04:00
Patrick Walton
ddf96ac3a8
rustc: Reindent line. Puts out burning tinderbox.
2011-04-07 12:01:48 -07:00
Patrick Walton
cd6962f29d
rustc: Link to external tag discriminants. Un-XFAIL test/run-pass/lib-option.rs.
2011-04-07 11:42:40 -07:00
Patrick Walton
2a894cabc2
Merge branch 'master' of github.com:graydon/rust
2011-04-07 10:14:25 -07:00
Rafael Ávila de Espíndola
25320da099
Run optimizations.
...
It is always on for now just to make sure the bots are happy. If they
are, I will add a -O option and update the makefile.
2011-04-07 12:12:21 -04:00
Tim Chevalier
2e90bd94de
Continued sketching out code for checking states against preconditions.
...
It's still sketchy. I added a typestate annotation field to statements
tagged stmt_decl or stmt_expr, because a stmt_decl statement has a typestate
that's different from that of its child node. This necessitated trivial
changes to a bunch of other files all over to the compiler. I also added a
few small standard library functions, some of which I didn't actually end
up using but which I thought might be useful anyway.
2011-04-06 17:58:18 -07:00
Patrick Walton
d9da43984b
Merge branch 'master' of github.com:graydon/rust
2011-04-06 10:25:32 -07:00
Graydon Hoare
5e98cd9472
Remove reference to nonexistent ast.module from typestate_check.rs, stage1 doesn't like it.
2011-04-06 04:18:12 +00:00
Graydon Hoare
52abd912c0
Brute force and ignorance workaround for tag-and-generic-obj; un-XFAIL it.
2011-04-05 21:08:13 -07:00
Tim Chevalier
86d4601827
More work on typestate. Sketched out code for computing and checking prestates and poststates. Still a long ways away.
2011-04-06 00:17:06 +00:00
Lindsey Kuper
4fc8de1969
Last pieces of self-call support.
...
The last few pieces of the hack that lets us use trans.trans_call() to
translate self-calls, plus a fix for the parser buy that was
preventing self-call expressions from getting past parsing.
test/run-pass/obj-self.rs works now (as in it actually prints "hi!"
twice!).
2011-04-05 16:26:31 -07:00
Lindsey Kuper
b8bb2e118e
Further on the path toward self-awareness.
...
Mostly:
* Merciless refactoring of trans.rs so that trans_call can work for
self-calls as well as other kinds of calls
Also:
* Various changes to go with having idents, rather than exprs, in
expr_call_self AST nodes
* Added missing case for SELF token to token.to_str()
2011-04-05 14:54:48 -07:00
Graydon Hoare
8703c8067f
FIx native wrapper generation to handle more arg types.
2011-04-05 21:52:48 +00:00
Lindsey Kuper
361ee5a68b
Oops -- if we're going to use the pretty-printer, we need it to work.
2011-04-05 11:55:14 -07:00
Lindsey Kuper
ba537fa5f5
Knocking out a quick fixme: pretty-printing exprs in error messages.
2011-04-05 11:55:12 -07:00
Graydon Hoare
70e5457d7c
Make box prefix operator and box type carry mutability flag.
2011-04-04 15:44:15 -07:00
Patrick Walton
f10a5bbad0
rustc: Make type_of() return the type of the wrapper for native functions. lib-map now compiles, but fails to work properly.
2011-04-03 15:23:58 -07:00
Brian Anderson
bd9f45446a
Begin comparing vectors from the correct address
...
Start at the first element instead of the address of the vector.
2011-04-03 03:09:20 -04:00
Graydon Hoare
8e9c5b96fb
Change rust_vec to have a 16-byte header, to 16-byte-align vec-body data. Major perf win.
2011-04-02 19:05:12 -07:00
Brian Anderson
99901bdbc4
Add FIXMEs around type handling in trans_if, trans_alt
2011-04-02 20:35:51 -04:00
Brian Anderson
21fb49ad95
Join the results of alt arms so alt can be used as an expression.
...
Un-XFAIL expr-alt.rs.
2011-04-02 20:35:50 -04:00
Brian Anderson
203e33b611
Make join_results branch into the join block even when only one edge is live.
...
I don't don't totally understand the implications of this but it makes the
behavior consistent for all live edges, which is going to make joining the
arms of an alt expression work correctly.
2011-04-02 20:35:50 -04:00
Brian Anderson
6e6acaa39a
Fail on non-exhaustive alt matches
2011-04-02 20:35:50 -04:00
Brian Anderson
9d0a505d61
Terminate fail blocks by making their ends unreachable.
...
This will make implementing default alt arms simpler.
2011-04-02 20:35:50 -04:00
Graydon Hoare
4f90c88b4d
Write typarams for variants. Typecheck gets as far as ty.rs now.
2011-04-01 18:53:08 -07:00
Graydon Hoare
5b7961b641
Encode ty_native ebml node for native types so typechecker has something to work with.
2011-04-01 18:34:13 -07:00
Graydon Hoare
c077da553d
Remove typestate_check reference to nonexistent ast.init node; rustc compiling itself notices what rustboot did not :)
2011-04-01 18:33:47 -07:00
Graydon Hoare
23f18a096f
Re-enable typestate_check in build, was lost during merge. Sorry.
2011-04-01 17:23:56 -07:00
Graydon Hoare
0397c05f42
Support for passing native types through metadata/creader.
2011-04-01 17:04:51 -07:00
Graydon Hoare
2a2ea6351d
Comment out import for not-yet-compiling typestate_check.
2011-04-01 17:04:07 -07:00
Graydon Hoare
3971110d7f
Guh. Actually commit the staged undo-of-indentation. Forgotten git staging wins again.
2011-04-01 16:04:22 -07:00
Graydon Hoare
7d88e63ec8
Switch private linkage to local, re-indent trans.rs.
2011-04-01 15:01:46 -07:00
Patrick Walton
3a8b0be1cb
rustc: Write symbols for native items into the crate metadata
2011-04-01 14:18:46 -07:00
Patrick Walton
a0eb9c814b
rustc: Don't try to write symbols into the metadata for nullary tags. Puts out burning tinderbox.
2011-04-01 14:14:10 -07:00
Patrick Walton
6dc452335a
rustc: Get tag variants from the crate metadata
2011-04-01 13:02:44 -07:00
Patrick Walton
ec9d7abf8c
rustc: Have tag_variants() return a new variant_info structure instead of an AST node
2011-04-01 11:37:31 -07:00
Tim Chevalier
3130348ee1
Started adding support for typestate checking.
...
I added a new field to the ast "ann" type for typestate information.
Currently, the field contains a record of a precondition bit vector and
postcondition vector, but I tried to structure things so as to make
it easy to change the representation of the typestate annotation type.
I also had to add annotations to some syntactic forms that didn't have
them before (fail, ret, be...), with all the boilerplate changes
that that would imply.
The main call to the typestate_check entry point is commented out and
the actual pre-postcondition algorithm only has a few cases
implemented, though the overall AST traversal is there. The rest of
the typestate algorithm isn't implemented yet.
2011-04-01 11:27:32 -07:00
Patrick Walton
69a34b992b
rustc: Remove useless call to tag_variant_with_id()
2011-04-01 10:59:59 -07:00
Brian Anderson
1bc06bc59b
Cleanup typos and newlines
2011-04-01 00:05:13 -04:00
Brian Anderson
f16e7242d2
Initialize the alloca used to retrieve boxed block results to null.
...
This allows blocks to be used in conditional constructs where the block may
not ever execute: the drop glue will notice that it was never used and ignore
it.
Also, beef up the comments.
2011-03-31 23:15:11 -04:00
Brian Anderson
524e803582
Only use allocas to hold expression results for boxed types
2011-03-31 23:15:11 -04:00
Brian Anderson
f05d3c516b
Add more comments to trans_block
2011-03-31 23:15:11 -04:00
Brian Anderson
125bebbf60
Modify trans.rs to allow blocks to result in boxed values
2011-03-31 23:15:11 -04:00
Brian Anderson
d631f29d47
Add block_to_str and expr_to_str methods to the pprust module.
...
Since pprust is authed impure these can be used for debug logging.
2011-03-31 23:15:11 -04:00
Patrick Walton
c66edca83d
rustc: Add a type annotation to tag items
2011-03-31 19:12:40 -07:00
Patrick Walton
1eeedbd008
rustc: Make tag_ty_params() and substitute_ty_params() take def ids instead of ty_params, and to check in external crates
2011-03-31 18:45:24 -07:00
Patrick Walton
bdea343879
rustc: Use the path index. Speeds up compilation a lot.
2011-03-31 18:28:59 -07:00
Patrick Walton
fffc5d3b3d
rustc: Write out a path index as well
2011-03-31 18:28:59 -07:00
Graydon Hoare
1b65a61cad
Couple minor bug fixes in creader, lib-bitv, int, rand, sort, sha1, uint and vec all work.
2011-03-31 15:57:36 -07:00
Patrick Walton
3c1de96cda
rustc: Use the crate index to look up defs
2011-03-31 14:37:44 -07:00
Lindsey Kuper
ef0c903f6a
More stuff to go with the new expr_call_self AST node
2011-03-31 14:16:02 -07:00
Lindsey Kuper
e939d6f17c
More machinery for adding an expr_call_self AST node.
2011-03-31 14:04:53 -07:00
Patrick Walton
6c383bbd7b
rustc: Index only the local part of definition IDs
2011-03-31 12:24:59 -07:00
Patrick Walton
3945ace520
rustc: Write out an index of definition info in crate metadata
2011-03-31 11:56:02 -07:00
Patrick Walton
6a60cb1e0c
rustc: Mix the bits more when hashing def ids
2011-03-31 11:55:28 -07:00
Patrick Walton
7f3f66df7b
rustc: Use the scaled index, not the raw index, if a vector has generic size. lib-vec.rs works now.
2011-03-31 10:10:21 -07:00
Brian Anderson
607fa14960
Rename incr_all_refcnts to take_ty, to match drop_ty
2011-03-31 14:52:30 +00:00
Brian Anderson
b0b72ab472
Restore scope block contexts to the translation of expr_block.
...
I removed this previously but that was wrong because it caused
block expressions to not create a new scope.
2011-03-31 14:52:29 +00:00
Brian Anderson
50e354611f
Remove redundant parser logic.
...
These cases are all dealt with in parse_expr_inner.
2011-03-31 14:52:29 +00:00
Marijn Haverbeke
6a75740e96
handle unterminated block comments and line comment at eof
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
39f0656b4f
Improve line comment positioning
...
This involved making ast.variant spanned.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
8a7ea941bb
Support break and cont in pretty-printer
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
f8393cc572
Add effect field to ast.ty_fn.
...
Still not used, except by the pretty-printer.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
e7e6f396d8
Preserve comments when pretty-printing.
...
The patch also includes a number of smaller fixes to the
pretty-printer that were encountered on the way.
2011-03-31 14:41:39 +00:00
Graydon Hoare
ffc188a4dd
Tweak build command on rustc.
2011-03-31 14:41:35 +00:00
Patrick Walton
ab8d200fb0
rustc: Read 'y' tags from external crates
2011-03-30 18:28:33 -07:00
Patrick Walton
ae5ba62b24
rustc: Use the type cache to construct external item references
2011-03-30 18:15:29 -07:00
Patrick Walton
cc59cea8b0
rustc: Thread an item-to-type mapping throughout the typechecking and translation phases
2011-03-30 17:28:06 -07:00
Graydon Hoare
3e7b991d49
Ensure task stacks start out with a 16-byte aligned entry frame. Should make OSX behave a bit better.
2011-03-30 13:04:18 -07:00
Patrick Walton
301cfe1354
rustc: Add all items to the item table during translation. lib-vec now compiles, but asserts and then segfaults.
2011-03-29 18:16:53 -07:00
Patrick Walton
626bdaaa1f
rustc: Parse parameter IDs in external crate metadata. Un-XFAIL lib-bitv.rs.
2011-03-29 17:25:55 -07:00
Patrick Walton
c67eb1a575
rustc: Partially resolve external module imports
2011-03-29 17:01:27 -07:00
Patrick Walton
6a5feffd6c
rustc: Tolerate def id tags inside module tags. Fixes metadata reading.
2011-03-29 16:43:27 -07:00
Lindsey Kuper
55fbed3d8d
Beginnings of support for magical self prefix; nothing profound happening yet.
2011-03-29 15:59:15 -07:00
Graydon Hoare
f6490a6f03
Ignore 'mutable foo' in plain field contexts.
2011-03-29 15:40:21 -07:00
Patrick Walton
94c061729b
rustc: Resolve external modules and native modules to definition IDs as well
2011-03-29 14:46:42 -07:00
Graydon Hoare
77f85460e6
Rename trans_native to trans_native_call, for clarity.
2011-03-29 13:23:51 -07:00
Graydon Hoare
734abe593d
Teach trans to emit undefined references to 'use'd symbols. Can compile and run a simple 'use std;' example now.
2011-03-29 13:23:51 -07:00
Brian Anderson
8f2a97a562
Add partial support for if expressions resulting in generic types
2011-03-28 21:14:08 -07:00
Brian Anderson
aced4ce145
Handle structural types as the result of if expressions
2011-03-28 21:14:04 -07:00
Brian Anderson
a5a319fa04
Teach rustc to use the result of if expressions
2011-03-28 21:14:03 -07:00
Brian Anderson
2b27d12ce1
Add expr_spawn, spawn parsing, folding, typechecking, ty_task
2011-03-28 21:13:53 -07:00
Graydon Hoare
540d29f641
Move all allocas to dedicated basic block at top of function, to keep frames finite. Un-comment next size in nbody.rs.
2011-03-28 18:07:29 -07:00
Patrick Walton
2809e30d1d
rustc: Parse types in external metadata
2011-03-28 16:49:26 -07:00
Patrick Walton
ace2c92a96
rustc: Populate the item types table with types of items from external crates; remove the redundant typeck.ty_and_params type on the way
2011-03-28 14:42:01 -07:00
Patrick Walton
621ab34410
rustc: Remove commented out "encode_tag_variant_info" call that sneaked in
2011-03-28 13:31:13 -07:00
Patrick Walton
62f4709953
rustc: Resolve def ids in external crates
2011-03-28 13:29:59 -07:00
Patrick Walton
cc221c472a
rustc: Don't include a trailing null when writing out metadata; it corrupts the EBML
2011-03-28 13:15:03 -07:00
Graydon Hoare
8b5968165f
Fix get_tydesc to alloca enough room for root; remove hack that was attempting to paper over it. Fix from espindola.
2011-03-28 11:11:03 -07:00
Patrick Walton
81695a19f8
rustc: Add support for calling LLVM intrinsics as native functions
2011-03-28 08:24:58 -07:00
Marijn Haverbeke
6ecdc04788
Add support for break and cont to rustc
...
Testing proper cleanup is hampered by
https://github.com/graydon/rust/issues/293
2011-03-27 14:11:23 +02:00
Graydon Hoare
f59e49c9a6
Twiddle visibility, start exposing only type-mangled names (64 bit truncated sha1 prefixes).
2011-03-26 19:14:07 -07:00
Graydon Hoare
dbc7289a4d
Start refactoring name-mangling in trans.
2011-03-26 17:36:47 -07:00
Graydon Hoare
643a75b86e
Add visibility enum values to lib.llvm.
2011-03-26 17:36:26 -07:00
Graydon Hoare
ac6e1131e9
Teach creader and metadata writer how to do ty.ty_type.
2011-03-26 17:35:51 -07:00
Patrick Walton
bea41aa7d8
rustc: Add a function to look up external item info in the item info table
2011-03-25 19:02:19 -07:00
Graydon Hoare
027368b885
Janitorial: move llvmext back to llvm module, as they're the same thing now.
2011-03-25 18:45:00 -07:00
Patrick Walton
24a75eeccc
rustc: Parse definition IDs from crates; add a function to parse unsigned ints to the standard library
2011-03-25 18:35:30 -07:00
Graydon Hoare
ee686dacb8
Add get_extern_const, factor get_extern into get_extern_fn and get_simple_extern_fn.
2011-03-25 17:59:56 -07:00
Patrick Walton
94c19a18ae
rustc: Look up names in "use"d crates
2011-03-25 17:54:48 -07:00
Graydon Hoare
661f1c541e
Trans nomenclature tidy-up: upcall vs. native vs. extern.
2011-03-25 15:48:00 -07:00
Graydon Hoare
b2427509e2
Another go at changing compile-command, this time using RBUILD env var.
2011-03-25 15:07:27 -07:00
Graydon Hoare
3712ee68ad
Sketch of wiring typeck up to creader.
2011-03-25 14:34:32 -07:00
Graydon Hoare
91c2b82b09
Revert "Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root."
...
This reverts commit 846f2e2ba9
.
2011-03-25 14:05:38 -07:00
Graydon Hoare
846f2e2ba9
Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root.
2011-03-25 13:48:37 -07:00
Tim Chevalier
a47cd50dfb
Parse FP literals without coercing to int. This allows parsing 64-bit
...
floats. However, if someone writes a literal that can't be represented
precisely in 64 bits, the front-end will accept it while the back-end
will (presumably) complain.
2011-03-25 11:20:30 -07:00
Patrick Walton
e2d6475308
rustc: Store cached crate metadata in the session
2011-03-25 11:11:21 -07:00
Brian Anderson
9ca7acb1f3
Update pretty printer for ports, channels, send and receive
2011-03-25 11:01:52 -07:00
Brian Anderson
ebc4df3c7a
Implement local declarations with receive. Un-XFAIL decl-with-recv.rs.
2011-03-25 11:01:52 -07:00
Brian Anderson
71f058499a
Refactor ast.local to make room for initialization via recv
2011-03-25 11:01:52 -07:00
Patrick Walton
77a3373d53
rustc: Create a crate metadata cache
2011-03-25 10:44:24 -07:00
Marijn Haverbeke
d4c3059e1e
make lexer unicode-aware for strings and char literals
2011-03-25 08:23:00 -07:00
Marijn Haverbeke
a045514477
Start making the standard-lib utf-8 aware
...
Finally implements _str.is_utf8, adds from_chars, from_char, to_chars,
char_at, char_len, (push|pop|shift|unshift)_char. Also, proper
character I/O for streams.
2011-03-25 08:22:52 -07:00
Marijn Haverbeke
d3b49f5aab
fix pretty-printer
...
A change in 54587bdccb
(the vec
appending overhaul) had broken it. (Apparently modifying a vec while
iterating over it can corrupt memory.)
2011-03-25 07:59:13 -07:00
Graydon Hoare
4e49ca8abd
Start hooking resolve into creater.
2011-03-24 17:37:32 -07:00
Patrick Walton
af3d0d1848
rustc: Open "use"d crates; add a _vec.vec_from_buf() method along the way; XFAIL use-import-export.rs in rustc
2011-03-24 17:22:07 -07:00
Graydon Hoare
86f1ace55b
Teach creader about reading ty_float, and trim trailing whitespace.
2011-03-24 11:50:45 -07:00