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
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
Ralph Giles
eec259f625
Fix a typo in the previous commit.
...
(cherry picked from commit 11d2af72cf956cc28549cfd280ba40de1645eee7)
2010-10-21 16:06:47 -07:00
Ralph Giles
6b9a9a7874
Check the llvm version against a fixed list.
...
This change is thanks to Peter Hull, who independently resolved
the 2.8 vs 2.8svn issue this way. His patch checked the version
string against a fixed set of options, which is easier to read
and simpler to adjust in the future.
(cherry picked from commit 83cc297561a78ad13fcd1c2943f17ace81c725b8)
2010-10-21 16:06:39 -07:00
Ralph Giles
c3879c19c2
Also search the bare ocaml standard library path for llvm bindings.
...
Ubuntu ships the llvm bindings in /usr/lib/ocaml/llvm/ but Fedora
is installing them directly in /usr/lib/ocaml so we need to check
there as well.
The patch is untested; Fedora 14, the current beta, includes llvm 2.7.
It does add an unnecessary -I directive, but should at least have a
better chance of working on Fedora 15.
(cherry picked from commit 8af7360bd3de851668a133ae6ba4419e3722c6aa)
2010-10-21 16:06:21 -07:00
Ralph Giles
45056fc022
Update llvm version detection for the 2.8 release.
...
The LLVM project recently released version 2.8, and updated
the SVN tree version to 2.9svn, obsoleting the simple check
for 'llvm-config --version' returning 2.8svn.
With this commit we instead check for the substrings 2.8 and 2.9
in the output of 'llvm-config --version', since we (currently)
support both the svn and released varieties of those versions.
A stable release also complicates our check for the ocaml bindings.
Previously we looked in `llvm-config --libdir`/ocaml which is
appropriate for local compiles, but distribution packagers are
likely to put the bindings in the default search path, e.g.
/usr/lib/ocaml/llvm. We now fall back to trying variations on
the standard library path returned by 'ocamlc -config' if we
don't find it under 'llvm-config --libdir'.
With this change, rust builds against LLVM 2.8 as packaged
in Ubuntu 10.10 as well as LLVM 2.9svn compiled locally.
(cherry picked from commit b606b65756f087c403180abd5418fe7dce469758)
2010-10-21 16:06:15 -07:00
Graydon Hoare
a7599a7968
De-burninate tree.
2010-10-21 15:02:05 -07:00
Dave Herman
6421c13157
eliminated bitv.test, which now lives in test/run-pass
2010-10-21 13:34:16 -07:00
Dave Herman
dbe27199b8
line length police; moved comp.util.bits to std.bitv
2010-10-21 11:39:53 -07:00
Patrick Walton
194f38fdff
rustboot: Don't use ridiculous type names when describing simple types like int and uint
2010-10-21 11:31:04 -07:00
Patrick Walton
a7840f02b0
Use "friendly" type names when reporting a "mismatched type-params" error
2010-10-21 11:14:38 -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
Patrick Walton
9a539a5dd1
Move the "friendly" type printer to semant
2010-10-20 17:58:55 -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
Patrick Walton
11deb2f5f1
Eliminate <tag#> stuff from the "friendly" type errors
2010-10-20 15:36:30 -07:00
Patrick Walton
4bb675ba42
Print better error messages when the number of type params is wrong
2010-10-20 11:22:44 -07:00
Patrick Walton
28d43678b6
Add a virtual destructor to rust_thread in sync.h, to quiet the compiler
2010-10-20 10:32:36 -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
23a00fd092
Disable use of parametric tail call in map.rs, they don't presently work.
2010-10-18 16:04:47 -07:00
Graydon Hoare
f747101b7c
Rewrite session formatting to use #fmt extension.
2010-10-18 16:03:22 -07:00
Graydon Hoare
68321b0de8
Make list.find return an option of different type than the list element.
2010-10-18 16:02:59 -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
Graydon Hoare
7801ba9dfe
Make type errors in rustboot report the friendly type of both expected and actual.
2010-10-18 14:36:17 -07:00
Graydon Hoare
783be711f5
Flesh out the std.list module a touch.
2010-10-18 14:35:44 -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
Graydon Hoare
5a51716790
Fix mem += mem bug in vec-append.
2010-10-14 15:51:54 -07:00
Graydon Hoare
09b12d167f
Fix typos in Type.friendly_stringify.
2010-10-14 15:27:50 -07:00
Patrick Walton
699ef987d7
rustc: Start work on lvals
2010-10-14 15:20:27 -07:00
Patrick Walton
c7ab80f743
Typecheck tags in "alt" patterns
2010-10-14 15:08:19 -07:00
Graydon Hoare
f234750d80
Fix crasher in rustc.
2010-10-14 12:41:48 -07:00
Graydon Hoare
668f3a90a8
Move the friendly-names table to semant, reuse it in the name mangler.
2010-10-13 17:15:25 -07:00
Graydon Hoare
52c2a1549c
Fetch typarams from the outermost item frame, when inside an iter-block. One less crash in rustc.
2010-10-13 15:53:38 -07:00
Patrick Walton
1e19fc969e
Use "friendly" types throughout the typechecker
2010-10-13 15:34:18 -07:00
Patrick Walton
45a61b5191
Don't run tidy inside etc/. Should put out the burning tinderbox.
2010-10-13 15:21:42 -07:00
Patrick Walton
e129a9b4ce
Use the user-defined type aliases when reporting type errors
2010-10-13 15:14:04 -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
b7e6d9895e
First stab at a Vim syntax highlighter for Rust
2010-10-13 10:43:19 -07:00
Graydon Hoare
69ae63d4b0
Fix horribly embarassing signedness bug in backend, plus related regressions.
2010-10-12 16:51:27 -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
Graydon Hoare
beb4c07e26
Git index wins again.
2010-10-12 12:28:46 -07:00
Graydon Hoare
76f7b043bc
Changes to make rustboot compile on OCaml 3.12
2010-10-12 12:16:35 -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
5177898db1
Use new and delete instead of alloca(). Should put out the burning tinderbox.
2010-10-11 17:11:59 -07:00
Patrick Walton
94cec74096
Try to print backtraces on failure
2010-10-11 16:40:18 -07:00
Patrick Walton
99086292ac
Bind labels explicitly in fe/cexp.ml. Should fix issue #169 .
2010-10-11 10:51:57 -07:00
Graydon Hoare
594cf63214
Remove obsolete comment, issue was fixed with last checkin.
2010-10-10 00:17:41 -07:00
Graydon Hoare
caaf8679d8
Teach bind to actually bind typarams, as it claims to.
2010-10-10 00:14:26 -07:00
Graydon Hoare
9fc963842d
Subject copying code to inline heuristic, cut 30kb from rustc.
2010-10-09 01:35:50 -07:00
Graydon Hoare
a441865f6e
Actually do what I meant to in the inline threshold. Don't drink and code. Cut rustc by 50kb.
2010-10-09 01:02:13 -07:00
Graydon Hoare
967a6f861d
Elide mark and sever glue in -minimal mode.
2010-10-09 00:47:02 -07:00
Graydon Hoare
3e513008b1
More type-fold caches, shave another second off compile time.
2010-10-09 00:31:26 -07:00
Graydon Hoare
f956067867
Implement a -minimal mode prologue, cut 100kb from rustc.
2010-10-08 23:58:48 -07:00
Graydon Hoare
39f51b31df
Quad counters are revealing. Move drops out-of-line, cut 200kb from rustc.
2010-10-08 23:32:18 -07:00
Graydon Hoare
ef5a64e2cf
Add quad-counting system.
2010-10-08 23:25:37 -07:00
Graydon Hoare
71c266f937
Fix logging bug.
2010-10-08 23:17:29 -07:00
Graydon Hoare
81e791d7b9
Add a tag cache for the cases we can't avoid hitting fold; cut rustc compile time by 50%.
2010-10-08 17:43:46 -07:00
Graydon Hoare
97a6b0935b
More fold caches, cut rustc compile time by 60% again.
2010-10-08 15:56:17 -07:00
Graydon Hoare
f1e2c379cb
Cache referent-type calculations in rustboot; cut rustc compile time by 60%.
2010-10-08 15:17:27 -07:00
Graydon Hoare
5f2459145c
Add -lpath mechanism for logging only a subset of a pass (by module-path prefix)
2010-10-08 14:54:51 -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
facc5f8826
Make minimal-mode slightly less aggressive.
2010-10-07 18:21:06 -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
e553ab9fc0
Simplify type-mismatch messages.
2010-10-07 13:15:38 -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
8ecbe49a8f
Add -minimal mode to rustboot that skips emitting code that's broken or unneeded for rustc. Shrink rustc by 300kb. Back under 1mb.
2010-10-05 18:44:39 -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
4168c1dcda
Add -lpasses for logging just the progress of passes.
2010-10-05 18:10:33 -07:00
Graydon Hoare
cdf67b1f2e
Better backpointer logic.
2010-10-05 18:09:49 -07:00
Patrick Walton
246e72b0fb
Use RTLD_GLOBAL when loading libraries. This is needed to get LLVM working on the Mac in rustc.
2010-10-05 11:37:46 -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
d07f7533b0
Sketch out #fmt syntax extension in rustboot.
2010-10-01 14:54:40 -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
62c224ffe4
Drop slots on block exits even when blocks have no statements. Part way to fixing bind leakage in rustc.
2010-09-30 16:10:30 -07:00
Peter Hull
f6e3e6903b
Initial check-in of 99 Bottles Of Beer
...
using different methods (simple, iterator, tail-call, pattern match)
2010-09-30 13:50:25 -07:00
Or Brostovski
4a3404803b
implemented break for while-loop case
...
ast.ml - added break and cont statements
item.ml - added break and cont statements
lexer.mll - added break and cont statements
token.ml - added break and cont statements
trans.ml - implemented the break statement for the while-loop case
- replaced hash table accesses with get_stmt_depth where needed
type.ml = added break and cont statements
typestate.ml - implemented the break statement for the while-loop case
- added shorthand filter_live_block_slots
walk.ml - added break and cont statements
while-with-break.rs - code for testing while loops
2010-09-30 13:45:57 -07:00
Or Brostovski
74cb9508cd
Closed issue 154 - prevents compiler from compiliing a line to zero statements
2010-09-30 13:40:34 -07:00
Graydon Hoare
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
Patrick Walton
7e733bf2ee
Allow tag recursion through vectors as well as boxes
2010-09-29 16:58:42 -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
bba4cae1b8
Resolve constant types through to their definitions.
2010-09-23 17:11:30 -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
4d17283371
Add 'items' iter to hashmap.
2010-09-22 17:04:08 -07:00
Graydon Hoare
2880ecd73f
Reformat standard library; no code changes.
2010-09-22 15:44:13 -07:00
Graydon Hoare
738fe078a4
Move llvm-using code in rustc to trans module.
2010-09-22 15:27:40 -07:00
Graydon Hoare
e0f682e5fb
Add some basic string functions: index, rindes, find, substr, split, concat, connect.
2010-09-22 15:27:40 -07:00
Graydon Hoare
fc6f307787
Fix linear for loops on strings to not hit trailing null.
2010-09-22 15:27:35 -07:00
Graydon Hoare
913882de7f
Make deps via temps, to avoid syntax errors wedging deps.
2010-09-22 15:27:24 -07:00
Graydon Hoare
264c765931
Revert "Make recursive type verification logic better by allowing it to see through multiple levels of indirection. Still can trigger "unexpected OpaqueTy" bugs, but that's better than infinite loops."
...
This reverts commit 751a47cc5a
.
Broken build.
2010-09-22 10:57:58 -07:00
Patrick Walton
751a47cc5a
Make recursive type verification logic better by allowing it to see through multiple levels of indirection. Still can trigger "unexpected OpaqueTy" bugs, but that's better than infinite loops.
2010-09-21 19:15:47 -07:00
Patrick Walton
742b1c5793
Report an error instead of asserting when an item name is already in use
2010-09-21 17:38:47 -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
8beb118df4
Add insn-selection fixup-name logging.
2010-09-21 16:21:30 -07:00
Graydon Hoare
b549721a2e
Tighten pattern parsing on 0-ary constructors.
2010-09-21 16:18:47 -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
28b9357a0c
Kill residual dead code in Trans.iter_tag_parts. Shaves a couple kb off rustc.
2010-09-21 08:28:19 -07:00
Graydon Hoare
71d49a20a7
Skip 0-ary tag ctors in Trans.iter_tag_parts. Rustc loses 150kb.
2010-09-21 00:13:59 -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
acdec30149
Wrap long lines.
2010-09-20 20:46:44 -07:00
Graydon Hoare
c17964c06d
Use name_base in plval base.
2010-09-20 20:19:22 -07:00
Roy Frostig
dda16f807c
Add issue #163 testcase to str-append testcase.
2010-09-20 17:42:14 -07:00
Roy Frostig
3c3421e01d
When translating vec-append, delay destination string's null-byte-accounting length decrement until the destination string has already been resized. Closes #163 .
2010-09-20 17:26:24 -07:00
Graydon Hoare
7ab3b305e4
Move id counters into sess in preparation for moving desugaring to middle-end.
2010-09-20 13:06:49 -07:00
Graydon Hoare
5536af3d48
Beginnings of post-resolve simplify pass.
2010-09-16 16:59:37 -07:00
Patrick Walton
bc03c82c79
Check for infinitely sized tags. Un-XFAIL test/compile-fail/infinite-tag-type-recursion.rs.
2010-09-16 16:24:19 -07:00
Patrick Walton
659d1e1b7d
Actually build the graph properly. Oops.
2010-09-16 16:20:00 -07:00
Patrick Walton
32103089d3
Create tag nodes for all the tags beforehand
2010-09-16 15:38:49 -07:00
Graydon Hoare
9dac49bcd6
Resolve plvals to their defns.
2010-09-16 15:04:40 -07:00
Patrick Walton
d92e30d773
Populate the tag containment relation
2010-09-16 14:21:24 -07:00
Graydon Hoare
c4c73e09f1
Add a pexp-rebuild phase to the type resolution pass in resolve.ml.
2010-09-16 12:34:07 -07:00
Patrick Walton
01a76e21a6
Better representation of tag containment, which will allow us to discern backreferences
2010-09-16 11:28:55 -07:00
Patrick Walton
a4a8bea3cc
Add ctxt_tag_containment to the Semant context
2010-09-16 11:06:41 -07:00
Patrick Walton
1676a389be
Switch the "expected" and "actual" types for function parameter mismatches
2010-09-16 10:26:20 -07:00
Patrick Walton
09793dd0c8
Not finding a name in a module isn't a bug, it's an error. Report it as such.
2010-09-16 10:26:19 -07:00
Michael Bebenita
1bd331b7aa
Fixed deadlock caused by the message pump not being notified of new message sends.
2010-09-16 00:51:03 -07:00
Graydon Hoare
91b4a0c9f8
Add beginnings of a fuzzer to rustboot.
2010-09-16 00:26:19 -07:00