![]() This makes two changes to the forms in racket/splicing to adjust how syntax properties are propagated through expansion: 1. Uses of make-syntax-introducer are passed #t as the first argument, which causes the introduced scope to be consider a use-site rather than macro-introduction scope. This prevents syntax objects from being unnecessarily marked as unoriginal, in the syntax-original? sense. 2. Uses of syntax/loc have been adjusted to copy syntax properties from original syntax objects, which were previously discared. Forms that were spliced into the surrounding context, such as begin, define-values, and define-syntaxes, recreated the top-level syntax objects, which did not preserve syntax properties from the originals. This is not a perfect solution, mostly because it potentially elides properties that may be associated with captured literals (that is, properties attached directly to begin, define-values, or define-syntaxes identifiers themselves). However, it seems to accommodate most of the common use-cases: propagation of syntax-original?-ness and forms like `struct`, which attach properties like 'sub-range-binders. fixes #1410 |
||
---|---|---|
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
appveyor.yml | ||
INSTALL.txt | ||
Makefile | ||
README.md |
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-2016 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.