Commit Graph

298 Commits

Author SHA1 Message Date
Vincent St-Amour
ad0f94c054 Additional test case from Robby. 2016-01-18 22:23:08 -06:00
Vincent St-Amour
4fd60fed11 Instrument id table contracts. 2016-01-18 22:23:07 -06:00
Vincent St-Amour
d5ae7125e5 Add instrumentation to sequence/c. 2016-01-18 22:23:07 -06:00
Vincent St-Amour
451ef1d37e Add instrumentation for tail-marks-match?. 2016-01-18 22:23:07 -06:00
Vincent St-Amour
b8af007d94 Instrument stream/c. 2016-01-18 22:23:07 -06:00
Vincent St-Amour
74c423bb24 Add instrumentation to set/c. 2016-01-18 22:23:06 -06:00
Vincent St-Amour
a48b559324 Instrument async-channel/c. 2016-01-18 22:23:06 -06:00
Vincent St-Amour
c726cf6ffc More instrumentation tests. 2016-01-18 22:23:06 -06:00
Vincent St-Amour
2f6f403ce8 Fix and improve ->i instrumentation. 2016-01-18 22:23:06 -06:00
Vincent St-Amour
d0c48de685 Add instrumentation to struct property contracts. 2016-01-18 22:23:06 -06:00
Vincent St-Amour
1661eeda18 Front-load some work in struct/dc instrumentation. 2016-01-18 22:23:05 -06:00
Vincent St-Amour
b00d7782ca Instrumentation for parametric->/c. 2016-01-18 22:23:05 -06:00
Vincent St-Amour
143267f1e9 Remove now-redundant instrumentation of vector contracts.
Now covered by instrumentation at contract entry points.
2016-01-18 22:23:05 -06:00
Vincent St-Amour
1277f0347a Instrumentation for object-contract. 2016-01-18 22:23:05 -06:00
Vincent St-Amour
e5738b8ee6 Add missing instrumentation to misc.rkt. 2016-01-18 22:23:04 -06:00
Vincent St-Amour
72418fba03 Instrument higher-order hash/c. 2016-01-18 22:23:04 -06:00
Vincent St-Amour
d34cd06b90 Tests for instrumentation of contract entry points. 2016-01-18 22:23:04 -06:00
Vincent St-Amour
f3f5d9212a Instrumentation at use site for provide/contract and flat contracts. 2016-01-18 22:23:04 -06:00
Vincent St-Amour
ecce6e1b85 Fix test names. 2016-01-18 22:23:03 -06:00
Vincent St-Amour
9b7724167a Add instrumentation for box contracts. 2016-01-18 22:23:03 -06:00
Sam Tobin-Hochstadt
e133d87765 Handle rename transformers better in match expanders.
Closes PR 15223.

Merge to 6.4.
2016-01-17 10:48:07 -05:00
Robby Findler
738529c7de fix a bug introduced in 35ce47d97 2016-01-16 12:37:58 -06:00
Robby Findler
e3abc6f5c7 add a tail test 2016-01-16 00:02:20 -06:00
Robby Findler
393d72f153 add test case that makes sure we preserve chaperone-of for contract-out functions 2016-01-07 22:14:05 -06:00
Robby Findler
3e53a3ea42 make impersonator vector contracts use impersonate-vector, not chaperone-vector
closes #1198
2016-01-07 12:59:21 -06:00
Robby Findler
c24ddb4a7c improve the way plus-one arity functions fall back when they can't see the application site
In particular, instead of going directly back to the chaperone, handle
the case where the function doesn't accept keyword arguments with a
less expensive fallback.

The less expensive fallback uses a case-lambda wrapper (wrapped inside
a make-keyword-procedure) to close over the neg-party and avoid the
chaperone creation. With this commit, the program below gets about 3x
faster, and is only about 20% slower than the version that replaces
the "(let ([f f]) ...)" with its body

  #lang racket/base
  (module m racket/base
    (require racket/contract/base)
    (provide (contract-out [f (-> integer? integer?)]))
    (define (f x) x))
  (require 'm)
  (collect-garbage)
  (time (for ([x (in-range 5000000)]) (let ([f f]) (f 1))))

  Thanks, @samth!
2016-01-07 12:59:21 -06:00
Robby Findler
d04dfb67df remove stray printf 2016-01-07 12:59:20 -06:00
Matthew Flatt
fe1ffbe36f fix a test for the default package catalog 2016-01-06 13:17:44 -07:00
Robby Findler
31a9414983 move contract tests into contract subdirectory
and fix up the code that orders the tests when running them all
2016-01-05 09:41:47 -06:00
Robby Findler
14b951cf44 improve the performance of the way contract-stronger? recurs
and fix evt/c's contract-stronger
2016-01-04 19:56:45 -06:00
Robby Findler
1c431e6f4d Clean up chaperone-hash-set and impersonate-hash-set and adjust set/c to match
Made the hash-set chaperones essentially forward the hash chaperone
operations, but now explain them all in terms of set-based operations
in the docs.

Also adjusted value-blame and has-blame? to support late-neg projections
2016-01-03 20:43:24 -06:00
Robby Findler
77a76a7953 fix opt/c for the new way (-> any/c ... any) works
should have been a part of 36b3493e
2016-01-03 20:43:24 -06:00
Robby Findler
36b3493e45 Change contracts of the form (-> any/c ... any) to not be flat contracts
The issue is what happens when the actual function has other arities.
For example, if the function were (λ (x [y 1]) y) then it is not okay
to simply check if procedure-arity-includes? of 1 is true (what the
code used to do) because then when the function is applied to 2
arguments, the call won't fail like it should. It is possible to check
and reject functions that don't have exactly the right arity, but if
the contract were (-> string? any), then the function would have been
allowed and only when the extra argument is supplied would the error
occur. So, this commit makes it so that (-> any/c any) is like
(-> string? any), but with the optimization that if the procedure
accepts only one argument, then no wrapper is created.

This is a backwards incompatible change because it used to be the
case that (flat-contract? (-> any)) returned #t and it now returns #f.
2016-01-02 17:29:58 -06:00
Robby Findler
2529e63b74 make stronger recognize any/c on the right as stronger than any flat contracts 2016-01-01 19:49:38 -06:00
Robby Findler
b24882fd18 implement the (-> any/c ... any) special case for the new -> contract combinator
(new is being used in a relative sense here; it is the newer of the
two -> combinators; the old one is used currently only for ->m)
2016-01-01 19:49:38 -06:00
Matthew Flatt
c0915b02b0 pathlist-closure, tar, and tar-gzip: add #:path-filter
Also, add `#:skip-filtered-directory?` to `find-files`.

Less significantly, adjust `pathlist-closure` to be consistent in the
way that it includes a separator at the end of a directory path.
2016-01-01 13:52:37 -07:00
Robby Findler
46ace3172f clean up interaction between strict set/c contracts and mutable sets 2015-12-29 20:28:22 -06:00
Sam Tobin-Hochstadt
893bb56762 Rename to make it clear what to run. 2015-12-29 16:01:22 -05:00
Robby Findler
b3d05de304 improvements to set/c
- use chaperone-hash-set for set/c when the contract allows only hash-sets

- add a #:lazy flag to allow explicit choice of when to use laziness
  (but have a backwards-compatible default that, roughly, eschews laziness
   only when the resulting contract would be flat)
2015-12-27 22:56:04 -06:00
Robby Findler
d927d04efd generalize tail contract checking for function contracts
Specifically, remove reliance on procedure-closure-contents-eq? to
tell when a pending check is stronger in favor of usint
contract-stronger?

Also, tighten up the specification of contract-stronger? to require
that any contract is stronger than itself

With this commit, this program gets about 10% slower:

  #lang racket/base
  (require racket/contract/base)
  (define f
    (contract
     (-> any/c integer?)
     (λ (x) (if (zero? x)
                0
                (f (- x 1))))
     'pos 'neg))
  (time (f 2000000))

becuase the checking is doing work more explicitly now but because the
checking in more general, it identifies the redundant checking in this
program

  #lang racket/base
  (require racket/contract/base)
  (define f
    (contract
     (-> any/c integer?)
     (contract
      (-> any/c integer?)
      (λ (x) (if (zero? x)
                 0
                 (f (- x 1))))
      'pos 'neg)
     'pos 'neg))
  (time (f 200000))

which makes it run about 13x faster than it did before

I'm not sure if this is a win overall, since the checking can be more
significant in the case of "near misses". For example, with this
program, where neither the new nor the old checking detects the
redundancy is about 40% slower after this commit than it was before:

  #lang racket/base
  (require racket/contract/base)
  (define f
    (contract
     (-> any/c (<=/c 0))
     (contract
      (-> any/c (>=/c 0))
      (λ (x) (if (zero? x)
                 0
                 (f (- x 1))))
      'pos 'neg)
     'pos 'neg))

  (time (f 50000))

(The redundancy isn't detected here because the contract system only
looks at the first pending contract check.)

Overall, despite the fact that it slows down some programs and speeds
up others, my main thought is that it is worth doing because it
eliminates a (painful) reliance on procedure-closure-contents-eq? that
inhibits other approaches to optimizing these contracts we might try.
2015-12-25 22:58:56 -06:00
Robby Findler
8a9408306b have a better strategy for or/c to determine which clause to commit to
in particular, when there is a recursive contract, then we check only
some part of the first-order checks and see if that was enough to
distinguish the branches. if it was, we don't continue and otherwise we do
2015-12-22 16:02:44 -06:00
Robby Findler
3a4ba9a1ca fix parametric->/c for the keyword case 2015-12-21 10:32:08 -06:00
Robby Findler
261a5cb1f4 port rename-contract to late-neg projection and add some tests 2015-12-21 09:32:14 -06:00
Robby Findler
e4ffa6c97c port if/c to late-neg, add tests, and fix some (minor) bugs 2015-12-21 09:20:45 -06:00
Robby Findler
3ed5eef44d put a little more info into the test case failure messages 2015-12-19 22:17:57 -06:00
Robby Findler
8e2179a6eb port struct-type-property/c to late-neg and add some tests for it 2015-12-19 11:41:37 -06:00
Robby Findler
506c9be0cd add the ability to make chaperone contracts to ->i 2015-12-18 20:41:51 -06:00
Vincent St-Amour
3dc49139cf Fix more missing parties in contract instrumentation. 2015-12-15 14:31:38 -06:00
Vincent St-Amour
b84233bca7 Tests for struct/dc instrumentation. 2015-12-14 16:30:30 -06:00
Vincent St-Amour
bf1ba809ae Test that contract profiler instrumentation always has complete blame info. 2015-12-14 13:27:08 -06:00
Matthew Flatt
39c2a08d31 make tests/zo-path inspect all installation-scope packages 2015-12-11 19:27:57 -07:00
Sam Tobin-Hochstadt
acbcff1bf4 Make zo-path checking available as a library. 2015-12-11 10:16:21 -05:00
Robby Findler
4aabe505be fix missing party and indy blame interaction
(also add all of the fields to the equal and hashing
functions)
2015-12-10 18:37:50 -06:00
Matthew Flatt
70ee04d257 fix zo-path test to check installed packages 2015-12-09 21:06:55 -07:00
Robby Findler
3d7d906cc1 tweak and clean up the contract combinators api
- uniformly remove the extra layers of calls to unknown functions for
  chapereone-of?  checks that make sure that chaperone contracts are
  well-behaved (put those checks only in contracts that are created
  outside racket/contract)

- clean up and simplify how missing projection functions are created
  (val-first vs late-neg vs the regular ones)

- add some logging to more accurately tell when late-neg projections
  aren't being used

- port the contract combinator that ->m uses to use late-neg

- port the </c combinator to use late-neg
2015-12-09 21:55:58 -06:00
Vincent St-Amour
5353dd1076 free-vars: add mode that also reports module-bound variables
As a separate mode, for backwards compatibility.
2015-12-07 10:42:12 -06:00
Sam Tobin-Hochstadt
a0c09c19ac Add test for 21316e3ebf. 2015-12-06 12:22:37 -05:00
Sam Tobin-Hochstadt
35fffb09d0 Finally fix the concurrency in this test.
The bug was an induced failure in the http server, to test retry
support, triggered another run of half of the synchronization
protocol, leading to a stuck state.
2015-11-24 17:20:53 -05:00
Matthew Flatt
6099a70c52 fix relative-path discovery for case-normalized paths 2015-11-16 12:55:19 -07:00
Sam Tobin-Hochstadt
04c0c59d27 Yet another try at ensuring that this concurrency works. 2015-11-10 16:07:09 -05:00
Robby Findler
3d31d86bf5 fix (-> any/c boolean?) for the case of an impersonated struct predicate
closes #1129
2015-11-10 09:00:17 -06:00
Robby Findler
71690384a4 add first-or/c 2015-11-07 19:55:20 -06:00
Sam Tobin-Hochstadt
171e4fba41 Use a semaphore instead of sleeping in this test. 2015-11-06 14:25:41 -05:00
Sam Tobin-Hochstadt
f126fd2356 Revert "change or/c so that it takes the first ho projection"
This reverts commit 5a33856802.

Merge to 6.3.
2015-11-06 14:25:41 -05:00
Sam Tobin-Hochstadt
ef6a5c2e75 Add test case for match ordering bug. 2015-10-29 19:33:15 -04:00
Robby Findler
aa46d1bc10 fix predicate/c bugs 2015-10-29 13:33:28 -05:00
Robby Findler
3f20803679 implement predicate/c for the more complex arrow contract protocol
So now (-> any/c integer?) will avoid the chaperone wrapper when the
function is a struct predicate while simultaneously supporting the
"extra argument neg party" protocol
2015-10-28 20:54:00 -05:00
Jay McCarthy
2396542cda better locking test 2015-10-28 11:32:47 -04:00
Vincent St-Amour
95c80cf21f Fix test phase.
Suggested by Matthew in the PR discussion.
2015-10-24 20:33:03 -05:00
Vincent St-Amour
bf69920570 Move racket/require tests. 2015-10-24 18:31:17 -05:00
Alex Knauth
67e3899272 Allow separate read and write contracts for box/c 2015-10-24 14:16:49 -05:00
Matthew Flatt
3eb2c20ad0 avoid excessive memory use in or expansion
When `or` has many subexpressions, the expansion generates a
sequence of deeply nested `let`s, where original and macro-introduced
forms are interleaved in a way that defeats a minimal
child-is-same-as-parent sharing of scope sets. Add a small
cache that's good enough to capture extra sharing and
dramatically lower memory use for an `or` that has 1000
subexpressions.
2015-10-23 16:32:22 -06:00
AlexKnauth
2acb10a5da syntax/parse: add test for non-tilde pattern expander 2015-10-16 18:03:40 -04:00
Sam Tobin-Hochstadt
03bf7d3def Remove added printf. 2015-10-14 15:29:27 -04:00
Sam Tobin-Hochstadt
297fb75009 Support -q flag for individual pkg tests. 2015-10-14 09:39:38 -04:00
Sam Tobin-Hochstadt
a3142ac257 Increase sleep time to avoid races on loaded test machines.
Hopefully alleviates DrDr & Travis failures.
2015-10-14 09:38:56 -04:00
Sam Tobin-Hochstadt
f63188b4ea Refactoring. 2015-10-13 17:49:18 -04:00
Sam Tobin-Hochstadt
e53492a68f Support environment variable for setting global seed. 2015-10-13 17:49:18 -04:00
Sam Tobin-Hochstadt
de27223635 Add a quiet mode to the pkg tests. 2015-10-08 17:38:59 -04:00
Matthew Flatt
a5f6bf34dc raco pkg: refine handling of HTTP status codes
Treat only 404 and 410 as "not found" errors, retry on 5xx
errors, and treat anything else as an error insteda of "not found".
2015-10-06 17:47:46 -06:00
Sam Tobin-Hochstadt
dfef5b43fc Add --write option to fuzzer. 2015-09-23 15:49:18 -04:00
Robby Findler
5a33856802 change or/c so that it takes the first ho projection
whose first-order predicate accepts a value, instead
of requiring that there be exactly one
2015-09-22 09:05:34 -05:00
Vincent St-Amour
9c123172fa Move srfi-related tests to srfi-test. 2015-09-16 13:53:52 -05:00
Vincent St-Amour
17b96cc5a1 Remove unused import. 2015-09-16 13:24:32 -05:00
Konrad Hinsen
a47800686c Fix match with (list-no-order p ..k) patterns
p ..k matches exactly k repetitions of p, but its documented
behavior is to match "k or more" repetitions. This fix implements
the documented behavior.

Fixes bug number 15122.
2015-09-11 21:34:02 -04:00
Matthew Flatt
0d3b5b61f0 untar, untgz, and unzip: add #:permissive?
Also, strengthen the checking that `#:permissive?` (off by default)
performs for `untar` and `untgz` to disallow a link whose target is an
absolute path or has an up-directory element.
2015-09-11 16:53:31 -06:00
Matthew Flatt
c15d2f71d4 file/untar: fix handling of a broken tar file
Closes #1049
2015-09-11 16:53:31 -06:00
Matthew Flatt
696c9d972f prohibit directory indicators in "git:....?path=" as a package source
Closes #1027
2015-09-11 16:53:30 -06:00
Asumu Takikawa
52aa11c407 Propagate object inspectors in class/c wrappers
This makes reflection work on an instance of a contracted
class in the same way that it does on the original class.
2015-09-11 15:11:18 -04:00
Ryan Culpepper
8d9eb05347 syntax/parse: accept #:context (list symbol/#f syntax)
The symbol is used as the "who" field in the error message.

Also fix lazy-require of runtime-report.rkt in residual.rkt; don't
load until syntax-parse actually needs to produce an error report.
(Previously was loaded to create handler whenever syntax-parse code ran.)
2015-09-10 21:49:21 -04:00
Matthew Flatt
98b819edd4 enable some tests
Some tests that rely on a `main` submodule for places
need a `test` submodule, too.
2015-09-08 07:39:48 -06:00
Daniel Feltey
4fefec6386 Add test case
Closes PR 15139
2015-09-01 11:46:40 -05:00
Matthew Flatt
f09c78b5f4 racket/unit: fix #:omit-constructor
Closes #1006, with a test case based on that report.
2015-08-31 16:22:12 -06:00
Matthew Flatt
b016246096 avoid interferences among places for memory accounting
All places uses the same accounting bit for objects
that are in the shared space. Each place also flips
the bit value it wants on each accounting, so if two
places are accounting at the same time with opposite
bit values and can reach the same objects, they can
interefere. It's even possible for them to race
through cycles and cause each other to loop forever.

Add a lock to ensure that there's only one bit value
in play for the shared space at any given time. A
place must stall if other places are busy with memory
accounting and an opposite bit value.
2015-08-28 17:05:37 -06:00
Matthew Flatt
a9078196b7 fix GC problem with in-flight place messages
While a place message is received by a thread but not yet
deserialized, if the message contains references to objects in the
shared space, and if a "master" GC happens (which crosses all places),
make sure that the references in the still-serialized message are
traversed.
2015-08-28 17:05:37 -06:00
Robby Findler
0c31a0c0b8 add some missing contract profiler wcm expressions and start a test suite for them 2015-08-22 20:22:00 -05:00
Robby Findler
725536b8b4 add missing contract checking 2015-08-20 15:41:29 -05:00
Sam Tobin-Hochstadt
0ba2d30fed Increse place-channel test timeout. 2015-08-20 14:12:56 -04:00
Sam Tobin-Hochstadt
d63d3e603e Increase timeout. 2015-08-19 19:13:41 -04:00
Sam Tobin-Hochstadt
dfd2c6dc68 Hide output to work around racket/rackunit#5. 2015-08-16 18:55:36 -04:00
Matthew Flatt
c57fb2d1ce fix setup/collection-search test 2015-08-13 18:20:24 -06:00
Matthew Flatt
7d6bec2b17 increase timeout for "determistic-zo.rkt" test 2015-08-13 11:51:23 -06:00
Matthew Flatt
86ee9c5071 signature-members: adjust element ids based on reference
Make the resulting content ids compatible with binding and reference
at a use site, as needed for the new macro expander.
2015-08-13 10:44:26 -06:00
Daniel Feltey
b16f0b24b7 Improvements to unit/c contracts in preparation for unit support in typed/racket
Changes:

 - Allow unit contracts to import and export the same signature.
 - Add "invoke" contracts that will wrap the result of invoking a unit contract,
   no wrapping occurs when a body contract is not specified
 - Improve error messages
 - Support for init-depend clauses in unit contracts.
 - Fix documentation to refelct the above
 - Overhaul of unit related tests

Handling init-depend clauses in unit contracts is a rather large and somewhat
non-backwards-compatible change to unit contracts. Unit contracts must now
specify at least as many initialization dependencies as the unit value being
contracted, but may include more. These new dependencies are now actually
specified in the unit wrapper so that they will be checked by compound-unit
expressions.

This commit also adds more information to the first-order-check
error messages. If a unit imports tagged signatures, previously the errror
message did not specify which tag was missing from the unit contract. Now
the tag is printed along with the signature name.

Documentation has been edited to reflect the changes to unit/c contracts
made by this commit.

Additionally this commit overhauls all tests for units and unit contracts.
Test cases now actually check that expected error messages are triggered when
checking contract, syntax, and runtime errors. Test forms now expand into uses
of rackunit's check-exn form so only test failures are reported and all tests in
a file are run on every run of the test file.
2015-08-11 16:30:39 -05:00
Vincent St-Amour
e9e7e42b64 Fix generics tests for hashing change. 2015-08-09 10:50:50 -05:00
Matthew Flatt
2661d46929 toward deterministic bytecode generation
Progress toward making the bytecode compiler deterministic, so that a
fresh `make base` always produces exactly the same bytecode from the
same sources. Most changes involve avoiding hash-table order
dependencies and adjusting scope identity. The namespace used to load
a reader extension is also better defined. Plus many other little
changes.

The identity of a scope that is unmarshaled from a bytecode file now
incorporates the hash of the file, and the relative order of scopes is
preserved in a bytecode file. This combination allows compilation to
start with modules that loaded and compiled in different orders
(including delayed loading of bytecode fragments within one file).

Formerly, a reader extension triggered by `#lang` or `#reader` was
loaded in whatever namespace happens to be current. That's
unpredictable and can pollute a module build at the level of bytecode.
To help make builds deterministic, reader extensions are now loaded in
a root namespace of the current namespace.

Deterministic compilation in general relies on deterministic macros.
The two most common ways for a macro to be non-deterministic are by
using `gensym` (use `generate-temporaries`, instead) and by using an
unsorted hash-table traversal (don't do that).

At this point, bytecode generation is unlikely to be completely
deterministic, since I uncovered non-determinism mostly by iterating
attempts over the base collections. For now, the intent is not to
provide guarantees outside of the compilation of the base collections
--- but "more deterministic" is likely to be useful in the short run,
and we can improve further in the long run.
2015-08-07 15:48:39 -06:00
Vincent St-Amour
fd82eed31c Add tests for syntax/transformer. 2015-08-05 13:11:55 -05:00
Vincent St-Amour
b4b0837a77 Move syntax-source-* tests from unstable-test. 2015-08-05 13:11:55 -05:00
Vincent St-Amour
442db8d523 Move syntax/macro-testing tests from unstable-test. 2015-08-05 13:11:54 -05:00
Vincent St-Amour
21c44635f6 Move unstable/macro-testing to syntax/macro-testing. 2015-08-05 13:11:54 -05:00
Matthew Flatt
51747e86c5 fix raco pkg conflict checking
When a module is currently installed as bytecode, but without
corresponding source and without a "info.rkt" specification that
bytecode should be preserved without source, then `raco pkg` should
not count that module bytecode as a conflict (since `raco setup`
will remove it).
2015-07-30 14:12:05 -06:00
Matthew Flatt
3dc1dc80e3 add setup/collection-search 2015-07-30 14:12:04 -06:00
Matthew Flatt
087eeb60ec remove racket/package tests
Moved to the "compatibility-test" package.
2015-07-21 13:10:42 -06:00
Matthew Flatt
444518b344 racket/unit: fix problem with contracts
Part of the expansion to handle contracts confused internal and
external names of signature elements. The new macro expander is less
tolerant of the mistake.
2015-07-21 10:19:40 -06:00
Vincent St-Amour
0e6baea9f6 Move contents of unstable/function to racket/function.
Split implementation of racket/function to avoid circular dependencies.
2015-07-20 16:00:52 -05:00
Matthew Flatt
3d87d61039 fix expansion loop in a definition context
Add the current definition context's scope to any expression that is
produced by macro expansion before trying to expand again, in case the
expansion needs to refer to a definition introduced by a previous
expansion.

Previously, the scope was added before any expansion and after any
expansion, but that misses intermediate points.

The old expander had this bug, too (some of the new tests fail there),
but it showed up less often and was sometimes considered correct, for
various reasons.
2015-07-20 13:20:03 -06:00
Matthew Flatt
54cf4c7f16 racket/generics: fix generated <gen>/c
The revised implementation of `define-generics` for the new macro
expander wasn't right, because the macro attached to `<gen>/c` for a
given `<gen>` used a macro-introduced reference to the generic to
match up method names with the generic's methods.
2015-07-20 06:39:18 -06:00
Matthew Flatt
fc5e32e526 switch to set-of-scopes expander
The development history for set-of-scopes is preserved in a "scope"
branch in the main Racket repository, which is commit
 ae88c96f50
2015-07-16 14:20:00 -06:00
Matthew Flatt
138e16e80f fix clone-linked package update on evolving to a multi-package repo
When a package "p" is clone-linked and the repo for "p" changes to be
a multi-package repository (e.g., with "p-lib", "p-doc", and "p"), a
`raco update` would get confused. Unofrtunately, a plain `raco pkg
update p` can't work in that case, because the clone link would still
be a pathless repo URL; the repairs make `raco pkg update --lookup
--clone ..../p` work as is should.

Related: fix inference of package names in the early check for whether
a package is installed.
2015-06-29 17:33:27 -06:00
AlexKnauth
cb3f296678 support this-syntax in syntax-parse, syntax-parser, etc.
closes PR 14855
2015-06-22 15:40:44 -04:00
Sam Tobin-Hochstadt
fc6ead4ac2 Improve match compilation of ? and fix bugs.
- Coalesce repeated use of the same predicate.
- Fix scoring of Exact patterns, and scoring generally.
- Use `OrderedAnd` where needed.
- Guarantee that `and` patterns match in order.
- Thread bound variable information properly in GSeq compilation.
- Warn when variables are used non-linearly with `...`
  (making this behave properly was not backwards compatible).

Closes #952, which now runs in <1ms and make it a test case.

Also add margin note about `?` patterns and multiple calls.
2015-06-05 18:08:33 -04:00
Alexis King
391a672bf6 Fix the first order check on async-channel/c 2015-06-03 12:19:28 -05:00
Robby Findler
53f03d73f4 add more accurate timeouts 2015-05-27 09:35:05 -05:00
AlexKnauth
2b0ba444c0 and/c: use projections more on flat-contract arguments 2015-05-26 20:39:41 -05:00
Matthew Flatt
aaa289c7b6 tests and repairs for early checks
Also, avoid "early" checks when recurring, just in case.
2015-05-16 17:15:22 -06:00
Edward Lee
46030642fa bytes->jsexpr: toss exn:fail:contract? when given invalid UTF-8 2015-05-12 12:45:10 -06:00
Robby Findler
24b91852da "broke its contract" => "broke its own contract" 2015-05-12 06:45:52 -05:00
Robby Findler
7fb67ad644 improve error messages from contract system
closes PR 15057
2015-05-09 11:59:53 -05:00
Robby Findler
bd5723c51c add support for random generation and contract stronger to char-in 2015-05-08 16:55:27 -05:00
Alexis King
aa4c57bf9a Add a char-in flat contract 2015-05-08 16:36:33 -05:00
Eric Dobson
4e3a7c420a Make parallel-build send the whole filename to the worker.
Closes PR 15000.
2015-05-01 16:07:02 -06:00
Eric Dobson
06634b74d5 Make file-list-queue% use new error format.
Closes PR 15013.
2015-05-01 16:07:02 -06:00
Stephen Chang
dcf73f6bca compute generic method default error msg in define-generic-method
- fixes generic test failures due to computing this info
2015-04-30 16:45:35 -04:00
Stephen Chang
56cf724d12 improve generic method default error msg:
- report position of bad self arg
- report and label other args, including kw, optional, rest, if present

merge of github pull-request #821
2015-04-30 12:37:09 -04:00
Robby Findler
7e089f3d7f make sequence/c preserve streamness 2015-04-07 11:52:18 -05:00
Alexis King
30610babe3 Make sequence/c first-order check more specific
closes PR 14983
2015-03-05 07:36:38 -06:00
Asumu Takikawa
ab68a4dc38 Add option to ignore local names in opaque class/c 2015-03-04 11:54:56 -05:00
Asumu Takikawa
0fce958268 Reduce space usage for object/c like instanceof/c
Reuse the instanceof/c projection for object/c to get
the space saving higher-order wrapping behavior. Also
implement a stronger check for object/c.
2015-03-04 11:54:56 -05:00
Robby Findler
efee5c4581 move sequence/c into racket/sequence 2015-03-02 22:14:32 -06:00
Asumu Takikawa
f43096b123 Export an alternative object/c constructor
This functional constructor allows runtime construction
of object contracts in extension libraries.
2015-02-24 17:18:40 -05:00
Ryan Culpepper
80e4894597 fix mandatory-after-optional checking
Also fix tests for attribute change.
2015-02-22 21:51:49 -05:00
Leif Andersen
551704ed4a Added tests for function-header. 2015-02-22 21:51:48 -05:00
Matthew Flatt
d69af6af30 add property support to chaperone-generic, etc. 2015-02-19 09:56:50 -07:00
Matthew Flatt
e913a13614 contract test suite: fix exit status on failure 2015-02-19 08:35:25 -07:00
Matthew Flatt
b37eab0621 raco pkg update: add --skip-uninstalled flag 2015-02-17 15:43:15 -07:00
Matthew Flatt
8aa16faa6d raco pkg {install,update}: add --pull option 2015-02-17 13:05:20 -07:00
Alexis King
714b7684fe Add stream/c contract for adding contracts on stream contents 2015-02-13 20:14:03 -06:00
Matthew Flatt
fa00d01b6f fix SRFI-14 tests for Unicode 7.0 2015-02-12 10:14:52 -07:00
Sam Tobin-Hochstadt
d3b018b7cb Re-do projections for struct fields in chaperone handlers.
If the selector is itself a chaperone, then doing the access once
will mean that the saved result is not `chaperone-of?` the result
of doing the access a second time, at least in some cases (such as
when the accessor uses vector contracts).

Thanks to Neil T for initial spotting, and to Robby for actually
finding the bug and suggesting the fix.
2015-02-12 09:50:57 -05:00
Matthew Flatt
be8f70fffb racket/unit: static checking of initialization dependencies
When using `compound-unit/infer` and similar, check the `link` clause
against each unit's static information for initialization dependencies.
Also, propagate dependency information in `define-compount-unit`.
2015-02-06 09:22:01 +01:00