The Racket repository
Go to file
Alexis King 6632beeca9 Fix wrap-expr/c and expr/c to reflect the intended use
The expr/c syntax class, as well as its underlying implementation
function, wrap-expr/c, previously produced misleading error messages.
The main purpose of these tools is to ensure a user-provided expression
conforms to a macro-provided contract. However, contract errors produced
by these forms were consistent with situations where both value and
contract were provided by the same party.

This fixes the discrepancy by changing how these forms assign blame to
emulate contract errors that arise from improper function arguments,
since most expressions provided to macros are semantically similar to
function arguments. All examples within the documentation itself
reflect this use case.

These changes alter the contents of error messages raised by expr/c and
wrap-expr/c, which could theoretically break some test suites, but it’s
extremely unlikely that any non-test code would depend on the precise
wording of contract error messages, and the interface is otherwise
completely backwards-compatible.

fixes #1412
2017-02-08 11:04:04 -05:00
pkgs JIT: fix handling of index argument to bytes-set! 2017-02-08 07:52:52 -07:00
racket Fix wrap-expr/c and expr/c to reflect the intended use 2017-02-08 11:04:04 -05:00
.gitattributes
.gitignore Add *.orig, *.rej and *.core files to gitignore. 2015-11-06 10:25:13 -06:00
.mailmap mailmap updates & fixes. 2013-04-03 18:10:22 -04:00
.travis.yml Run all stxparse tests as part of the Travis and AppVeyor builds 2017-01-23 20:32:40 -05:00
appveyor.yml Run all stxparse tests as part of the Travis and AppVeyor builds 2017-01-23 20:32:40 -05:00
INSTALL.txt "Mac OS X" -> "Mac OS" 2016-12-23 12:18:36 -07:00
Makefile "Mac OS X" -> "Mac OS" 2016-12-23 12:18:36 -07:00
README.md update copyright year to 2017 2017-01-02 06:42:31 -07:00

Linux/Mac Build
Status Windows build status

This is the source code for the core of Racket. See "INSTALL.txt" for full information on building Racket.

To build the full Racket distribution from this repository, run make in the top-level directory. To build the Minimal Racket, run make base.

The rest of the Racket distribution source code is in other repositories under the Racket GitHub organization.

Contribute to Racket by submitting a pull request, joining the development mailing list, or visiting the IRC channel.

License

Racket Copyright (c) 2010-2017 PLT Design Inc.

Racket is distributed under the GNU Lesser General Public License (LGPL). This implies that you may link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular states that you must release the source code for the modified software.

See racket/src/COPYING_LESSER.txt for more information.