Commit Graph

4168 Commits

Author SHA1 Message Date
Robby Findler
dfad46cd7a added blame context information to vector/c and vectorof contracts 2012-05-13 08:38:57 -05:00
Robby Findler
2eb3264b44 added a test to make sure struct/dc signals an error when getting an impersonator
contract on an immutable field that has no dependencies
2012-05-12 22:09:09 -05:00
Matthew Flatt
d836cba7c9 refine lexical scope for syntax objects from different modules
For example, if definitions have two unmarked `x's that originate
from different modules, make them correspond to different bindings.

This improvement will be used by `scribble/srcdoc', which will
rely on module context to connect `for-doc' requires to documentation
code that appears in the same module --- which is needed, for example,
if a macro expands to documentation code and the macro is used in
a different module.
2012-05-12 00:59:14 -06:00
Matthew Flatt
8fc3d25be4 cm: collect dependencies for submodules 2012-05-12 00:55:12 -06:00
Matthew Flatt
dbd940611e allow #f as shift for `syntax-shift-phase-level' 2012-05-12 00:55:12 -06:00
Robby Findler
698c895413 adjust struct/c so that it just expands into struct/dc 2012-05-11 22:07:52 -05:00
Eli Barzilay
7f940de6f9 Fix `array-set!' for arrays of more than 2 dimensions.
Closes PR 12765.
2012-05-11 06:18:21 -04:00
Robby Findler
9401a537e0 extend the opters to track if a contract has any negative blame
(this is similar to being flat, but struct contract (lazy ones) can
be non-flat and still have no negative blame).

Use this to optimize struct/dc contracts; specifically when a contract
has no negative blame, then we don't need to add additional wrapping
for indy-ness.

This ended up being fairly tricky to handle the case where there
are several mutually recursive define-opt/c functions. The code
tracks which definitions depend on which ones and does a graph traversal
of the dependencies to find if there is any non-negative blame
possible. Naturally, this uses Racket's macro system to communicate
between the definitions.
2012-05-10 21:59:39 -05:00
Matthew Flatt
2d027e7ee5 scribble/eval: add eval:result' and eval:results' 2012-05-09 19:11:21 -06:00
Ryan Culpepper
00fd18bc62 db: various fixes and additions
- fix connection-pool for nested tx, fix race condition
 - ensure connected? always nonblocking
 - added and reorganized some doc sections
 - added grouping, contracts to in-query
 - added rows->dict
2012-05-09 09:17:52 -06:00
Ryan Culpepper
902ba68dfb db: add servlet-based test 2012-05-09 09:17:52 -06:00
Ryan Culpepper
745607a51d added unstable/cat 2012-05-08 14:50:28 -06:00
Asumu Takikawa
a8994c7261 Revert "Add contract-add-context to contract system."
This reverts commit f3b687c8ed.

After discussion with Robby and Stevie, we concluded that
this procedure isn't necessary for now. If we ever think
of more examples where it's useful we can bring it back.
2012-05-08 12:58:49 -04:00
Vincent St-Amour
e786149434 More precise type for flexpt. 2012-05-08 11:42:21 -04:00
Matthew Flatt
9a41129c69 racket/flonum: add `flexpt' 2012-05-07 20:41:14 -06:00
Ryan Culpepper
0b8b0c36ef fix check-requires for submodules 2012-05-07 14:46:13 -06:00
Robby Findler
5996e8f480 finish up struct/dc 2012-05-07 10:36:44 -05:00
Robby Findler
64603d0c27 adjust the opter protocol so that opters can say either: "yes this is
a chaperone contract", "no it definitely isn't" or "evaluate this code
at runtime to find out"; previously only the first two options
were available to opters

(this commit also includes other tweaks here and there so won't stand alone)
2012-05-07 10:36:44 -05:00
Robby Findler
04017d83d5 start adding struct/dc contracts 2012-05-07 10:36:39 -05:00
Eli Barzilay
a4381dd1f6 Do the xref test only if "doc/reference/out.sxref" exists/
(Since the nightly build includes the documentation only on the main
machine.)
2012-05-07 09:12:00 -04:00
Eli Barzilay
17090fca4f A bunch of fprintf' -> eprintf' conversions (and a few related things). 2012-05-06 12:06:00 -04:00
Eli Barzilay
084f1dcea7 Use the new `wrap-line' in the scribble text renderer.
Looks like it's not making any changes in the current tests (which use
the text renderer), but with words that are longer than the width the
old version would stop wrapping afetr these words.  Added a test file
that fails with that and succeeds with the new one.  If anyone cares
about this, it's easy to make hyphenate words that are too long for a
line.

(Also fixed some redundant frustration in the bib test...)
2012-05-06 08:17:36 -04:00
Eli Barzilay
36394500e5 Streamline all scribble tests. 2012-05-06 05:53:19 -04:00
Eli Barzilay
d28b0c0806 Use `scribble/text/wrap' in xrepl.
(Also organize the tests a little.)
2012-05-06 05:38:04 -04:00
Eli Barzilay
3cb4552e32 Minor fixes to `tests/lazy'.
* Make each test file runnable using `module+'.

* Make the space tests not print anything (unless they fail, of course).

* Make the `first-class?' case even "more first class" by defining their
  and/or as functions.  (Doesn't make a real difference for this test,
  but nice to test more of the language.)
2012-05-06 05:38:04 -04:00
Eli Barzilay
4adc10b071 Fix test: use a new directory for the submodule tests 2012-05-06 05:38:04 -04:00
Eli Barzilay
89b9ad0dde New wrap-line' function in a new scribble/text/wrap' module.
This should probably become documented if it's stable enough.  For now
it's intended for building wrapping functions, so it's only documented
in comments the file.
2012-05-06 05:38:04 -04:00
MartyNeal
6e1ee717f7 Fixed `stream-add-between'.
Don't put an extra seperator element at the end of the stream.  Brings
it in-line with the list version (`add-between') and sequence
version (`sequence-add-between').  Includes a test.
2012-05-04 20:18:38 -04:00
Asumu Takikawa
61784877a0 Fix blame for behavioral subtyping.
- negative parties of interface contracts should be
    the interface itself
2012-05-04 17:24:55 -04:00
Stevie Strickland
14da5dacc5 Small fixes.
* Use #f instead of (lambda () #f) in hash-ref call
 * We want the positive blame, not negative, when interface-contracted
   methods are passing through a class/c application.
 * Use (interface <i>) and (class <c>) for interface and class blame.
2012-05-04 17:24:55 -04:00
Asumu Takikawa
670154bd2b First cut of working interface contracts.
- still need to fine-tune code (maybe avoid lists)
  - is the blame story correct?
  - weak hash table for new class copy
  - interaction with class/c
2012-05-04 17:24:55 -04:00
Asumu Takikawa
6f4ad1de25 Add contracts to interface syntax & structures 2012-05-04 17:24:55 -04:00
Asumu Takikawa
f3b687c8ed Add contract-add-context to contract system.
This procedure is used to add blame contexts to an
existing contract. This prevents the need to re-create
the contract in order to add blame contexts.
2012-05-04 02:52:46 -04:00
Matthew Flatt
4292c6e037 fix docs for `box-cas!', fix JITted version to check mutability 2012-05-03 21:38:36 -06:00
Matthew Flatt
19d474d045 fix some tests related to the make-color' and make-pen' addition 2012-05-03 19:22:58 -06:00
Matthew Flatt
0d88a08c48 implement branch mode JIT generation for `box-cas!'
Also, move slow path into common code
2012-05-03 19:22:46 -06:00
Aaron Turon
868dcb6d57 Add box-cas!' and unsafe-box*-cas!'.
These primitives atomically update a box to a new value, as long
as the current value is the same as a provided value.  They also
are future-safe.

When futures are enabled, they use low-level hardware instructions
to perform the change atomically.
2012-05-03 19:19:24 -06:00
Matthew Flatt
5ffb9389ac fix `raco setup' for splicing collections
Closes PR 12676
2012-05-03 11:11:38 -06:00
Vincent St-Amour
a2a60cb924 Fix TR test for new contract error message format. 2012-05-02 15:14:39 -04:00
Vincent St-Amour
a62444fa3e Optimize integers used as sequences. 2012-05-02 15:14:37 -04:00
Matthew Flatt
68e005fb2c racket/draw: make-immutable-{color,brush,pen} => make-{color,brush,pen}
Also, use keywords for `make-pen' and `make-brush'.

Adding `make-pen' and `make-color' creates many conflicts among
teaching libraries, such as `2htdp/image'. These are easy to fix
up in the tree, but adding such obvious names to `racket/draw'
may create other compatibility problems, so we might have to reconsider
the names.

In consultation with Asumu.
2012-05-01 21:04:40 -06:00
Asumu Takikawa
8db45eb557 Add immutable constructors for color%, brush%, pen%
- Make set-immutable a local method and document
    is-immutable? as a public method
  - Add some racket/draw tests
2012-05-01 21:20:52 -04:00
Matthew Flatt
54a6ba8d36 racket/sandbox: change syntax-object wrappers generated for locations
Generate wrappers consistent with a reader-level absence of `.'s,
instead of wrapping every pair. This change fixes the `syntax-e'
example in the Guide's description of syntax objects.
2012-05-01 16:48:15 -06:00
Matthew Flatt
4ac4e2e8d6 fix a problem with the "self" module path index
This bug was introduced recently by changes to support submodules.

Closes PR 12744 (and Robby had reported it earlier)
2012-04-30 23:37:20 -06:00
Robby Findler
4694a9874f added line numbers to the syncheck test cases (and removed bogus comment) 2012-04-30 14:39:27 -05:00
Matthew Flatt
eee60c7d47 fix a test suite to work on its own 2012-04-30 06:55:20 -06:00
Robby Findler
b66f716374 adjust the unit contract tests for the new contract error messages 2012-04-29 21:45:07 -05:00
Asumu Takikawa
cd67536738 class/c: allow local method names
Prior to this change, a method/field name defined with
define-local-method-name was not contractable.
2012-04-27 13:00:48 -04:00
Matthew Flatt
393e8b90b2 fix sorting bug in bytecode submodule table 2012-04-26 21:45:00 -06:00
Asumu Takikawa
841b190ef7 Fix local member info leak due to opaque class/c
Prior to this change, the use of opaque class contracts
could reveal the printed names of local members names
in a class.
2012-04-26 14:45:50 -04:00