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
4dc98e54d1
Make the ugly detailed leak-spray on rustc failures optional.
2010-11-30 17:10:51 -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
Patrick Walton
c20ea9e60a
rustc: Un-XFAIL compile-fail/arg-type-mismatch.rs.
2010-11-22 17:56:45 -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
Patrick Walton
c410d68529
rustboot: Say when a binary operator is unimplemented rather than asserting in trans
2010-11-19 17:41:44 -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
d311719a75
Enable more now-passing tests for rustc (including function calls).
2010-11-19 11:04:10 -08:00
Graydon Hoare
6cecc93e8d
Disable LLVM backend in rustboot; more trouble than it's worth at this point.
2010-11-19 10:45:24 -08:00
Graydon Hoare
e94af48bc9
Work around Yet Another Typestate Lifecycle Bug in rustboot.
2010-11-19 10:41:32 -08:00
Patrick Walton
77ff12c435
rustboot: Don't use walk to traverse statements in type.ml; fixes redundant checking, improves diagnostics. Also report untyped slots.
2010-11-18 14:19:06 -08:00
Graydon Hoare
26ecec4e12
Update frame logic to be compatible with SysV x86 ABI. Improves diagnostics.
2010-11-16 13:51: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
Graydon Hoare
fce535c04a
Change PVAL_num to PVAL_int and remove non-int literal forms.
2010-11-13 22:39:41 -08:00
Graydon Hoare
ae570016a4
Remove dead code in cexp.
2010-11-13 22:34:48 -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
Patrick Walton
3e482d5f69
Implement a map2() function in std._vec
2010-11-09 15:38:42 -08:00
Graydon Hoare
89946609f2
Support a special const-value refcount, use it for const strings.
2010-11-09 14:15:07 -08:00
Graydon Hoare
3e9be14757
Add a check for binding an alias. Good thing, as we had two instances in our library.
2010-11-08 15:45:30 -08:00
Graydon Hoare
c5720b2fc4
Fix linux burn caused by last commit on friday.
2010-11-08 13:36:03 -08:00
Graydon Hoare
049072db82
Update lltrans to also emit WinMain@16 on windows.
2010-11-05 18:45:06 -07: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
de166745b8
rustboot: Report the alias-ness of function parameters in type errors
2010-11-05 18:27:34 -07:00
Patrick Walton
79015e2d59
rustboot: If something that wasn't a type was found where a type was expected, report where the error was
2010-11-05 17:31:35 -07:00
Patrick Walton
35eb088ae3
rustc: Implement function types
2010-11-05 15:23:03 -07:00
Patrick Walton
91b1885ba2
rustboot: Report mismatched effect qualifiers
2010-11-05 13:44:37 -07:00
Patrick Walton
199ff196aa
test_init_fn() in lib-vec.rs doesn't seem to segfault anymore. Un-XFAIL it.
2010-11-05 11:25:23 -07:00
Patrick Walton
adb1754e4d
Move the option type to its own module
2010-11-05 11:18:40 -07:00
Patrick Walton
e399926776
rustboot: Report cyclic import errors at the right location
2010-11-05 11:02:17 -07:00
Patrick Walton
2fcf81cc4b
Revert "Move the option type to its own module"
2010-11-05 10:41:23 -07:00
Patrick Walton
a58016d43e
rustboot: Describe the cycle when reporting a cyclic import error
2010-11-05 10:37:32 -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
896570a3a9
rustboot: When resolving recursively, build up error messages recursively as well
2010-11-03 19:15:16 -07:00
Patrick Walton
db955d33b7
rustboot: Say exactly which name was unbound when reporting unbound name errors
2010-11-03 18:42:35 -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
1e22a55ff2
Code sketch and comment notes on textual crate signatures.
2010-11-03 09:50:25 -07:00
Graydon Hoare
7abf6eb7c6
Shift obj, type, param decls to have strata rather than effects.
2010-11-02 17:20:57 -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
Patrick Walton
ccd62969c1
Un-XFAIL self tests on Darwin
2010-10-28 16:07:54 -07:00
Patrick Walton
c2480a3d60
Remove debug print message from the makefile
2010-10-28 16:06:04 -07:00
Patrick Walton
7303b8e115
Allow just the bootstrap LLVM backend to be disabled with NO_OCAML_LLVM=1
2010-10-28 16:03:45 -07:00
Patrick Walton
67bcc70754
rustboot: Emit an error instead of asserting in trans when a T is passed by value
2010-10-28 15:07:05 -07:00
Patrick Walton
b914e0e74c
Revert "rustboot: Emit an error instead of asserting in trans when a T is passed by value" due to test failures
...
This reverts commit ee901858a2
.
2010-10-28 15:04:48 -07:00
Patrick Walton
ee901858a2
rustboot: Emit an error instead of asserting in trans when a T is passed by value
2010-10-28 15:02:00 -07:00
Ralph Giles
3b3cd550d4
Cast NULL to uintptr_t when calling rust_task::start().
...
On gcc 4.5.1 (fedora 14 i686) rust_test_runtime.cpp fails to compile
with the following error:
rt/test/rust_test_runtime.cpp:57:61: error: passing NULL to non-pointer argument 3 of ‘void rust_task::start(uintptr_t, uintptr_t, uintptr_t, size_t)’
The explicit cast works around the error.
2010-10-28 10:13:30 -07:00
Patrick Walton
679dca8541
Emit a sensible error message if one or more of the parameters isn't enough context to instantiate a polymorphic function
2010-10-27 15:06:19 -07:00
Patrick Walton
b3c4c1426a
rustboot: Emit an error message instead of asserting on a type-param mismatch in tag constructors in patterns
2010-10-27 11:29:19 -07:00
Patrick Walton
3d0da75455
rustboot: For error reporting, map tag IDs to *tag* names, not to tag *variant* names
2010-10-26 15:37:49 -07:00
Patrick Walton
7e3c662b4f
rustboot: Use a less hacky method to report tag names in error messages, which works for resolve errors as well
2010-10-26 14:52:31 -07:00
Patrick Walton
7ed8b781d5
Thread a source location though for type error reporting instead of the awful "List.hd scopes" hack
2010-10-25 18:16:34 -07:00
Patrick Walton
af39e222bc
Merge commit '1875a36feecb7dab183a59ead2d0a342f733422e'
2010-10-25 17:58:41 -07:00
Patrick Walton
1875a36fee
Prevent Not_found in the unfortunate case when we have to "friendly_stringify" a tag type we haven't yet recorded into cx.ctxt_all_tag_info
2010-10-25 17:58:24 -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
a0867e0ccf
More fire-fighting.
2010-10-22 17:54:27 -07:00
Graydon Hoare
e5229b97d7
Don't use string == in x86.rs, doesn't work.
2010-10-22 17:27:22 -07:00
Graydon Hoare
cb254f3558
Merge branch 'master' of github.com:graydon/rust
2010-10-22 17:24:05 -07:00
Graydon Hoare
bd9a8fd57b
Attempt to extinguish burning tree.
2010-10-22 17:23:53 -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
Patrick Walton
fc8b5155a8
rustboot: If the user tries to instantiate a non-parametric type with type parameters, report the location of the error
2010-10-22 15:12:48 -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
76dc0ae995
Match llvm xfails inside-out, to make life a little less painful.
2010-10-22 13:43:25 -07:00
Graydon Hoare
25263c9576
Make test targets in Makefile end in -boot.x86 or -boot.llvm when made by rustboot.
2010-10-22 12:12:01 -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
dd0d255737
Add some filename helpers to os.
2010-10-22 11:46:33 -07:00
Graydon Hoare
05c9d885dd
Change vec slice to use uint, add push/pop/shift/unshift.
2010-10-22 11:46:04 -07:00
Graydon Hoare
3f80e79efc
Add support for passing args to fns in rustc.
2010-10-21 18:13:57 -07:00