Graydon Hoare
d1fdf0ab23
Teach copy_ty to finish via memcpy of tydesc-provided size.
2011-01-17 13:30:29 -08:00
Rafael Ávila de Espíndola
57b281533d
Some misc cleanups:
...
* Remove unused argument
* Move option.t wrapping to outer functions.
2011-01-17 14:58:18 -05:00
Graydon Hoare
4b8779ea95
Pass tydescs to parametric fns, along with (dummy, presently) retptr when needed. Can call simple parametric fn now.
2011-01-14 16:50:37 -08:00
Rafael Ávila de Espíndola
5b9eda4a41
Fix the import handling in "complex" cases. When looking a.b.c and 'a' is a
...
module, we should look for 'b' *just* in the module 'a' and then continue
resolving b.c in the environment created by updating *with* a.
Still not 100% correct, but getting there.
2011-01-14 17:34:00 -05:00
Graydon Hoare
c8a2c44a8e
Expand generic info in lval_result.
2011-01-14 14:17:57 -08:00
Graydon Hoare
bc416284ac
Trim long lines.
2011-01-14 13:59:35 -08:00
Graydon Hoare
b039be1e5c
Pass tydescs to parametric fns.
2011-01-14 13:58:19 -08:00
Rafael Ávila de Espíndola
bdcb9d9b53
Make lookup non recursive and instead move the recursion just to
...
find_final_def. Use the fact that the recursion is in a simpler function to
detected import loops and exit.
2011-01-14 11:10:06 -08:00
Graydon Hoare
f3c3fc0353
Change single-ident expr_ident to greedy/fat multi-ident expr_path, to handle the module-path/value-indexing distinction.
2011-01-13 17:42:28 -08:00
Rafael Ávila de Espíndola
c1f2e29596
Produce better errors for invalid imports.
2011-01-12 12:27:31 -08:00
Rafael Ávila de Espíndola
c489abedb4
Call find_final_def directly in fold_view_item_import. It is both cleaner and
...
faster.
2011-01-12 12:26:59 -08:00
Rafael Ávila de Espíndola
359d72b4d0
Change mod_index_entry to point directly to items and view_items.
2011-01-12 12:26:23 -08:00
Patrick Walton
2aa36777f1
Figure out what tydescs we need to pass when translating parametric function calls
2011-01-12 11:05:38 -08:00
Rafael Ávila de Espíndola
34643eeac8
Fix another import case we got wrong: The local environment should not
...
interfere with the import statements.
2011-01-11 13:59:52 -08:00
Rafael Ávila de Espíndola
c5a766f133
Fix two invalid import cases we were not detecting:
...
* If an import was unused we would never print any errors for it.
* We would keep the existing environment in scope when descending 'foo.bar'
and would find 'bar' in the global environment if there was no 'bar' in
'foo'.
2011-01-11 13:58:39 -08:00
Graydon Hoare
a8eeec1dbd
Sketch support for reading multi-file crates in rustc. Add test, not yet working.
2011-01-10 18:18:16 -08:00
Graydon Hoare
3b0e207109
Drop closures. Un-XFAIL bind-interior.rs.
2011-01-07 16:26:30 -08:00
Rafael Ávila de Espíndola
2fb09eb585
Add sufficient import support to compile some simple single-crate programs.
...
This is likely not the final solution. It does repetitive work and doesn't produce
errors for invalid but unused imports. In any case, I think it is a useful step.
2011-01-07 15:17:18 -08:00
Graydon Hoare
3c61793b5a
Synthesize closure thunks, and pass closure pointer into fn calls.
2011-01-07 15:12:23 -08:00
Graydon Hoare
27b4c3f962
Whitespace cleanup, and copy target into closure.
2011-01-06 12:55:27 -08:00
Rafael Ávila de Espíndola
fb8eff95e2
Add the boilerplate for folding view items.
2011-01-06 11:26:29 -05:00
Graydon Hoare
62c79fb216
Sketch closure-forming logic for nontrivial bindings.
2011-01-05 18:57:28 -08:00
Graydon Hoare
f3f63da7c8
Translate trivial bindings. Un-XFAIL bind-trivial.rs.
2011-01-05 16:06:01 -08:00
Graydon Hoare
5d2a6c73ca
Use uniform pair representation of functions everywhere, including static functions.
2011-01-05 15:31:35 -08:00
Patrick Walton
b7d2fe57cf
rustc: Allow the type unification handler to handle both expected and actual param types
2011-01-04 16:53:28 -08:00
Graydon Hoare
116dd9e338
Correct function pointer type in closure.
2011-01-04 15:29:38 -08:00
Graydon Hoare
2ec0b724c4
Merge remote branch 'espindola/import'
2011-01-04 15:07:38 -08:00
Rafael Ávila de Espíndola
7c8f99fdc1
Add names from imports to the namespace.
2011-01-04 17:58:10 -05:00
Patrick Walton
29fb238a39
rustc: Add an item type accessor
2011-01-04 12:46:11 -08:00
Rafael Ávila de Espíndola
e0fe271d34
Add support for looking up a name introduced by a 'use'.
...
With this we go from "error: unresolved name: foo" to
"unimplemented definition variant for: foo" in
use foo;
fn main(vec[str] args) {
foo.bar();
}
2011-01-04 11:35:13 -05:00
Rafael Ávila de Espíndola
5fd3d2ca55
Refactor the view_item code so that it is similar to the code used for
...
parsing regular items.
2011-01-04 11:34:05 -05:00
Rafael Ávila de Espíndola
35c745da03
Rename use_or_import to view_item.
2011-01-04 11:23:56 -05:00
Graydon Hoare
cfb97b3393
Begin sketching translation of bind_expr. No captures yet, also crashy.
2011-01-03 22:39:43 -08:00
Graydon Hoare
d1517471fb
Split driver between parsing source files and crate files, by extension. Add dummy function for crate files.
2011-01-03 20:41:11 -08:00
Graydon Hoare
546f1e98cb
Typecheck expr_bind.
2011-01-03 18:22:56 -08:00
Graydon Hoare
771d76e552
Add type accessors for fn types.
2011-01-03 18:22:39 -08:00
Graydon Hoare
0040a31076
Fix fold bug on expr_bind.
2011-01-03 18:22:27 -08:00
Graydon Hoare
019095c9e6
Actually return the correct node from the parser.
2011-01-03 16:18:25 -08:00
Graydon Hoare
2100aceabf
Remove missed debug chatter.
2011-01-03 15:06:19 -08:00
Graydon Hoare
0a2e7f2149
Add restricted-parse mode, and parse bind expressions.
2010-12-31 17:28:43 -08:00
Graydon Hoare
10a130e6c1
Translate local item decls.
2010-12-31 15:16:11 -08:00
Graydon Hoare
1b0da12fe8
Update method-fold env with fake item_fn representing the method.
2010-12-31 15:05:22 -08:00
Graydon Hoare
ad889ba3ae
Change resolve errs to span_errs.
2010-12-31 14:43:43 -08:00
Graydon Hoare
b42f49bf99
Parse local item decls.
2010-12-31 14:33:49 -08:00
Graydon Hoare
53d5b11208
Index tag and obj items in decl stmts.
2010-12-31 14:18:19 -08:00
Graydon Hoare
bd536ba85f
Free objects by indirectly dropping fields via enclosed tydesc first.
2010-12-31 13:01:45 -08:00
Graydon Hoare
f072718cfe
Replace arg Load with load_non_structural in obj ctor.
2010-12-31 12:20:18 -08:00
Graydon Hoare
065542378c
Teach ty.unify about ty_obj.
2010-12-31 10:26:29 -08:00
Graydon Hoare
aa1d8d0768
Move unify_fn logic out-of-line.
2010-12-31 09:48:54 -08:00
Graydon Hoare
91809a17ac
Teach typeck.ast_ty_to_ty about ty_obj.
2010-12-30 17:46:56 -08:00
Graydon Hoare
a99713265b
Teach fold about ty_obj.
2010-12-30 17:46:35 -08:00
Graydon Hoare
1f2585f479
Teach trans to access object fields.
2010-12-30 17:01:20 -08:00
Graydon Hoare
9676fb2d0a
Assign method types properly by sorted-order.
2010-12-30 17:00:59 -08:00
Graydon Hoare
153efb58bc
Teach typeck to check obj field accesses.
2010-12-30 15:28:19 -08:00
Graydon Hoare
bc9db2e972
Teach resolve to find obj fields and ty params from methods.
2010-12-30 15:27:52 -08:00
Graydon Hoare
a9d03dd1a2
Add def id to ast for obj fields.
2010-12-30 15:27:19 -08:00
Rafael Ávila de Espíndola
09ef31caa0
Record the ast of uses and imports.
2010-12-30 11:21:37 -05:00
Patrick Walton
a634b21563
rustc: Make parametric return types go through an out pointer
2010-12-29 19:08:35 -05:00
Rafael Ávila de Espíndola
2c6dd18224
Add a -shared option to rustc and don't try to look for main if it is given.
2010-12-29 11:21:16 -05:00
Rafael Ávila de Espíndola
f900792fa3
Parse 'import' directives in rustc.
2010-12-24 21:06:14 -08:00
Rafael Ávila de Espíndola
8d2fdac93b
Parse 'use' directives in rustc.
2010-12-24 17:03:46 -08:00
Graydon Hoare
5c7cd6419c
Modify translation of obj methods to accept an initial recursive-self-typed (in the LLVM sense) obj argument.
2010-12-23 17:31:16 -08:00
Graydon Hoare
f2195d8b0a
Print recursive LLVM types.
2010-12-23 17:05:27 -08:00
Patrick Walton
daac7a8b13
rustc: Add a type_has_dynamic_size predicate
2010-12-22 18:02:48 -08:00
Graydon Hoare
3f3a121043
Copy body tydesc and args into obj bodies.
2010-12-22 16:09:59 -08:00
Graydon Hoare
a2a642c17a
Correct bug in typechecking ctor arguments to nonempty objects.
2010-12-22 13:57:18 -08:00
Graydon Hoare
ac270fc854
Allocate heap cells to store non-empty object bodies.
2010-12-22 13:56:51 -08:00
Patrick Walton
0411132679
rustc: Move unification out of typeck.rs; trans will need it too.
2010-12-21 17:47:13 -08:00
Patrick Walton
e06263ff4b
rustc: Reference count the function context in typechecking so that passing it around via objects isn't as costly
2010-12-21 17:27:29 -08:00
Graydon Hoare
3504f4a4bf
Sort methods in object types.
2010-12-21 16:43:28 -08:00
Patrick Walton
744b164b7d
rustc: Move type logic out of typeck so trans doesn't look like it's calling into typeck
2010-12-21 16:24:17 -08:00
Patrick Walton
b9286a7179
rustc: Sanitize names better. Puts out burning tinderbox on OS X.
2010-12-20 19:52:14 -08:00
Patrick Walton
5cbf8889d0
rustc: Add bind expressions to the AST
2010-12-20 18:58:18 -08:00
Graydon Hoare
ed1dddc33f
Null-check on obj box ptr, init to null. Un-XFAIL simple-obj.rs.
2010-12-20 17:28:07 -08:00
Graydon Hoare
399929ba0b
Support ty_obj in trans_field; simple-obj.rs compiles (but crashes).
2010-12-20 16:48:28 -08:00
Graydon Hoare
86188da348
Mop up cases of s/copy/take/, remove 'binding' terminology, whitespace police, and make obj/fn structural.
2010-12-20 16:26:38 -08:00
Patrick Walton
e70c695ab9
rustc: Use the passed-in tydescs for take and drop glue in parametric fns. Also fix a level-of-indirection problem with tydesc params.
2010-12-20 15:23:24 -08:00
Patrick Walton
194d7844ea
rustc: Print the type when we die in trans.make_drop_glue_inner
2010-12-20 14:44:04 -08:00
Patrick Walton
9fb2284600
rustc: Add a type param ID -> type descriptor mapping to function contexts
2010-12-20 14:35:04 -08:00
Graydon Hoare
7bd30f83e1
Put out burning tree (sizeof / alignof bug).
2010-12-20 12:54:50 -08:00
Graydon Hoare
490da3564b
Use gvars for vtbls rather than returning const immediates.
2010-12-20 11:41:32 -08:00
Graydon Hoare
6a8518c97b
Trailing whitespace police.
2010-12-20 11:41:32 -08:00
Patrick Walton
a7e9984999
rustc: Build tydescs for types, and make all take and drop operations go through the tydescs for simplicity (LLVM inlines them).
2010-12-20 10:23:37 -08:00
Patrick Walton
ad5e920276
rustc: Remove the unused "name" parameter from trans.new_builder
2010-12-17 18:42:15 -08:00
Patrick Walton
9b56b79296
rustc: Make some no-op take and drop glue for scalar types
2010-12-17 18:40:24 -08:00
Graydon Hoare
01bcb1d10e
Split part of typeck.check_fn out into typeck.check_item_fn, then check all fns, including obj fns.
2010-12-17 18:25:14 -08:00
Patrick Walton
7210a31e2a
rustc: Make all drop and take glue have the same signature, so we can put them in tydescs
2010-12-17 18:20:51 -08:00
Graydon Hoare
b00abd04e2
Record type annotations for methods.
2010-12-17 17:52:25 -08:00
Patrick Walton
c44c7c5ab3
rustc: Zero out slots after dropping them
2010-12-17 17:21:56 -08:00
Graydon Hoare
56e040e61a
Trans methods more correctly, and store vtbl pointer in pair returned from obj ctor.
2010-12-17 00:31:41 -08:00
Graydon Hoare
62d62ce4da
Remove calltup fields from ABI, add binding fields.
2010-12-16 23:26:07 -08:00
Graydon Hoare
a3f828f941
Sketch trans_vtbl.
2010-12-16 18:34:04 -08:00
Patrick Walton
bfdba2dbcc
rustc: Translate parametric function signatures into task + type parameters + formal arguments
2010-12-16 16:35:19 -08:00
Graydon Hoare
31f0642da3
Stub out translation of obj ctors (no vtbl or body built).
2010-12-16 15:55:28 -08:00
Patrick Walton
51782d2c21
rustc: Add a type fold mechanism to the typechecker
2010-12-16 15:13:04 -08:00
Patrick Walton
a6c6e8679e
rustc: Only generalize on definition types that can actually be parametric
2010-12-16 13:59:20 -08:00
Patrick Walton
680e858d61
rustc: Write types back when typechecking "ret" statements
2010-12-16 12:25:39 -08:00
Patrick Walton
13b889287b
rustc: Make trans.type_of handle parameter types
2010-12-16 12:23:48 -08:00
Patrick Walton
e6908a66ec
rustc: Infer the types of type-parametric functions
2010-12-16 11:12:45 -08:00
Graydon Hoare
9759d1e08a
Annotate obj items while folding ast in typeck.
2010-12-16 10:34:54 -08:00
Graydon Hoare
7d2feae857
Collect obj items, translate obj-name references and obj-ctor types.
2010-12-16 10:23:47 -08:00
Graydon Hoare
d8d2220b30
Typecheck object method calls.
2010-12-15 20:23:36 -08:00
Graydon Hoare
482dc0c8fa
Convert obj item type to ctor type rather than obj type.
2010-12-15 17:04:21 -08:00
Patrick Walton
e17473de07
rustc: Move next_var_id back to the crate context in typechecking; we'll need it when collecting item types
2010-12-15 15:10:41 -08:00
Patrick Walton
d1b2366983
rustc: Resolve type params
2010-12-15 13:13:36 -08:00
Graydon Hoare
76aab6b1a8
Teach typeck to stringify obj types.
2010-12-15 12:30:31 -08:00
Patrick Walton
42789c4b97
rustc: Fix bug involving extracting any variant element beyond the first. Un-XFAIL alt-tag.rs.
2010-12-15 10:11:33 -08:00
Patrick Walton
2a8350e8d9
rustc: Resolve tag names in the typechecker
2010-12-15 10:00:28 -08:00
Patrick Walton
0d3400fec2
rustc: Lex '_' as an underscore, not as an identifier
2010-12-15 09:44:48 -08:00
Patrick Walton
e17806e1c8
rustc: Translate pattern matching
2010-12-15 09:38:40 -08:00
Graydon Hoare
cd55b7ed89
Teach typeck.ty, typeck.collect_item_types and typeck.check_expr about obj items.
2010-12-14 18:04:39 -08:00
Graydon Hoare
b1e0c60d6d
Add ty_obj to ast and parser.
2010-12-14 17:42:12 -08:00
Graydon Hoare
4cddeed651
Teach resolve about obj items.
2010-12-14 17:09:37 -08:00
Graydon Hoare
a7eb1ac90f
Move call_expr parse rule to the place where it needs to be to understand complex calls.
2010-12-14 16:59:13 -08:00
Graydon Hoare
e0998847be
Teach fold about objs.
2010-12-14 16:35:31 -08:00
Graydon Hoare
b606ba81cf
Add obj items to AST and parser.
2010-12-14 15:32:13 -08:00
Graydon Hoare
525966a543
Fix a couple bugs in iter_sequence, un-XFAIL vec-drop.rs.
2010-12-13 17:48:42 -08:00
Patrick Walton
90807e240f
rustc: Typecheck pattern bindings
2010-12-13 16:44:20 -08:00
Patrick Walton
0ef65780ca
rustc: Check patterns before arm blocks in alt expressions; this will be needed for binding type resolution
2010-12-13 16:39:35 -08:00
Patrick Walton
29e6d7a4ad
rustc: Hack to get rid of passing i1 types for unit around in most cases, suggested by Rafael
2010-12-13 16:12:45 -08:00
Graydon Hoare
a3cbdc661c
Set the new vec fill-size on the compiler side, as in rustboot. Un-XFAIL first 3 vec tests.
2010-12-13 11:16:04 -08:00
Patrick Walton
04e15bf8f8
rustc: Typecheck "alt" expressions and patterns
2010-12-12 20:02:49 -08:00
Patrick Walton
7d0734bb96
rustc: Propagate types for vector, tuple, record, assignment, and if expressions downward again
2010-12-12 19:54:58 -08:00
Patrick Walton
833af6f6f3
Revert "rustc: Propagate types for vector, tuple, record, assignment, and if expressions downward" due to test bustage
...
This reverts commit 1cdf42dd63
.
2010-12-12 19:16:08 -08:00
Patrick Walton
d08b5bc3d4
rustc: Fix nonexhaustive match failure on unresolved identifiers
2010-12-12 16:49:51 -08:00
Patrick Walton
9ac42ca743
rustc: Resolve variant names in patterns
2010-12-12 16:47:37 -08:00
Patrick Walton
bc5fa9bf67
rustc: "resoling" -> "resolving" typo
2010-12-12 16:37:31 -08:00
Patrick Walton
38ba0e6917
rustc: Add a definition ID to tag patterns
2010-12-12 16:30:34 -08:00
Patrick Walton
1cdf42dd63
rustc: Propagate types for vector, tuple, record, assignment, and if expressions downward
2010-12-11 23:22:06 -08:00
Patrick Walton
0d5724b773
rustc: Make return value inference use next_ty_var, now that we have it
2010-12-11 22:40:46 -08:00
Patrick Walton
c3ab601a89
rustc: Move next_var_id from typeck.crate_ctxt to typeck.fn_ctxt
2010-12-11 22:37:23 -08:00
Patrick Walton
368459db43
rustc: Remove "update_env_for_arm" debugging message
2010-12-11 22:30:12 -08:00
Patrick Walton
de118d79b6
rustc: Resolve pattern bindings
2010-12-10 18:08:32 -08:00
Patrick Walton
0509b1b9d7
rustc: Add update_env_for_arm to fold; we'll need it to resolve pattern bindings
2010-12-10 17:49:28 -08:00
Graydon Hoare
f97242c255
Fix bad GEP and missing branch in iter_sequence; vec.rs compiles now.
2010-12-10 17:46:47 -08:00
Graydon Hoare
60affafdcd
Implement expr_vec.
2010-12-10 17:25:22 -08:00
Graydon Hoare
779b913348
Fix trans_index implementation.
2010-12-10 17:25:22 -08:00
Patrick Walton
0d43c198f0
rustc: Add def ids to pattern bindings
2010-12-10 17:24:53 -08:00
Patrick Walton
0b84707da7
rustc: Add tag support to ty_of_item in typeck
2010-12-10 16:44:12 -08:00
Patrick Walton
2c472c0de8
rustc: Add LLVM typedefs for rust_crate and rust_task for good measure
2010-12-10 16:29:41 -08:00
Patrick Walton
cf8ad5f56d
rustc: Declare LLVM typedefs appropriately
2010-12-10 16:24:47 -08:00
Patrick Walton
e37c032eb0
rustc: Move refcount incrementing out of line too
2010-12-10 16:14:06 -08:00
Graydon Hoare
865c06c1f9
Preliminary translation of expr_index.
2010-12-10 16:10:35 -08:00
Patrick Walton
270b93bd71
rustc: Move refcount decrement-and-free (drop) logic out-of-line
2010-12-10 15:37:17 -08:00
Patrick Walton
10d5d32537
rustc: Change lazy "and" and "or" to use scope contexts rather than sub-block contexts, to run cleanups properly
2010-12-10 15:27:55 -08:00
Graydon Hoare
0565350b5f
Typecheck vec and index exprs.
2010-12-10 15:05:19 -08:00
Patrick Walton
eaa76bd83f
rustc: Decouple new_fn_ctxt() from AST function arguments, so that it can be used to generate glue
2010-12-09 17:38:57 -08:00
Graydon Hoare
4e1046a508
Fix another bug in expr_index parse rule.
2010-12-09 17:34:44 -08:00
Graydon Hoare
d5ed5e7044
Fix bug in parse rule for expr_index.
2010-12-09 17:12:08 -08:00
Graydon Hoare
e04c24769e
Add 'unexpected' fn to parser.
2010-12-09 17:11:52 -08:00
Graydon Hoare
8383b1c435
Fix token span tracking in lexer.
2010-12-09 17:11:05 -08:00
Graydon Hoare
9ee3475e09
Rewrite second pass of collect_item_types to use fold, therefore process all items in crate. Add testcase to check.
2010-12-09 16:06:40 -08:00
Patrick Walton
1c9dc2ca52
rustc: Decouple new_fn_ctxt from AST items so that we can use it to generate glue too
2010-12-09 15:26:16 -08:00
Graydon Hoare
d213f9be95
Simplify second pass of collect_item_types so I can understand it better.
2010-12-09 15:19:38 -08:00
Graydon Hoare
b7e344622c
Add a type abbreviation and redo first pass of collect_item_types to collect across the whole crate, not just top level.
2010-12-09 15:03:19 -08:00
Graydon Hoare
876282791e
First sketch of support for const items, not including most of trans.
2010-12-09 14:37:50 -08:00
Patrick Walton
5a6cc341ad
rustc: Add gross eq_ty() and hash_ty() functions
2010-12-09 14:03:43 -08:00
Patrick Walton
e5bbe93646
rustc: Mark constant strings as constants
2010-12-09 13:49:26 -08:00
Patrick Walton
e652e58bfc
rustc: Fix indirection problem with tag constructors
2010-12-09 13:39:33 -08:00
Graydon Hoare
66b5dfabee
Remove redundant trans_drop_str, fix buggy branch in trans_if. Un-XFAIL drop-on-ret.rs.
2010-12-09 12:32:16 -08:00
Graydon Hoare
440e637edf
Fix boxed returns harder. Un-XFAIL output-slot-variants.rs.
2010-12-08 16:43:59 -08:00
Graydon Hoare
652ae9f50e
Fix structure returns harder.
2010-12-08 16:34:16 -08:00
Graydon Hoare
e3a3a03572
Fix boxed returns.
2010-12-08 16:20:04 -08:00
Graydon Hoare
264de9c7fc
Fix structure-returns.
2010-12-08 15:52:01 -08:00
Graydon Hoare
2b36a8eab4
Fix log upcall translation bug. Un-XFAIL rec-auto.rs.
2010-12-08 15:29:09 -08:00
Graydon Hoare
6ccfba34f3
Add missing case to parse_ty, un-XFAIL cast.rs.
2010-12-08 15:04:57 -08:00
Graydon Hoare
68af077e81
Implement binop= forms. Un-XFAIL bitwise.rs.
2010-12-08 14:50:47 -08:00
Graydon Hoare
b971d6312e
Fix missing case in resolve, un-XFAIL rec-tup.rs.
2010-12-08 11:52:34 -08:00
Patrick Walton
e558ff907f
rustc: Allow callees to use alias args
2010-12-07 12:34:10 -08:00
Patrick Walton
7f85945b05
rustc: Translate function calls with alias parameters (though the callee can't use them yet)
2010-12-07 11:57:19 -08:00
Patrick Walton
15a614acb4
rustc: Implement is_lval
2010-12-07 10:38:42 -08:00
Graydon Hoare
a059b4720c
Null slots on missing init, null-check box ptrs on drop. Works around missing typestate pass. Un-XFAIL box-in-tup.rs.
2010-12-06 17:46:44 -08:00
Patrick Walton
3f9d5dab5b
rustc: Run the verifier over LLVM modules before writing them out
2010-12-06 17:17:49 -08:00
Patrick Walton
a1c7d19836
rustc: Translate tag constructors. Can't call them at the moment due to lack of alias args, though.
2010-12-06 16:50:24 -08:00
Patrick Walton
fb05d9184b
rustc: Make copy_args_to_allocas not insist on a function type so it's easier to make it work with tag constructors
2010-12-06 11:22:08 -08:00
Graydon Hoare
9f6a630519
Drop rec and tup alloca temporariles on block exit.
2010-12-03 18:43:40 -08:00
Patrick Walton
b4d9754347
rustc: Make new_fn_ctxt and copy_args_to_allocas receive a list of args rather than an AST fn, so we can use it for tag constructors
2010-12-03 18:20:41 -08:00
Patrick Walton
2e119698b7
rustc: Add def ids to variant arguments so we can turn them into function arguments later
2010-12-03 18:13:15 -08:00
Graydon Hoare
0c19c8e18f
Parse layer and effect annotations.
2010-12-03 18:04:18 -08:00
Patrick Walton
afd3af9bb5
rustc: Remove LLVM unions and represent tags as (discriminant, byte blob) pairs
2010-12-03 16:55:59 -08:00
Patrick Walton
f371dc613a
rustc: Set data layout and target triple
2010-12-03 13:52:54 -08:00
Graydon Hoare
aeef8cee29
Add load_non_structural and use it.
2010-12-03 13:03:07 -08:00
Patrick Walton
5347cac92d
rustc: Handle n-ary tag constructors in iter_structural_ty (which lets us process their refcounts correctly)
2010-12-03 12:35:49 -08:00
Graydon Hoare
4316df6323
Trim whitespace.
2010-12-03 12:26:27 -08:00
Graydon Hoare
a98b2ebb4a
Change 'stratum' to the friendlier term 'layer'.
2010-12-03 12:15:32 -08:00
Patrick Walton
7bdb93266d
rustc: Translate nullary tag constructors
2010-12-03 10:24:55 -08:00
Graydon Hoare
d922b0ad9c
Drop slots on the way out of scopes. Un-XFAIL box.rs.
2010-12-02 19:44:24 -08:00
Graydon Hoare
966cfed07c
Modify block ctxt / cleanup handling to only occur on scope blocks.
2010-12-02 19:12:34 -08:00
Graydon Hoare
1e9c8b923d
Implement translation for deref unop.
2010-12-02 19:12:09 -08:00
Graydon Hoare
97247bbb53
Change order of basic blocks in copy_ty, makes nicer disassembly.
2010-12-02 18:33:11 -08:00
Graydon Hoare
f69b4417e6
Don't drop context returned from decl-init call to copy_ty.
2010-12-02 18:32:43 -08:00
Graydon Hoare
0f41f5a8f9
Improve translations of unary box operator and drop_ty on boxes.
2010-12-02 17:43:24 -08:00
Patrick Walton
e233978891
rustc: Change fn_names and fn_ids to item_names and item_ids in trans, since we're soon to be storing tags in there too
2010-12-02 17:30:07 -08:00
Patrick Walton
49b3cd700e
rustc: Remove the premature optimization for nullary tag constructors, since it'll be no longer necessary once LLVM gets a unit type
2010-12-02 17:18:06 -08:00
Graydon Hoare
a439f6ec68
Add ty_boxed to typeck.type_is_boxed.
2010-12-02 15:56:44 -08:00
Graydon Hoare
cdcab742a7
Fix fold bug on expr_unary.
2010-12-02 15:54:45 -08:00
Graydon Hoare
b79de6b76c
Typecheck the box and deref unops properly.
2010-12-02 14:38:32 -08:00
Patrick Walton
376b35e618
rustc: Remove the overly complex variant_indices and n_ary_variant_indices tables
2010-12-02 11:00:10 -08:00
Patrick Walton
eeecc8d061
rustc: Add stub support for tag constructors in trans
2010-12-01 19:03:47 -08:00
Graydon Hoare
98a63bd1f9
Add code to fail on non-exhaustive alt matching. Fix all cases this picked up in rustc.
2010-12-01 17:09:02 -08:00
Patrick Walton
fd600bad46
rustc: Annotate variants with their types. This may be useful for trans!
2010-12-01 15:27:38 -08:00
Patrick Walton
cd97b9d965
rustc: Typecheck tag constructors
2010-12-01 11:39:03 -08:00
Patrick Walton
67a616340d
rustc: Fix segfault due to nonexhaustive match when using tags
2010-12-01 10:53:40 -08:00
Patrick Walton
42282a25c0
rustc: Resolve tag variant names
2010-12-01 10:19:38 -08:00
Graydon Hoare
45043374ff
Tidy up structural types for rec, tup AST and typeck nodes.
2010-11-30 16:32:00 -08:00
Patrick Walton
567a45cc70
rustc: Add def ids to variants
2010-11-30 12:32:20 -08:00
Graydon Hoare
25b973df1b
Finish support for typechecking and translating records. Un-XFAIL rec.rs.
2010-11-30 10:39:35 -08:00
Graydon Hoare
9c426521ee
Wrap long lines.
2010-11-29 17:53:35 -08:00
Graydon Hoare
a94046f5d2
Teach typechecker about record types.
2010-11-29 17:42:53 -08:00
Patrick Walton
6c5a05b819
rustc: Implement the block syntax discussed on the mailing list
2010-11-29 17:11:41 -08:00
Graydon Hoare
6c4e975099
Teach fold about ty_rec.
2010-11-29 16:09:46 -08:00
Graydon Hoare
e6b7f76385
Add ty_rec and parse it.
2010-11-29 15:42:09 -08:00
Graydon Hoare
3e08171fc2
Change mutability into a type constructor.
2010-11-29 15:29:55 -08:00
Graydon Hoare
386f363cfe
Change from bool to tag ast.mutability.
2010-11-29 14:18:26 -08:00
Graydon Hoare
38846e39c4
Add ast.ty_mutable.
2010-11-29 12:29:57 -08:00
Graydon Hoare
20b11c832c
Add mut field to typeck.ty.
2010-11-29 12:13:38 -08:00
Graydon Hoare
7be7c23b6b
Copy args to allocas, change llargs lookups to 'in mem'. Un-XFAIL tup.rs.
2010-11-26 17:47:27 -08:00
Graydon Hoare
d7ce2425c9
Load structural values through pointer before passing structs as args.
2010-11-26 16:08:10 -08:00
Graydon Hoare
9f56b0061c
Pass exprs by @, always treat structural types by pointer, move path and name into trans_lval.
2010-11-26 15:54:04 -08:00
Graydon Hoare
1600974a3a
Avoid segfault due to fallthrough in base case of incr_all_refcounts. We could use a typestate checker in rustc, any time now.
2010-11-26 13:03:56 -08:00
Graydon Hoare
7e01aba12d
Declare the memcpy intrinsics properly.
2010-11-26 13:02:48 -08:00
Graydon Hoare
3fd3270845
Return memcpy src rather than falling through and failing.
2010-11-25 18:28:15 -08:00
Graydon Hoare
a95dbdef70
Cast memcpy args to correct types.
2010-11-25 18:13:20 -08:00
Graydon Hoare
9b3182a99d
Add lookup checks and intrinsics table to trans.
2010-11-25 17:45:26 -08:00
Graydon Hoare
7e2f205866
Add missed case to typeck.ast_ty_to_ty, plus faux exhaustiveness check.
2010-11-25 17:06:36 -08:00
Graydon Hoare
416d9bc0fd
Fix typo in numeric-label-parsing loop.
2010-11-25 16:53:17 -08:00
Graydon Hoare
f0abe8f568
Translate field expressions.
2010-11-25 16:40:24 -08:00
Graydon Hoare
5678f5aa56
Typecheck field expressions.
2010-11-25 16:40:03 -08:00
Graydon Hoare
092af6fb76
Typecheck tup expressions.
2010-11-25 14:44:04 -08:00
Graydon Hoare
cffdb66aa4
Translate tuple-expressions.
2010-11-24 18:11:11 -08:00
Patrick Walton
78ec07790a
rustc: Assign definition IDs to type params
2010-11-24 18:01:20 -08:00
Patrick Walton
9769b61226
rustc: Parse type-parametric typedefs
2010-11-24 17:36:22 -08:00
Patrick Walton
98e8c2ef21
rustc: Parse type-parametric tags
2010-11-24 17:17:42 -08:00
Graydon Hoare
f809375b16
Sketch out type-directed structural drop and copy, including vector types.
2010-11-24 16:56:01 -08:00
Graydon Hoare
96540ef0bb
move expr_call translation into helper function.
2010-11-24 16:56:01 -08:00
Graydon Hoare
e2f9f746ea
Move expr_cast translation into helper function.
2010-11-24 16:56:01 -08:00
Patrick Walton
c1916adc7e
rustc: Parse type-parametric functions
2010-11-24 16:52:49 -08:00
Patrick Walton
80d099c59a
rustc: Don't require a semicolon after an "alt" statement
2010-11-24 16:29:44 -08:00
Patrick Walton
f075b10af2
rustc: Add patterns to fold
2010-11-24 15:45:59 -08:00
Patrick Walton
756880a5f5
rustc: Parse simple patterns
2010-11-24 14:42:01 -08:00
Patrick Walton
5d72dae1d1
rustc: Parse tag items. Currently segfaults in copy glue.
2010-11-24 11:36:35 -08:00
Patrick Walton
f55f46af64
rustc: Typecheck whiles and do-whiles. Add a workaround to complex.rs pending a solution to the one-armed-if problem.
2010-11-23 17:02:08 -08:00
Patrick Walton
4208352527
rustc: As an experiment, swap the expected/actual types when checking function arguments. Produces better diagnostics for arg-type-mismatch.rs.
2010-11-23 10:25:20 -08:00
Graydon Hoare
f2a7e712d3
Remove warning about non-void expr stmts.
2010-11-22 18:03:27 -08:00
Graydon Hoare
e05d7c3ac1
Support mach types in rustc, enable 5 more tests.
2010-11-22 17:41:32 -08:00
Patrick Walton
3e01b2d529
rustc: "Expected" and "actual" were swapped. Also un-XFAIL compile-fail/arg-count-mismatch.rs for good measure.
2010-11-22 17:38:23 -08:00
Patrick Walton
c0741c13ab
Remove the global bindings table in the typechecker
2010-11-22 17:14:18 -08:00
Graydon Hoare
d3cb25d5d1
Check and translate 'as' cast-operator, lower target-specific types, reindent rustc.rs, enable uint test.
2010-11-22 16:27:00 -08:00
Graydon Hoare
c262543d3b
Fix type disagreements in lowering typeck.ty to llvm TypeRefs, enable complex.rs test.
2010-11-22 14:28:05 -08:00
Graydon Hoare
1090c5e69c
Check for structural equality rather than structural-and-cname equality.
2010-11-22 13:24:53 -08:00
Graydon Hoare
6fcf55347e
Resolve the easy case of type paths.
2010-11-22 13:24:53 -08:00
Graydon Hoare
fdac6ffa7c
Accumulate type paths as we parse, rather than throwing them away.
2010-11-22 13:24:53 -08:00
Patrick Walton
0847ff7d42
rustc: "expectied" -> "expected" in parser.rs; also say what was found
2010-11-22 11:43:25 -08:00
Graydon Hoare
ccc21fd4da
Fix lexer bug, enable 5 more tests on rustc.
2010-11-22 11:35:00 -08:00
Graydon Hoare
3ba6736383
More typeck hacking, check if and call exprs, enable fact and deep tests.
2010-11-21 12:06:09 -08:00
Graydon Hoare
5955e23343
Typecheck assignment exprs, redo decl checking, propagate ty_vars. Enable another test.
2010-11-21 01:16:16 -08:00
Graydon Hoare
79a3811ab8
Typecheck binary, unary and name expressions. Re-enable 3 more tests.
2010-11-20 23:00:52 -08:00
Graydon Hoare
77670e84de
Fix bug in llvm type signature of function items; enable three more tests.
2010-11-20 22:05:17 -08:00
Graydon Hoare
eaf9df2dc3
Remove dead code.
2010-11-20 22:04:48 -08:00
Graydon Hoare
e731520be5
Add helper function to double-check non-null types.
2010-11-20 22:04:34 -08:00
Graydon Hoare
244c59ac20
Clean up typechecker file, disable all tests that fail under typechecker.
2010-11-19 20:46:04 -08:00
Graydon Hoare
6d92ca64a7
Translate typeck.ty_fn to a TypeRef. Can compile int.rs test now.
2010-11-19 20:08:57 -08:00
Patrick Walton
c00bda539d
rustc: First stab at a typechecker
2010-11-19 17:50:45 -08:00
Graydon Hoare
3352fab59b
Parse type items, nil types, named types. Fix some parser bugs. Enable arith-0 and arith-2 tests.
2010-11-19 16:34:47 -08:00
Graydon Hoare
44a0c7225d
Isolate while-header bug to minimal testcase, fix in rustboot, remove workaround in rustc.
2010-11-19 14:59:58 -08:00
Graydon Hoare
e94af48bc9
Work around Yet Another Typestate Lifecycle Bug in rustboot.
2010-11-19 10:41:32 -08:00
Graydon Hoare
44b051f34a
Fix typo in x86 backend glue that was, by luck, only crashing on OSX.
2010-11-15 12:45:26 -08:00
Graydon Hoare
a352efadad
Switch upcall glues to fastcall as well.
2010-11-14 13:41:10 -08:00
Graydon Hoare
4cbef9d8a1
Remove outptr from module-internal calls; use standard ABI returns.
2010-11-14 13:04:01 -08:00
Graydon Hoare
640d167037
Switch module-internal calls (i.e. all user code) to fastcall. Still returning via explicit outptr. Activate glue works by accident.
2010-11-14 12:28:07 -08:00
Graydon Hoare
a7af86155d
Support emitting trap instructions for debugging.
2010-11-14 11:21:49 -08:00
Graydon Hoare
2de59aa6b9
Correct infinite-loop, block-context mismatches in early cleanups.
2010-11-14 10:48:44 -08:00
Patrick Walton
e02ffb2c2d
rustc: Add a type annotation for locals
2010-11-12 16:11:33 -08:00
Graydon Hoare
0578978495
Move phi-node generation into a helper that measures the liveness of each incoming edge. Factorial test now succeeds.
2010-11-12 14:51:11 -08:00
Graydon Hoare
2ff0662eae
Load outptr alloca as retval; function call/return now works in rustc.
2010-11-12 11:48:18 -08:00
Graydon Hoare
1ff88982fe
Stop translating a block when a sub-statement terminates the llvm bb.
2010-11-12 10:15:40 -08:00
Patrick Walton
c3bc88a325
rustc: Add an annotation to function and type items so that the typechecker can store types with them
2010-11-10 18:20:02 -08:00
Graydon Hoare
d1e7f0b414
Redo the scheme for block context chaining and termination, to simplify and support ret better.
2010-11-10 17:46:49 -08:00
Graydon Hoare
a404e54261
Teach rustc about const tag value, begin work on trans_copy_ty, make uint's to_str routine less clever and thereby resist overflow.
2010-11-09 17:50:31 -08:00
Graydon Hoare
216082d040
Translate ast.box unary expressions and support extraction of TypeRefs from AST annotations.
2010-11-05 18:31:24 -07:00
Graydon Hoare
ffb3861c70
Move symbol prefix logic into separate function, add underscore prefix for windows.
2010-11-05 18:31:23 -07:00
Graydon Hoare
c1fb592f62
Emit WinMain@16 entrypoint on windows.
2010-11-05 18:31:22 -07:00
Graydon Hoare
981edaef40
Fix two incorrect block-context uses in rustc.
2010-11-05 18:31:21 -07:00
Graydon Hoare
2122e363df
Teach rustc to generate type descriptors.
2010-11-05 18:31:20 -07:00
Graydon Hoare
3956b98312
Switch rustc to llvm 2.8 rather than 2.8svn on windows.
2010-11-05 18:31:20 -07:00
Patrick Walton
35eb088ae3
rustc: Implement function types
2010-11-05 15:23:03 -07:00
Patrick Walton
adb1754e4d
Move the option type to its own module
2010-11-05 11:18:40 -07:00
Patrick Walton
2fcf81cc4b
Revert "Move the option type to its own module"
2010-11-05 10:41:23 -07:00
Patrick Walton
1d214b4df3
Move the option type to its own module
2010-11-05 10:23:22 -07:00
Graydon Hoare
16faef2218
Fix buggy while and do-while translation in rustc. Add test.
2010-11-04 07:55:33 -07:00
Patrick Walton
a3d666bfdf
rustc: Use an extensible annotation field instead of putting option[@ty] everywhere
2010-11-03 15:54:46 -07:00
Graydon Hoare
e5fdd7b63a
Support while and do-while loops in rustc.
2010-11-03 11:05:15 -07:00
Graydon Hoare
dc299c9a19
Teach rustc lexer about changes to stratum, opacity and effect keywords.
2010-11-03 10:29:48 -07:00
Graydon Hoare
7db115834f
Split out stratum-checking pass, implement more-strict (overly aggressive) impure-effect checking.
2010-11-02 15:24:46 -07:00
Graydon Hoare
da13c508d8
First pass on splitting stratum and opacity off of effects. WIP.
2010-11-02 11:11:58 -07:00
Graydon Hoare
f3b7aa9068
Long line police.
2010-10-22 19:37:03 -07:00
Graydon Hoare
3bf775e80f
Pass outptr as in rustboot. Probably need to revisit this ABI. Also disgusting hack employed. Please remove.
2010-10-22 19:35:48 -07:00
Graydon Hoare
b2f07c6056
Collect all fns first so decl order doesn't matter to translation.
2010-10-22 19:31:33 -07:00
Graydon Hoare
d4497e481e
Extremely broken hacked-up incorrect attempt at 'ret'.
2010-10-22 19:23:10 -07:00
Graydon Hoare
e5229b97d7
Don't use string == in x86.rs, doesn't work.
2010-10-22 17:27:22 -07:00
Patrick Walton
05a3c5c0f3
rustc: Add an "_" prefix to assembler-generated symbols on Mac
2010-10-22 16:16:02 -07:00
Graydon Hoare
6d47d2abde
Implement check-exprs, un-xfail 5 rustc tests.
2010-10-22 15:37:42 -07:00
Graydon Hoare
6ec402d4a6
Add makefile bits to run rustc on the testsuite as part of 'make check'. Mostly xfailed.
2010-10-22 14:46:03 -07:00
Graydon Hoare
36aea66e47
Give rustc the beginnings of an option-processing loop (at least -nowarn, -h and -o).
2010-10-22 11:47:28 -07:00
Graydon Hoare
74eda5bb70
Make append take a mutable &. Not even checked at present, tsk tsk.
2010-10-22 11:46:54 -07:00
Graydon Hoare
3f80e79efc
Add support for passing args to fns in rustc.
2010-10-21 18:13:57 -07:00
Graydon Hoare
67477b85ae
Support basic function calls in rustc.
2010-10-21 17:24:26 -07:00
Graydon Hoare
3aaae2a881
Teach rustc to parse call exprs.
2010-10-21 16:42:02 -07:00
Dave Herman
dbe27199b8
line length police; moved comp.util.bits to std.bitv
2010-10-21 11:39:53 -07:00
Dave Herman
852c0d6631
oops, removed bits.test() from main
2010-10-21 08:06:44 -07:00
Dave Herman
da8b6795c7
tests and bugfixes: fns take aliases, fixed binary arithmetic in create, eliminated wasted bit per uint
2010-10-21 07:36:13 -07:00
Dave Herman
ce3224652f
simpler computation of uint_bits(), plus whitespace police
2010-10-20 22:04:19 -07:00
Dave Herman
8f71dad2c9
created a first draft of the bit-set library needed for typestate
2010-10-20 17:04:15 -07:00
Graydon Hoare
368943998d
Translate lazy && and || operators in rustc.
2010-10-19 17:24:15 -07:00
Graydon Hoare
71b1f1d117
Parse and translate assignments.
2010-10-19 16:33:11 -07:00
Graydon Hoare
b8cca0971f
Teach trans to allocate, initialize and load from local variables.
2010-10-19 14:54:10 -07:00
Patrick Walton
10d628dbd0
Add a type slot to the AST
2010-10-19 13:28:43 -07:00
Patrick Walton
e497fe981b
Partial work on adding types to the AST
2010-10-19 13:10:39 -07:00
Graydon Hoare
4a3edb320d
Store items and decls in vecs to preserve input order, index externally. Implement block-local name lookup.
2010-10-18 18:19:16 -07:00
Graydon Hoare
865bbae685
More work on resolving names in rustc. Basic expr_name lookup working on items and args.
2010-10-18 16:15:25 -07:00
Graydon Hoare
f747101b7c
Rewrite session formatting to use #fmt extension.
2010-10-18 16:03:22 -07:00
Graydon Hoare
67d4427345
Begin sketching name lookup in rustc.
2010-10-18 14:37:30 -07:00
Graydon Hoare
05e7374e29
Expand rustc's fold to update env on block boundaries.
2010-10-18 14:36:40 -07:00
Patrick Walton
1c3e95e0a5
Roll back the expr->lval change. We're now LL(1) again.
2010-10-18 11:31:31 -07:00
Graydon Hoare
57c7e94c8f
Encode and decode tag types in dwarf properly. Add list module to std. Shift rustc to use std.util.option. Fix various dependent bugs. Closes #73 .
2010-10-15 22:09:09 -07:00
Graydon Hoare
fc2d4828e7
Finish the fold drivers in fold.rs.
2010-10-14 18:14:09 -07:00
Patrick Walton
5826a2e3de
rustc: Parse field and vector indexing expressions
2010-10-14 17:42:06 -07:00
Graydon Hoare
ff4e9f9141
Enable resolve pass in rustc. Doesn't do much yet aside from an incomplete identity fold, but no longer crashes.
2010-10-14 15:53:28 -07:00
Graydon Hoare
6993346e7d
Stop using bound refs (don't work; leak) and work around auto-deref vec-append bug.
2010-10-14 15:52:42 -07:00
Patrick Walton
699ef987d7
rustc: Start work on lvals
2010-10-14 15:20:27 -07:00
Patrick Walton
5c622b6ecb
rustc: Lex identifiers that have numbers in them too
2010-10-13 11:02:56 -07:00
Patrick Walton
d50d481529
rustc: Parse vector types
2010-10-13 10:55:20 -07:00
Patrick Walton
81a43ef698
rustc: Add mutability to tuple literals
2010-10-12 16:30:44 -07:00
Patrick Walton
b1ca4da3b3
rustc: Parse box types
2010-10-12 14:54:49 -07:00
Patrick Walton
a41aa5595b
rustc: Parse tuple types
2010-10-12 14:15:59 -07:00
Patrick Walton
0415841504
rustc: Add the tuple type to the AST
2010-10-11 18:42:10 -07:00
Patrick Walton
c9afe78c0c
Parse autos
2010-10-11 18:20:25 -07:00
Patrick Walton
8a7a0308e3
rustc: Parse lets
2010-10-11 18:13:14 -07:00
Patrick Walton
a2c9879442
rustc: Say "expected expression" instead of "expected literal" when we expect an expression
2010-10-11 17:21:36 -07:00
Patrick Walton
e3758fe321
rustc: Make functions output a type, not a slot
2010-10-08 12:26:34 -07:00
Graydon Hoare
785d9b1594
Add a little code to resolve, to check that the fold interface works.
2010-10-07 18:34:22 -07:00
Graydon Hoare
b184be07e1
Revise folds to be much-less-polymorphic after some discussion; flesh out stmt and expr fold drivers.
2010-10-07 16:42:48 -07:00
Graydon Hoare
fa5ef4cfb6
Add the beginnings of an ast folder plus an empty module for resolve.
2010-10-06 18:36:28 -07:00
Graydon Hoare
5f2d35ed08
Make ast node box uses more uniform in rustc.
2010-10-06 15:41:14 -07:00
Graydon Hoare
d1e59d6910
Add input coordinate tracking to all major rustc ast nodes.
2010-10-05 18:21:44 -07:00
Graydon Hoare
19d0fa107a
Improve name nodes to ast, teach to parse qualified names, put out flaming tinderbox.
2010-10-04 17:25:52 -07:00
Graydon Hoare
44e4b2d63a
Teach rustc about phi nodes, block relationships. Translate if- and block-expressions.
2010-10-04 15:55:12 -07:00
Graydon Hoare
a87e81b929
Support refcount-drop and conditional free in rustc.
2010-10-01 18:25:42 -07:00
Graydon Hoare
2e0d075407
Fix bug in bind thunks failing top drop unbound args; add test and adjust rustc to use bind again.
2010-09-30 17:39:37 -07:00
Graydon Hoare
b970563fe3
Patchwork of attempted fixes to effect system and gc system; eventually give up and disable it entirely in the runtime. Will need extensive reworking.
2010-09-29 17:22:13 -07:00
Graydon Hoare
f13306e8d6
Switch boolean operands to 1-bit, as llvm prefers. Will promote to 8-bit when storing to memory.
2010-09-28 16:17:28 -07:00
Graydon Hoare
5a4cb3ef36
Translate a modest selection of easy binops.
2010-09-28 14:01:21 -07:00
Graydon Hoare
11e72fd4e0
Translate literal int, char, bool and str types, as well as logging them.
2010-09-28 12:23:40 -07:00
Graydon Hoare
fbea4d04b7
More rustc expr-parsing logic.
2010-09-28 10:30:34 -07:00
Graydon Hoare
5b4b035c7a
Start building up the expression tower.
2010-09-27 18:25:02 -07:00
Graydon Hoare
f5787ed80c
Translate exit-task glue such that rustc's output programs exit properly.
2010-09-27 15:38:34 -07:00
Graydon Hoare
a2f4d9089a
Fix indexing bug in rustc's indirect-upcall arg-copying loops.
2010-09-27 14:42:58 -07:00
Graydon Hoare
d31eca41d5
First linkable and executable translation from rustc. Upcalls to log, passes wrong arg, crashes. Baby steps.
2010-09-27 13:43:53 -07:00
Graydon Hoare
d53209c927
Construct the crate constant in rustc.
2010-09-24 16:41:01 -07:00
Graydon Hoare
b69a0c137c
Modify the task type to not contain any opaques; apparently these make LLVM cross.
2010-09-24 15:22:48 -07:00
Graydon Hoare
4cfc4250bf
More work on trans, almost getting to the point of emitting an upcall.
2010-09-24 14:56:04 -07:00
Graydon Hoare
6b412be619
Wrap long line.
2010-09-23 18:42:49 -07:00
Graydon Hoare
274128c6b2
Add trans.get_upcall and skeleton for trans_log.
2010-09-23 18:38:37 -07:00
Graydon Hoare
730439c508
Improve LLVM builder wrapper-object.
2010-09-23 18:38:09 -07:00
Graydon Hoare
2db1f864e2
Declare the global and upcall glues as ValueRefs in rustc's trans.
2010-09-23 17:16:34 -07:00
Graydon Hoare
46e46d0b49
Translate a bunch of the material (lltrans, llasm, abi) from rustboot to rustc, and move files around.
2010-09-23 15:46:31 -07:00
Graydon Hoare
2c514f33f2
More fleshing-out on rustc.me.trans. Emitting modules and fns corresponding to parsed input now.
2010-09-23 13:15:51 -07:00
Graydon Hoare
04a55df54b
Flesh out rustc.me.trans to construct functions, basic blocks and builders off the AST.
2010-09-22 17:05:38 -07:00
Graydon Hoare
738fe078a4
Move llvm-using code in rustc to trans module.
2010-09-22 15:27:40 -07:00
Graydon Hoare
1f0621d04e
Begin teaching rustc to parse literals, atoms, stmts, blocks, items, modules, crates.
2010-09-21 16:22:32 -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
72cc89c8c3
Add QUES to comp/fe/lexer.rs, rustc can self-lex again.
2010-09-21 08:30:06 -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
Graydon Hoare
7287d3aaa0
Teach front-end about simple, first-cut version of const items.
2010-09-14 10:52:32 -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
Graydon Hoare
eb90be7798
Add session, span tracking, error reporting, beginning of a function to parse an item to rustc.
2010-09-01 13:24:14 -07:00
Graydon Hoare
cfca901cfe
Add block-comment support, various additional operators. Rustc can lex itself now.
2010-08-31 13:29:08 -07:00
Graydon Hoare
11e747fc58
Er, this would be the hunk that actually failed to get committed last time.
2010-08-31 12:54:24 -07:00
Graydon Hoare
2f3201a64c
Reinstate commit 9f0eaa6581
with sufficient fixes to hopefully not break tinderboxes.
2010-08-31 12:42:24 -07:00
Patrick Walton
6ec8c21016
Revert "More work on lexer.rs: start using keyword hashtable, handle more lexemes." due to tinderbox bustage
...
This reverts commit 9f0eaa6581
.
2010-08-27 17:29:56 -07:00
Graydon Hoare
9f0eaa6581
More work on lexer.rs: start using keyword hashtable, handle more lexemes.
2010-08-27 16:35:50 -07:00
Roy Frostig
6f52ba7cc5
Whitespace shuffle in rustc's lexer to fit 78-column rule and put out burning tinderbox.
2010-08-27 13:36:18 -07:00
Graydon Hoare
1428b59a19
Modify rustboot to use lexer.reader.
2010-08-27 13:08:47 -07:00
Graydon Hoare
07d355d1af
Add lexer.reader to rustc for tracking position, char conversion, holding keyword tables.
2010-08-24 09:59:41 -07:00
Graydon Hoare
ca3ca041f3
Add very basic char / str literal handling to rustc lexer.
2010-08-24 08:56:42 -07:00
Graydon Hoare
df3ea680ea
Tidy lexer.
2010-08-24 08:50:56 -07:00
Graydon Hoare
2745a5ebb2
Handle line-comments and a few more symbols in rustc lexer.
2010-08-23 19:17:04 -07:00
Graydon Hoare
c0e173e19a
Stringify op tokens.
2010-08-20 15:57:59 -07:00
Graydon Hoare
db377bae3a
Accumulate number tokens properly, handle newline, EQ and EQEQ in rustc lexer.
2010-08-20 15:36:48 -07:00
Patrick Walton
08f191d6d9
Lex commas too in the self-hosted compiler
2010-08-20 14:58:15 -07:00
Patrick Walton
fc05ea0371
Use pattern matching for the one-byte structural symbols in the self-hosted compiler
2010-08-20 14:35:59 -07:00
Graydon Hoare
eecd1f47d7
Fix some lexer bugs in rustc. Beginning to lex stuff now.
2010-08-20 12:12:37 -07:00
Graydon Hoare
0f224f977d
Expand rustc lexer to do almost-nearly-nontrivial stuff.
2010-08-20 11:42:44 -07:00
Graydon Hoare
9363c1ab7f
Use str += u8 in rustc lexer.
2010-08-20 10:03:31 -07:00
Graydon Hoare
40fccac7fb
Add some code to lexer in rustc.
2010-08-19 18:42:32 -07:00
Graydon Hoare
4727532e95
Simplify lexer/parser structure to use stdio_reader.
2010-08-18 15:41:24 -07:00
Graydon Hoare
51412cb5fa
Add do-nothing obj type for lexer to rustc.
2010-08-18 11:35:34 -07:00
Graydon Hoare
a1b57e69cd
Add mod token to rustc.
2010-08-18 11:35:12 -07:00
Graydon Hoare
49f668dff3
Add mod common to rustc.
2010-08-18 11:34:47 -07:00
Graydon Hoare
b5ad78f316
Change indent on rustc.rc.
2010-08-18 11:34:22 -07:00
Graydon Hoare
102ec16877
Flesh out the ast module in rustc a little.
2010-08-18 09:00:10 -07:00
Graydon Hoare
9db70bfc42
Add test code that exercises LLVM in rustc. Works.
2010-08-18 00:19:45 -07:00
Graydon Hoare
3f2c39b3d8
Fix symbol names on LLVM C library binding and library-name for LLVM.
2010-08-18 00:19:25 -07:00
Graydon Hoare
7e62aa6801
Absent any deep overhauls to syntax or constant-handling, hack in the ability to project a cexp var binding to a token in the parser. Use it in comp/rustc.rc and comp/lib/llvm.rs.
2010-08-16 13:02:46 -07:00
Graydon Hoare
5267b77d3b
Add more LLVM library bindings to rustc.
2010-08-12 12:10:36 -07:00
Graydon Hoare
bc0d1fbae5
Add modelines and related emacs chatter to rustc.
2010-08-12 10:29:23 -07:00
Graydon Hoare
5297582ba2
Add mostly-empty AST module to rustc.
2010-08-12 10:27:50 -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
872f588ccb
Sketch some not-quite-compiling code into comp/fe/lexer.rs.
2010-07-14 09:41:36 -07:00
Graydon Hoare
1d1a7985a8
Add some (non-functional) input-readingn to rustc.rs.
2010-07-13 14:26:59 -07:00
Graydon Hoare
c3945da2e4
Add another pile of LLVM bindings.
2010-07-12 23:48:44 -07:00
Graydon Hoare
cd0c9dd4fb
Start bringing in LLVM bindings.
2010-07-12 17:47:40 -07:00
Graydon Hoare
3f354b24dc
Clean out rustc so it doesn't give the false impression of doing anything yet.
2010-07-08 10:45:34 -07:00
Graydon Hoare
d6b7c96c3e
Populate tree.
2010-06-23 21:03:09 -07:00