Graydon Hoare
c9d2eceb45
Teach resolve about linear for loops.
2011-01-20 15:17:26 -08:00
Graydon Hoare
a8af013077
Adjust AST encoding, teach fold about linear for loops.
2011-01-20 15:02:12 -08:00
Rafael Ávila de Espíndola
7fdb6437d8
typo
2011-01-20 16:20:45 -05:00
Graydon Hoare
33b342e891
Teach ast and parser about linear for expressions.
2011-01-20 13:11:47 -08:00
Graydon Hoare
9d3ebd6a57
Implement dynamic GEP enough to permit expr_field to work on tup(T,T,T).
2011-01-19 16:29:14 -08:00
Rafael Ávila de Espíndola
35d53b7eb1
Look at the type params of an item_ty when resolving.
2011-01-19 16:13:33 -05:00
Rafael Ávila de Espíndola
d313e1579b
Fold function output and argument types. With this change we fail to compile
...
type lteq[T] = fn(&T a) -> bool;
with "unresolved name: T". Before we would silently get to the type checker
and assert in a unresolved ty_path.
2011-01-19 15:02:56 -05:00
Graydon Hoare
a0aedd14c7
Twiddle comment.
2011-01-18 17:19:04 -08:00
Graydon Hoare
9cc00d5f6c
Fix bug (I think) when unifying ty_local and ty_param.
2011-01-18 17:18:51 -08:00
Rafael Ávila de Espíndola
41b7d6d74d
One last refactoring of the import handling:
...
* Create an import resolving stage. Currently this involves a copy of the ast,
we can probably revisit this once we revisit doing full copies of the ast in
general.
* Don't repeat work. Once we resolve a import, put it on a hash table and use
it next time we are asked for it. This solves a O(n^2) behaviour in
degenerated cases.
* Once import resolution is done, the target of an import is stored on the
import itself.
2011-01-18 15:43:13 -08:00
Graydon Hoare
e92298187b
Add bzero glue and preliminary code for dynamic size/align calculations.
2011-01-18 15:38:35 -08:00
Graydon Hoare
3a920e7ca8
Fix missing case in ty.
2011-01-17 17:24:47 -08:00
Graydon Hoare
bc21965c98
Use homebrew memcpy, not llvm intrinsic. Can't run the latter on a rust stack.
2011-01-17 17:24:33 -08:00
Graydon Hoare
58bf592dcc
Fix a couple bugs in parametric returns.
2011-01-17 15:54:52 -08:00
Graydon Hoare
5f591c3767
Allocate and reload retslots. Copy into them on polymorphic returns.
2011-01-17 15:22:45 -08:00
Rafael Ávila de Espíndola
9f3caed8a0
Enable more tests.
2011-01-17 18:13:55 -05:00
Graydon Hoare
a8be673a9c
Whitespace cleanup.
2011-01-17 14:35:57 -08:00
Rafael Ávila de Espíndola
58490d7fa0
Fix the last known (to me) bug in import resolution. We were not properly
...
dropping the inner part of the environment when an intermediate item resolved
in an outer scope.
2011-01-17 13:33:13 -08:00
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